Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Como escolher o melhor modelo de incorporação para seu aplicativo LLM

Apoorva Joshi16 min read • Published Aug 30, 2024 • Updated Nov 07, 2024
IAPythonAtlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Se você estiver criando aplicativos de AI generativa (GenAI) em 2024, provavelmente já ouviu o termo "embeddings" algumas vezes e está vendo novos modelos de incorporação chegarem à loja toda semana. 1950 E se as incorporações são tão importantes e você deve usá-las, como escolher entre o grande número de opções para incorporar modelos por exemplo?
Este tutorial abordará o seguinte:
  • O que é uma incorporação?
  • Importância das incorporações em aplicativos RAG
  • Como escolher o melhor modelo de incorporação para seu aplicativo RAG
  • Avaliando modelos de incorporação
Este tutorial é a parte 1 de uma série de várias partes sobre geração de aumento de recuperação (RAG), onde começando com os fundamentos da criação de um aplicativo RAG, e trabalhando nosso caminho para técnicas mais avançadas de RAG. A série abordará o seguinte:

O que é um modelo de incorporação e incorporação?

Uma incorporação é uma array de números (um vetor) que representa uma informação, como texto, imagens, áudio, vídeo etc. Juntos, esses números capturam a semântica e outras características importantes dos dados. A consequência imediata de fazer isso é que entidades semanticamente semelhantes mapeiam próximas umas das outras, enquanto entidades diferentes mapeiam mais distantes no espaço vetorial. Para maior clareza, veja a imagem abaixo para uma representação de um espaço vetorial de alta dimensão:
Representação 2D de um espaço vetorial multidimensional
No contexto do processamento de linguagem natural (PLN), os modelos de incorporação são algoritmos projetados para aprender e gerar incorporações para uma determinada informação. Nos aplicativos de AI atuais, as incorporações geralmente são criadas usando grandes modelos de linguagem (LLMs) que são treinados em um enorme corpus de dados e usam algoritmos de ponta para aprender relações semânticas complexas nos dados.

O que é RAG (brevemente)?

A geração aumentada por recuperação, como o nome sugere, tem como objetivo melhorar a qualidade da geração de LLM pré-treinada usando dados recuperados de uma base de conhecimento. O sucesso do RAG está em recuperar os resultados mais relevantes da base de conhecimento. É aqui que as incorporações entram em ação. Um pipeline RAG se parece com o seguinte:
Fluxo de trabalho RAG
No pipeline acima, vemos uma abordagem comum usada para recuperação em aplicativos GenAI — ou seja, pesquisa semântica. Nessa técnica, um modelo de incorporação é usado para criar representações vetoriais da query do usuário e das informações na base de conhecimento. Dessa forma, dada uma query do usuário e sua incorporação, podemos recuperar os documentos de origem mais relevantes da base de conhecimento com base na semelhança de suas incorporações com a incorporação da query. Os documentos recuperados, a query do usuário e quaisquer prompts do usuário são então passados como contexto para um LLM, para gerar uma resposta para a pergunta do usuário.

Escolhendo o melhor modelo de incorporação para seu aplicativo RAG

Como vimos acima, as incorporações são centrais para o RAG. Mas, com tantos modelos de incorporação disponíveis, como escolhemos o melhor para o nosso caso de uso?
Um bom lugar para começar ao procurar os melhores modelos de incorporação para usar é o Placar declassificação MTEB sobre Abraçamento de face. É a lista mais atualizada de modelos de incorporação de texto proprietários e de código aberto, acompanhados de estatísticas sobre o desempenho de cada modelo de incorporação em várias tarefas de incorporação, como recuperação, resumo etc.
Avaliações dessa magnitude para modelos multimodais estão apenas começando (consulte o parâmetro de comparaçãoMME), portanto, nos concentraremos apenas em modelos de incorporação de texto para este tutorial. No entanto, toda a orientação aqui sobre como escolher o melhor modelo de incorporação também se aplica a modelos multimodais.
Os benchmarks são um bom ponto de partida, mas lembre-se de que esses resultados são auto-relatados e foram analisados em conjuntos de dados que podem não representar com precisão os dados com os quais você está lidando. Também é possível que alguns modelos de incorporação incluam os conjuntos de dados MTEB em seus dados de treinamento, uma vez que estão disponíveis publicamente. Portanto, mesmo que você escolha um modelo de incorporação com base nos resultados do benchmark, recomendamos avaliá-lo em seu conjunto de dados. Veremos como fazer isso mais tarde no tutorial, mas primeiro, vamos dar uma olhada no placar.
Veja um instantâneo dos 10 melhores modelos de incorporação da tabela de classificação atualmente:
Os 10 principais modelos de incorporação para recuperação na tabela de classificação do MTEB
Vejamos a guiaGeral, pois ela fornece um resumo abrangente de cada modelo de incorporação. No entanto, observe que classificamos a tabela de classificação pela colunaMédia de recuperação . Isso ocorre porque o RAG é uma tarefa de recuperação e queremos ver os melhores modelos de incorporação de recuperação na parte superior. Ignoraremos colunas correspondentes a outras tarefas e nos concentraremos nas seguintes colunas:
  • Média de recuperação: representa oGanho cumulativo descontado normalizado (NDCD) @ 10 médio em vários conjuntos de dados. NDCV é uma métrica comum para medir o desempenho dos sistemas de recuperação. Um NDGV mais alto indica um modelo de incorporação que é melhor na classificação de itens relevantes no topo da lista de resultados recuperados. 
  • Tamanho do modelo: tamanho do modelo de incorporação (em GB). Ele dá uma ideia dos recursos computacionais necessários para executar o modelo. Embora o desempenho de recuperação seja dimensionado com o tamanho do modelo, é importante observar que o tamanho do modelo também tem um impacto direto na latência. A compensação latência-desempenho se torna especialmente importante em uma configuração de produção.  
  • Máximo de tokens: número de tokens que podem ser compactados em uma única incorporação. Normalmente, não se deseja colocar mais do que um único n.º de texto (~100 tokens) em uma única incorporação. Portanto, mesmo a incorporação de modelos com tokens máximos de 512 deve ser mais que suficiente.
  • Dimensões de incorporação: comprimento do vetor de incorporação. Incorporações menores oferecem inferência mais rápida e são mais eficientes em termos de armazenamento, enquanto mais dimensões podem capturar detalhes e relacionamentos diferenciados nos dados. Em última análise, queremos um bom equilíbrio entre capturar a complexidade dos dados e a eficiência operacional.
Os 10 melhores modelos de incorporação na tabela de classificação contêm uma mistura de modelos pequenos versus grandes e proprietários versus modelos de código aberto. Vamos comparar alguns deles para encontrar o melhor modelo de incorporação para nosso conjunto de dados.

Antes de começarmos

Veja alguns pontos a serem observados sobre nosso experimento de avaliação.

Conjunto de dados

O conjunto de dados cosmopedia-wikihow-chunked do MongoDB está disponível no Hugging Face, que consiste em artigos pré-fragmentados no estilo WikiHow.

Modelos de incorporação avaliados

Também tentamos avaliar o SFR-Embedding-Mistral, atualmente o1 melhor modelo de incorporação na tabela de classificação do MTEB, mas o hardware abaixo não foi suficiente para executar esse modelo. Esse modelo e outros modelos 14+ GB na tabela de classificação provavelmente exigirão uma/várias CPU(s) com pelo menos 32 GB de memória total, o que significa custos mais altos e/ou entrada em inferência distribuída. Embora não tenhamos avaliado esse modelo de incorporação em nosso experimento, esse já é um bom ponto de dados ao pensar em custos e recursos.

Métricas de avaliação

Usamos as seguintes métricas para avaliar o desempenho da incorporação:
  • Latência de incorporação: tempo necessário para criar incorporações
  • Qualidade da recuperação: relevância dos documentos recuperados para a query do usuário

Hardware usado

1 GPU NVIDIA T4, 16 GB de memória

Onde está o código?

Cadernos de avaliação para cada um dos modelos de incorporação acima estão disponíveis:
Para executar um notebook, clique no escudo Abrir no Colab na parte superior do notebook. O notebook será aberto no Google Colaboratory.
Abrindo um notebook Jupyter no Google CoLab diretamente do GitHub
Clique no botão Conectar no canto superior direito para se conectar a um ambiente de tempo de execução hospedado.
Conectando-se a um ambiente de tempo de execução hospedado no Google Colaboratory
Uma vez conectado, você também pode alterar o tipo de tempo de execução para usar as GPUs T4 disponíveis gratuitamente no Google Colab.

Etapa 1: instalar as bibliotecas necessárias

As bibliotecas necessárias para cada modelo de incorporação são ligeiramente diferentes, mas as comuns são as seguintes:
  • datasets: biblioteca Python para obter acesso a conjuntos de dados disponíveis no Hugging Face Hub
  • sentence-transformers: framework para trabalhar com incorporações de texto e imagem
  • numpy: Biblioteca Python que fornece ferramentas para realizar operações matemáticas em arrays
  • pandas: biblioteca Python para análise, exploração e manipulação de dados
  • tdqm: módulo Python para mostrar um medidor de progresso para loops
1! pip install -qU datasets sentence-transformers numpy pandas tqdm
Além disso, para Voyage AI: voyageai: biblioteca Python para interagir com APIs OpenAI
1! pip install -qU voyageai
Além disso para OpenAI: openai: Biblioteca Python para interagir com APIs OpenAI
1! pip install -qU openai
Adicionalmente para os Emirados Árabes Unidos: transformers: Biblioteca Python que fornece APIs para interagir com modelos pré-treinados disponíveis no Hugging Face
1! pip install -qU transformers

Etapa 2: configurar pré-requisitos

Os modelos OpenAI e Voyage AI estão disponíveis por meio de APIs. Portanto, você precisará obter as chaves de API e disponibilizá-las para os respectivos clientes.
1import os
2import getpass
Inicialize o cliente Voyage AI:
1import voyageai
2VOYAGE_API_KEY = getpass.getpass("Voyage API Key:")
3voyage_client = voyageai.Client(api_key=VOYAGE_API_KEY)
Inicialize o cliente OpenAI:
1from openai import OpenAI
2os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
3openai_client = OpenAI()

Etapa 3: baixe o conjunto de dados de avaliação

Conforme mencionado anteriormente, usaremos o conjunto de dados cosmopedia-wikihow-chunked do MongoDB. O conjunto de dados é bem grande (1M+ documentos). Então, vamos transmiti-lo e pegar os primeiros 25 mil registros, em vez de baixar todo o conjunto de dados para o disco.
1from datasets import load_dataset
2import pandas as pd
3
4# Use streaming=True to load the dataset without downloading it fully
5data = load_dataset("MongoDB/cosmopedia-wikihow-chunked", split="train", streaming=True)
6# Get first 25k records from the dataset
7data_head = data.take(25000)
8df = pd.DataFrame(data_head)
9
10# Use this if you want the full dataset
11# data = load_dataset("MongoDB/cosmopedia-wikihow-chunked", split="train")
12# df = pd.DataFrame(data)

Etapa 4: análise de dados

Agora que temos nosso conjunto de dados, vamos realizar uma análise simples de dados e executar algumas verificações de integridade em nossos dados para garantir que não haja nenhum erro óbvio:
1# Ensuring length of dataset is what we expect i.e. 25k
2len(df)
3
4# Previewing the contents of the data
5df.head()
6
7# Only keep records where the text field is not null
8df = df[df["text"].notna()]
9
10# Number of unique documents in the dataset
11df.doc_id.nunique()

Etapa 5: crie incorporações

Agora, vamos criar funções de incorporação para cada um dos nossos modelos de incorporação.
Para voyage-lite-02-instruct:
1def get_embeddings(docs: List[str], input_type: str, model:str="voyage-lite-02-instruct") -> List[List[float]]:
2 """
3 Get embeddings using the Voyage AI API.
4
5 Args:
6 docs (List[str]): List of texts to embed
7 input_type (str): Type of input to embed. Can be "document" or "query".
8 model (str, optional): Model name. Defaults to "voyage-lite-02-instruct".
9
10 Returns:
11 List[List[float]]: Array of embedddings
12 """
13 response = voyage_client.embed(docs, model=model, input_type=input_type)
14 return response.embeddings
A função de incorporação acima recebe uma lista de textos (docs) e um input_type como argumentos e retorna uma lista de incorporações. O input_type pode ser document ou query, dependendo do fato de estarmos incorporando uma lista de documentos ou queries do usuário. O Voyage usa esse valor para anexar as entradas com prompts especiais para melhorar a qualidade da recuperação.
Para text-embedding-3-large:
1def get_embeddings(docs: List[str], model: str="text-embedding-3-large") -> List[List[float]]:
2 """
3 Generate embeddings using the OpenAI API.
4
5 Args:
6 docs (List[str]): List of texts to embed
7 model (str, optional): Model name. Defaults to "text-embedding-3-large".
8
9 Returns:
10 List[float]: Array of embeddings
11 """
12 # replace newlines, which can negatively affect performance.
13 docs = [doc.replace("\n", " ") for doc in docs]
14 response = openai_client.embeddings.create(input=docs, model=model)
15 response = [r.embedding for r in response.data]
16 return response
A função de incorporação do modelo OpenAI é semelhante à anterior, com algumas diferenças importantes: não há argumento input_type, e a API retorna uma lista de objetos de incorporação, que precisam ser analisados para obter a lista final de incorporações. Um exemplo de resposta da API tem a seguinte aparência:
1{
2 "data": [
3 {
4 "embedding": [
5 0.018429679796099663,
6 -0.009457024745643139
7 .
8 .
9 .
10 ],
11 "index": 0,
12 "object": "embedding"
13 }
14 ],
15 "model": "text-embedding-3-large",
16 "object": "list",
17 "usage": {
18 "prompt_tokens": 183,
19 "total_tokens": 183
20 }
21}
Para UAE-large-V1:
1from typing import List
2from transformers import AutoModel, AutoTokenizer
3import torch
4
5# Instruction to append to user queries, to improve retrieval
6RETRIEVAL_INSTRUCT = "Represent this sentence for searching relevant passages:"
7
8# Check if CUDA (GPU support) is available, and set the device accordingly
9device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
10# Load the UAE-Large-V1 model from the Hugging Face
11model = AutoModel.from_pretrained('WhereIsAI/UAE-Large-V1').to(device)
12# Load the tokenizer associated with the UAE-Large-V1 model
13tokenizer = AutoTokenizer.from_pretrained('WhereIsAI/UAE-Large-V1')
14
15# Decorator to disable gradient calculations
16@torch.no_grad()
17def get_embeddings(docs: List[str], input_type: str) -> List[List[float]]:
18 """
19 Get embeddings using the UAE-Large-V1 model.
20
21 Args:
22 docs (List[str]): List of texts to embed
23 input_type (str): Type of input to embed. Can be "document" or "query".
24
25 Returns:
26 List[List[float]]: Array of embedddings
27 """
28 # Prepend retrieval instruction to queries
29 if input_type == "query":
30 docs = ["{}{}".format(RETRIEVAL_INSTRUCT, q) for q in docs]
31 # Tokenize input texts
32 inputs = tokenizer(docs, padding=True, truncation=True, return_tensors='pt', max_length=512).to(device)
33 # Pass tokenized inputs to the model, and obtain the last hidden state
34 last_hidden_state = model(**inputs, return_dict=True).last_hidden_state
35 # Extract embeddings from the last hidden state
36 embeddings = last_hidden_state[:, 0]
37 return embeddings.cpu().numpy()
O modelo UAE-Large-V1 é um modelo de código aberto disponível no Hugging Face Model Hub. Primeiro, precisaremos baixar o modelo e seu tokenizador da Hugging Face. Fazemos isso usando as classes Auto, ou seja, AutoModel e AutoTokenizer da biblioteca Transformers – que infere automaticamente a arquitetura do modelo subjacente, neste caso, BERT. Em seguida, carregamos o modelo na GPU usando .to(device) pois temos um disponível.
A função de incorporação do modelo UAE, assim como a do modelo Voyage, recebe uma lista de textos (docs) e um input_type como argumentos e retorna uma lista de incorporações. Um prompt especial é anexado às query para melhorar a recuperação também.
Os textos de entrada são primeiro tokenizados, o que inclui preenchimento (para sequências curtas) e truncamento (para sequências longas) conforme necessário para garantir que o comprimento das entradas do modelo seja consistente — 512, neste caso, definido pelo parâmetro max_length. O valor pt para return_tensors indica que a saída da tokenização deve ser tensores PyTorch.
Os textos tokenizados são então passados para o modelo para inferência e a última camada oculta (last_hidden_state) é extraída. Essa camada é a representação final aprendida do modelo de toda a sequência de entrada. A incorporação final, no entanto, é extraída apenas do primeiro token, que geralmente é um token especial ([CLS] em BERT) em modelos baseados em transformadores. Este token serve como uma representação agregada de toda a sequência devido ao mecanismo de auto-atenção em transformadores, onde a representação de cada token em uma sequência é influenciada por todos os outros tokens. Por fim, movemos as incorporações de volta para a CPU usando .cpu() e convertemos os tensores PyTorch em arrays numpy usando .numpy().

Etapa 6: avaliação

Conforme mencionado anteriormente, avaliaremos os modelos com base na latência de incorporação e na qualidade da recuperação.

Medindo a latência de incorporação

Para medir a latência de incorporação, criaremos um armazenamento de vetor local, que é essencialmente uma lista de incorporações para todo o conjunto de dados. A latência aqui é definida como o tempo necessário para criar incorporações para o conjunto completo de dados.
1from tqdm.auto import tqdm
2
3# Get all the texts in the dataset
4texts = df["text"].tolist()
5
6# Number of samples in a single batch
7batch_size = 128
8
9embeddings = []
10# Generate embeddings in batches
11for i in tqdm(range(0, len(texts), batch_size)):
12 end = min(len(texts), i+batch_size)
13 batch = texts[i:end]
14 # Generate embeddings for current batch
15 batch_embeddings = get_embeddings(batch)
16 # Add to the list of embeddings
17 embeddings.extend(batch_embeddings)
Primeiro criamos uma lista de todos os textos que queremos incorporar e definimos o tamanho do lote. O modelo voyage-lite-02-instruct tem um limite de tamanho de lote de 128, portanto usamos o mesmo para todos os modelos, para consistência. Iteramos pela lista de textos, pegando batch_size número de amostras em cada iteração, obtendo incorporações para o lote e adicionando-as ao nosso "armazenamento de vetores".
O tempo necessário para gerar incorporações em nosso hardware foi o seguinte:
ModelobatchSizeDimensõesHora
text-embedding-3-large12830724m 17s
voyage-lite-02-instruct128102411m 14s
UAE-large-V1128102419m 50s
O modelo OpenAI tem a menor latência. No entanto, observe que ele também tem três vezes o número de dimensões de incorporação em comparação com os outros dois modelos. O OpenAI também cobra por tokens usados, portanto, os custos de armazenamento e de inferência desse modelo podem aumentar com o tempo. Enquanto o modelo dos Emirados Árabes Unidos é o mais lento do lote (apesar de executar inferência em uma GPU), há espaço para otimizações como quantização, destilação etc., já que é de código aberto.

Medindo a qualidade da recuperação

Para avaliar a qualidade da recuperação, usamos um conjunto de perguntas baseadas em temas vistos em nosso conjunto de dados. Para aplicativos reais, no entanto, é melhor organizar um conjunto de perguntas "imperdíveis", ou seja, perguntas que você normalmente esperaria que os usuários fizessem de seus dados. Neste tutorial, avaliaremos qualitativamente a relevância dos documentos recuperados como medida de qualidade, mas exploraremos métricas e técnicas para avaliações quantitativas em um próximo tutorial.
Estes são os principais temas (gerados usando o ChatGPT) cobertos pelos três principais documentos recuperados por cada modelo para nossas queries:
😐 denota documentos que achamos que não eram relevantes para a questão. As sentenças que contribuíram para esse veredicto foram destacadas em negrito.
Query: Dê-me algumas dicas para melhorar minha saúde social.
voyage-lite-02-instructtext-embedding-3-largeUAE-large-V1
😐 Reavalie regularmente a eficácia do tratamento e modifique os planos conforme necessário. Acompanhe humor, pensamentos e comportamentos; compartilhe atualizações com terapeutas e rede de apoio. Use uma abordagem multifacetada para gerenciar pensamentos suicidas, envolvendo recursos, habilidades e conexões.Alimente-se de forma equilibrada, faça exercícios, durma bem. Cultive relacionamentos, interaja socialmente, estabeleça limites. Gerencie o estresse com mecanismos de enfrentamento eficazes.Priorizar a saúde mental é essencial, não é egoísmo. Pratique a atenção por meio da meditação, de registros no diário e de atividades como a ioga. Adote hábitos saudáveis para melhorar o humor, diminuir a ansiedade e melhorar a cognição.
Reconheça os primeiros sinais de estresse, compartilhe preocupações e desenvolva mecanismos de enfrentamento. Combata o isolamento alimentando relacionamentos e envolvendo-se em atividades sociais. Estabeleça limites, comunique-se abertamente e procure ajuda profissional para ansiedade social.Priorizar a saúde mental é essencial, não é egoísmo. Pratique a atenção por meio da meditação, de registros no diário e de atividades como a ioga. Adote hábitos saudáveis para melhorar o humor, diminuir a ansiedade e melhorar a cognição.Alimente-se de maneira equilibrada, faça exercícios regularmente e durma de 7 a 9 horas. Cultive relacionamentos positivos, valorize as amizades e busque novas oportunidades sociais. Gerencie o estresse com mecanismos de enfrentamento eficazes.
Priorizar a saúde mental é essencial, não é egoísmo. Pratique a atenção por meio da meditação, de registros no diário e de atividades como a ioga. Adote hábitos saudáveis para melhorar o humor, diminuir a ansiedade e melhorar a cognição.Reconhecer os sentimentos é um passo para enfrentá-los. Envolva-se em atividades de autocuidado para melhorar o humor e a saúde. Torne o autocuidado consistente para ter benefícios duradouros.😐 Cuidar da saúde mental é crucial para uma vida plena, produtividade e relacionamentos sólidos. Reconheça a importância da saúde mental em todos os aspectos da vida. O controle da saúde mental reduz o risco de problemas psicológicos graves.
Embora os resultados abordem temas semelhantes, o modelo Voyage AI se concentra fortemente na busca de ajuda profissional, enquanto o modelo dos Emirados Árabes Unidos aborda um pouco mais sobre a importância de cuidar da saúde mental. O modelo OpenAI é aquele que recupera consistentemente documentos que incluem dicas gerais para melhorar a saúde mental.
Query: dê-me algumas dicas para escrever um bom código.
voyage-lite-02-instructtext-embedding-3-largeUAE-large-V1
Esforce-se para obter código limpo e de fácil manutenção com convenções consistentes e controle de versão. Use linters, analisadores estáticos e documento de trabalho para qualidade e colaboração. Adote as melhores práticas como SOLID e TDD para aprimorar o design, a escalabilidade e a extensibilidade.Esforce-se para obter código limpo e de fácil manutenção com convenções consistentes e controle de versão. Use linters, analisadores estáticos e documento de trabalho para qualidade e colaboração. Adote as melhores práticas como SOLID e TDD para aprimorar o design, a escalabilidade e a extensibilidade.Esforce-se para obter código limpo e de fácil manutenção com convenções consistentes e controle de versão. Use linters, analisadores estáticos e documento de trabalho para qualidade e colaboração. Adote as melhores práticas como SOLID e TDD para aprimorar o design, a escalabilidade e a extensibilidade.
😐 Codifique e teste mecânicas básicas de jogabilidade, como sistemas de combate e missões, depure e refine para estabilidade. Use codificação modular, controle de versão e princípios orientados a objetos para o desenvolvimento de jogos eficaz. Teste com frequência para encontrar e corrigir bugs, pedir feedback e priorizar melhorias significativas.😐 Uma boa programação precisa de dedicação, persistência e paciência. Domine os conceitos básicos, pratique diligentemente e interaja com colegas para melhorar. Todo especialista já foi um iniciante– continue avançando.Leia livros de programação para obter uma cobertura abrangente e insights profundos, escolhendo textos para novatos com desenvolvimento para a proficiência. Combine leitura com codificação para reforçar o aprendizado; faça anotações sobre pontos críticos e termos desconhecidos. Envolva-se com exercícios e desafios em livros para aplicar conceitos e aprimorar habilidades.
😐 Monitore as redes sociais e boletins de notícias para obter insights atuais sobre o teste de software. Participe de redes e fóruns para trocar conhecimento com testadores experientes. Atualize regularmente suas ferramentas e métodos de teste para aumentar a eficiência.Aplique o aprendizado trabalhando em projetos reais, começando pequeno e progredindo para projetos maiores. Participe de projetos de código aberto ou desenvolva seus aplicativos para aprimorar a solução de problemas. Domine a depuração com IDEs, instruções de impressão e compreensão de erros comuns para obter produtividade.😐 A programação é fundamental em diversos setores, oferecendo diversas oportunidades. Este guia aborda fundamentos de programação, melhores práticas e estratégias de melhoria. Escolha uma linguagem de programação com base em interesses, objetivos e recursos.
Todos os modelos parecem ter um pouco de dificuldade com essa questão. Todos eles recuperam pelo menos um documento que não é tão relevante para a questão. No entanto, é interessante notar que todos os modelos recuperam o mesmo documento como seu número um.
Query: quais são algumas práticas sustentáveis que posso incorporar na vida diária?
voyage-lite-02-instructtext-embedding-3-largeUAE-large-V1
Conserve recursos reduzindo o desperdício, reutilizando e reciclando, refletindo os valores da cultura Jawa devido aos recursos limitados de seu planeta. Monitore o consumo (por exemplo, água e eletricidade), conserte os objetos e participe dos esforços ambientais locais. As práticas ecológicas melhoram o bem-estar pessoal e global, alinhando-se aos valores Jawa.Carregue sacolas reutilizáveis para fazer compras, mantendo algumas no carro ou na mochila. Escolha alternativas sustentáveis, como garrafas de água reutilizáveis e talheres ecológicos. Apoie as empresas que reduzem ao mínimo as embalagens e usam materiais biodegradáveis.Eduque outras pessoas sobre práticas ecológicas; lidere pelo exemplo. Organize workshops ou grupos de discussão sobre vida sustentável. Incorpore o respeito pelo planeta; todo esforço conta para a melhoria.
Aprenda e siga as regras locais de reciclagem, enxágue recipientes e ensine outras pessoas sobre a reciclagem adequada. Opte por transportes verdes, como caminhadas, bicicletas ou veículos elétricos, e verifique se há incentivos. Mude para opções com eficiência energética, como luzes de LED e correntes de vedação, e considere fontes de energia renováveis.Opte por transporte sustentável, aparelhos com eficiência energética, painéis solares e coma menos carne para reduzir as emissões. Economize água corrigindo vazamentos, tomando banhos mais curtos e usando luminárias de baixo fluxo. A conservação da água protege os ecossistemas, garante a segurança alimentar e reduz o estresse da infraestrutura.Carregue sacolas reutilizáveis para fazer compras, mantendo algumas no carro ou na mochila. Escolha alternativas sustentáveis, como garrafas de água reutilizáveis e talheres ecológicos. Apoie as empresas que reduzem ao mínimo as embalagens e usam materiais biodegradáveis.
😐 Implemente essas etapas de forma consistente. Contribua ativamente para um mundo mais limpo e verde. Fortaleça a resiliência para as gerações futuras.Conserve a água com instalações de baixo fluxo, conserte vazamentos e use a água da chuva para jardinagem. Faça compostagem de restos de cozinha para reduzir o desperdício e enriquecer o solo, evite carne e laticínios. Compre localmente em mercados de agricultores e CSAs para reduzir as emissões e apoiar as economias locais.Participe de eventos locais de plantio de árvores e seja voluntário em hortas comunitárias ou projetos de restauração. Integre plantas nativas ao paisagismo para apoiar polinizadores e remover espécies invasoras. Adote métodos de transporte ecológicos para diminuir o consumo de combustível fóssil.
Observamos uma tendência semelhante com esta query e com os dois exemplos anteriores — o modelo OpenAI recupera consistentemente documentos que fornecem as dicas mais práticas, seguidos pelo modelo UAE. O modelo Voyage fornece mais conselhos de alto nível.
No geral, com base em nossa avaliação inicial, o modelo text-embedding-3-large da OpenAI sai no topo. No entanto, ao trabalhar com sistemas do mundo real, é recomendada uma avaliação mais rigorosa de um conjunto de dados maior do que a que você obterá com o text-embedding-3-large. Além disso, os custos operacionais se tornam um fator importante e devem ser considerados antes de prosseguir com o text-embedding-3-large. Saiba mais sobre a avaliação na parte 2 desta série!

Conclusão

Neste tutorial, examinamos como escolher o melhor modelo de incorporação para incorporar dados para o RAG. A tabela de classificação MTEB é um bom ponto de partida, especialmente para modelos de incorporação de texto, mas é importante avaliá-los em seus dados para encontrar o melhor para seu aplicativo RAG. Custos de armazenamento e inferência, latência de incorporação e qualidade de recuperação são parâmetros importantes a serem considerados ao avaliar modelos de incorporação. O melhor modelo de incorporação é normalmente aquele que oferece a maior compensação nessas dimensões.
Agora que você tem um bom entendimento da incorporação de modelos, aqui estão alguns recursos para começar a criar aplicativos RAG usando o MongoDB:
Acompanhe criando um MongoDB Atlas cluster e entre em contato conosco em nossos fóruns da comunidade de IA generativa se tiver alguma dúvida.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Como gerenciar dados em escala com o MongoDB Atlas Online Archive


Sep 23, 2022 | 6 min read
Tutorial

Otimizando a relevância usando MongoDB Atlas e LlamaIndex


Oct 02, 2024 | 13 min read
exemplo de código

Trends Analyser


Sep 11, 2024 | 1 min read
Artigo

Apresentando o PSC Interconnect e o Global Access para MongoDB Atlas


Aug 05, 2024 | 2 min read
Sumário