Usando os embeddings mais recentes da OpenAI em um sistema RAG com o MongoDB
Avalie esse Tutorial
A OpenAI lançou recentemente novos modelos de incorporação e moderação. Este artigo explora o processo de implementação passo a passo da utilização de um dos novos modelos de incorporação: text-embedding-3-small em um sistema de geração aumentada de recuperação (RAG) desenvolvido pelo banco de dados vetorial do MongoDB Atlas.
Uma incorporação é uma representação matemática de dados em um espaço de alta dimensão, normalmente chamado de espaço vetorial. Dentro de um espaço vetorial, as incorporações vetoriais são posicionadas com base em suas relações semânticas, conceitos ou relevância contextual. Essa relação espacial dentro do espaço vetorial reflete efetivamente as associações nos dados originais, tornando as incorporações úteis em vários domínios de IA, como aprendizado de máquina, aprendizado profundo, IA generativa (GenAI), processamento de linguagem natural (PLN), visão computacional e ciência de dados.
A criação de uma incorporação envolve o mapeamento de dados relacionados a entidades como palavras, produtos, áudio e perfis de usuário em um formato numérico. Na PLN, esse processo envolve a transformação de palavras e frases em vetores, convertendo seus significados semânticos em uma forma legível por máquina.
Os aplicativos de AI que utilizam padrões de design de arquitetura RAG aproveitam as incorporações para aumentar o processo generativo de grandes modelos de linguagem (LLM), recuperando informações relevantes de um armazenamento de dados como o MongoDB Atlas. Ao comparar as incorporações da query com as do banco de dados, os sistemas RAG incorporam conhecimento externo, melhorando a relevância e a precisão das respostas.
Recentemente, a OpenAI introduziu dois novos modelos de incorporação: text-embedding-3-small e text-embedding-3-large. O modelo text-embedding-3-small oferece uma solução compacta e altamente eficiente, ideal para aplicações que exigem velocidade e agilidade, enquanto o modelo text-embedding-3-large fornece uma representação vetorial mais detalhada e poderosa, adequada para tarefas de processamento de dados complexas e com nuances.
ada v2 | text-embedding-3-small | text-embedding-3-large | |
Tamanho de incorporação | 1536 | 256, 512 e 1536 | 256, 1024 e 3072 |
- Modelos de incorporação da OpenAI: conheça os novos modelos de incorporação da OpenAI, text-embedding-3-small e text-embedding-3-large, e seus aplicativos.
- Etapas práticas de implementação: siga etapas práticas, incluindo instalação de bibliotecas, carregamento e pré-processamento de dados, criação de incorporações e ingestão de dados no MongoDB.
- Índice de pesquisa vetorial no MongoDB: saiba como criar e usar um índice de pesquisa vetorial para recuperação eficiente e processamento de queries do usuário.
- Respostas a queries orientadas por IA: entenda como lidar com as queries de usuários e gerar respostas de IA, integrando insights do sistema RAG para obter respostas mais precisas.
- Insights de aplicativos no mundo real: obtenha experiência prática na implementação de um sistema RAG avançado para usos práticos, como um mecanismo de recomendações de filmes.
A seção a seguir apresenta uma série de etapas que explicam como utilizar o novo modelo de incorporação OpenAI text-embedding-3-small para incorporar pontos de dados de plotagem para filmes em um conjunto de dados de filmes para alimentar um RAG que responde às queries dos usuários com base na coleção de filmes.
As etapas também abrangem os estágios típicos dos sistemas e pipelines RAG que os engenheiros de AI provavelmente encontrarão:
- Carregamento de dados: importar e acessar conjuntos de dados de várias fontes de dados para processamento e análise; a etapa envolve a disponibilização de dados no ambiente do aplicativo.
- Limpeza e preparação de dados: refinamento do conjunto de dados com a remoção de imprecisões, preenchimento de valores ausentes e formatação de dados para uso nos estágios posteriores do pipeline.
- Ingestão e indexação de dados: mover os dados processados para um armazenamento de dados, como o banco de dados do MongoDB Atlas, e criar índices para otimizar a eficiência da recuperação e o desempenho da pesquisa.
- Query: execução de query de pesquisa no banco de dados para recuperar dados relevantes com base em critérios específicos ou entradas do usuário.
O ambiente de desenvolvimento para a demonstração do modelo de incorporação text-embedding-3-small e do sistema de recuperação requer a configuração de bibliotecas e ferramentas instaladas usando o pip do gerenciador de pacotes Python.
1 !pip install datasets pandas openai pymongo
Abaixo estão breves explicações das ferramentas e bibliotecas utilizadas no código de implementação:
- conjuntos de dados: essa biblioteca faz parte do ecossistema Hugging Face. Ao instalar os "conjuntos de dados", obtemos acesso a vários conjuntos de dados pré-processados e prontos para uso, que são essenciais para o treinamento e o ajuste fino dos modelos de aprendizado de máquina ou para a avaliação comparativa de seu desempenho.
- pandas: esta é uma biblioteca de ciência de dados que fornece estruturas de dados robustas e métodos para manipulação, processamento e análise de dados.
- openai: esta é a biblioteca oficial do cliente Python para acessar o conjunto de modelos e ferramentas de AI da OpenAI, incluindo GPT e modelos de incorporação.
- pymongo: PyMongo é um kit de ferramentas Python para MongoDB. Ele permite interações com um banco de dados MongoDB.
O trecho de código abaixo mostra a fase de carregamento de dados em que as bibliotecas load_dataset da biblioteca de conjuntos de dados Hugging Face e a biblioteca do panda, denotada como pd, são importadas para o ambiente de desenvolvimento. A função load_dataset serve para acessar uma ampla gama de conjuntos de dados disponíveis no repositório da Hugging Face.
Carregue o conjunto de dados intitulado AIatMongoDB/embedded_movies. Esse conjunto de dados é uma coleção de detalhes relacionados a filmes que incluem atributos como título, ano de lançamento, elenco e enredo. Um recurso exclusivo desse conjunto de dados é o campo plot_embedding para cada filme. Essas incorporações são geradas usando o modelo text-embedding-ada-002 da OpenAI.
Depois de carregar o conjunto de dados, ele é convertido em um DataFrame do pandas; esse formato de dados simplifica o tratamento e a análise dos dados. Exiba as cinco primeiras linhas usando a função head(5) para obter uma compreensão inicial dos dados. Essa visualização fornece um snapshot da estrutura do conjunto de dados e seus vários atributos, como incorporações de gênero, elenco e enredo.
1 from datasets import load_dataset 2 import pandas as pd 3 4 # <https://huggingface.co/datasets/AIatMongoDB/embedded_movies> 5 dataset = load_dataset("AIatMongoDB/embedded_movies") 6 7 # Convert the dataset to a pandas dataframe 8 dataset_df = pd.DataFrame(dataset['train']) 9 10 dataset_df.head(5)
Importe as bibliotecas:
- de conjuntos de dados importa load_dataset: importa a função load_dataset da biblioteca de conjuntos de dados do Hugging Face; essa função é usada para carregar conjuntos de dados do extenso repositório de conjuntos de dados do Hugging Face.
- importar pandas como pd: importa a biblioteca pandas, uma ferramenta fundamental em Python para manipulação e análise de dados, usando o alias pd.
Carregue o conjunto de dados:
dataset = load_dataset("AIatMongoDB/embedded_movies")
: carrega o conjunto de dados denominadoembedded_movies
do repositório de conjuntos de dados do Hugging Face; esse conjunto de dados é fornecido pelo MongoDB e é projetado especificamente para tarefas de incorporação e recuperação.
Converter conjunto de dados para Pandas DataFrame:
dataset_df = pd.DataFrame(dataset\['train'\])
: converte a parte de treinamento do conjunto de dados em um pandas DataFrame.
Visualize o conjunto de dados:
dataset_df.head(5)
: exibe as cinco primeiras entradas do DataFrame.
A próxima etapa limpa os dados e os prepara para a próxima etapa, que cria um novo ponto de dados de incorporação usando o novo modelo de incorporação da OpenAI.
1 # Remove data point where plot column is missing 2 dataset_df = dataset_df.dropna(subset=['plot']) 3 print("\\nNumber of missing values in each column after removal:") 4 print(dataset_df.isnull().sum()) 5 6 # Remove the plot_embedding from each data point in the dataset as we are going to create new embeddings with the new OpenAI embedding Model "text-embedding-3-small" 7 dataset_df = dataset_df.drop(columns=['plot_embedding']) 8 dataset_df.head(5)
Removendo dados incompletos:
dataset_df = dataset_df.dropna(subset=\['plot'\])
: garante a integridade dos dados removendo qualquer ponto/linha de dados onde a coluna "plot" está sem dados; como "plot" é um componente vital para as novas incorporações, sua integridade afeta o desempenho de recuperação.
Preparação para novas incorporações:
dataset_df = dataset_df.drop(columns=\['plot_embedding'\])
: remover a coluna “plot_embedding existente; para novas incorporações usando o modelo "text-embedding-3-small" do OpenAI, as incorporações existentes (geradas por um modelo diferente) não são mais necessárias.dataset_df.head(5)
: permite ver as cinco primeiras linhas do datagrama atualizado para garantir a remoção da coluna "plot_embedding " e confirmar a prontidão dos dados.
Esse estágio se concentra na geração de novas incorporações usando o modelo avançado da OpenAI.
Esta demonstração usa um Google Colab Notebook, no qual as variáveis de ambiente são configuradas explicitamente na seção Secrets do notebook e acessadas usando o módulo de dados do usuário. Em um ambiente de produção, as variáveis de ambiente que armazenam chaves secretas geralmente são armazenadas em um arquivo .env ou equivalente.
Uma chave de API OpenAI é necessária para garantir a conclusão bem-sucedida desta etapa. Mais detalhes sobre os modelos de incorporação da OpenAI podem ser encontrados no site oficial.
1 python 2 import openai 3 from google.colab import userdata 4 5 openai.api_key = userdata.get("open_ai") 6 7 EMBEDDING_MODEL = "text-embedding-3-small" 8 9 def get_embedding(text): 10 """Generate an embedding for the given text using OpenAI's API.""" 11 12 # Check for valid input 13 if not text or not isinstance(text, str): 14 return None 15 16 try: 17 # Call OpenAI API to get the embedding 18 embedding = openai.embeddings.create(input=text, model=EMBEDDING_MODEL).data[0].embedding 19 return embedding 20 except Exception as e: 21 print(f"Error in get_embedding: {e}") 22 return None 23 24 dataset_df["plot_embedding_optimised"] = dataset_df['plot'].apply(get_embedding) 25 26 dataset_df.head()
Configurando a API da OpenAI:
- Importações e chave de API: importe a biblioteca openai e recupere a chave de API dos dados de usuário do Google Colab.
- Seleção de modelo: defina a variável EMBEDDING_MODEL como text-embedding-3-small.
Função de geração de incorporação:
- get_embedding: converte texto em incorporações; ele usa a entrada de string e o modelo de incorporação como argumentos e gera a incorporação de texto usando o modelo OpenAI especificado.
- Validação de entrada e chamada de API: valida a entrada para garantir que seja uma string válida e, em seguida, chama a OpenAI API para gerar a incorporação.
- Se o processo encontrar algum problema, como entrada inválida ou erros de API, a função retornará Nenhum.
- Aplicando ao conjunto de dados: a função get_embedding é aplicada à coluna "plot" do DataFrame dataset_df. Cada gráfico é transformado em um dado de incorporação otimizado armazenado em uma nova coluna, plot_embedding_optimised.
- Visualizar conjunto de dados atualizado: dataset_df.head() exibe as primeiras linhas do DataFrame.
O MongoDB atua como um banco de dados operacional e um banco de dados vetorial. Ele oferece uma solução de banco de dados que armazena, consulta e recupera com eficiência incorporações vetoriais — as vantagens disso estão na simplicidade da manutenção, do gerenciamento e do custo do banco de dados.
Para criar um novo MongoDB database, configure um cluster de banco de dados:
- Registre-se para obter uma conta gratuita do MongoDB Atlas ou, para usuários existentes, faça login no MongoDB Atlas.
- Selecione a opção “Database” no painel esquerdo, que navegará até a página de implantação do banco de dados, na qual há uma especificação de implantação de qualquer cluster existente. Crie um novo cluster de banco de dados clicando no botão "+Criar".
3. Selecione todas as configurações aplicáveis para o cluster do banco de dados. Depois que todas as opções de configuração estiverem selecionadas, clique no botão "Create Cluster" para implantar o cluster recém-criado. O MongoDB também permite a criação de clusters gratuitos no "Shared Tab. "
Observação: não se esqueça de colocar o IP na lista de permissões para o host Python ou 0.0.0.0/0 para qualquer IP ao criar a prova de conceitos.
4. Depois de criar e implantar o cluster com êxito, o cluster se tornará acessível na página “Database Deployment".
5. Clique no botão “Connect” do cluster para ver a opção de configurar uma conexão com o cluster por meio de vários drivers de linguagem.
6. Este tutorial requer apenas o URI (identificador de recurso único) do cluster. Obtenha o URI e copie-o para o ambiente Google Colab Secrets em uma variável chamada MONGO_URI, ou coloque-o em um arquivo .env ou equivalente.
1 import pymongo 2 from google.colab import userdata 3 4 def get_mongo_client(mongo_uri): 5 """Establish connection to the MongoDB.""" 6 try: 7 client = pymongo.MongoClient(mongo_uri) 8 print("Connection to MongoDB successful") 9 return client 10 except pymongo.errors.ConnectionFailure as e: 11 print(f"Connection failed: {e}") 12 return None 13 14 mongo_uri = userdata.get('MONGO_URI') 15 if not mongo_uri: 16 print("MONGO_URI not set in environment variables") 17 18 mongo_client = get_mongo_client(mongo_uri) 19 20 # Ingest data into MongoDB 21 db = mongo_client['movies'] 22 collection = db['movie_collection'] 23 24 documents = dataset_df.to_dict('records') 25 collection.insert_many(documents) 26 27 print("Data ingestion into MongoDB completed")
7. Configuração da conexão do banco de dados:
- Função de conexão MongoDB: a função get_mongo_client é definida para estabelecer uma conexão com MongoDB usando o URI fornecido. Inclui tratamento de erros para gerenciar falhas de conexão.
8. Processo de ingestão de dados:
- Recuperando o URI do MongoDB: o URI do MongoDB, crucial para a conexão com o banco de dados, é obtido das variáveis de ambiente usando
userdata.get('MONGO_URI')
. - Estabelecendo conexão com o banco de dados: o script tenta se conectar ao MongoDB usando este URI.
- Seleção de banco de dados e coleção: uma vez conectado, o script seleciona o banco de dados
movies
e a coleçãomovie_collection
. Isto especifica onde os dados serão armazenados no MongoDB. Se o banco de dados ou a coleção não existirem, o MongoDB os criará automaticamente. - Conversão e inserção de dados: o DataFrame, com incorporações aprimoradas, é convertido em um formato de dicionário adequado para o MongoDB usando
to_dict('records')
. O métodoinsert_many
é então usado para alimentar dados em lote.
Esta próxima etapa é obrigatória para realizar pesquisas baseadas em vetor eficientes e precisas com base nas incorporações vetoriais armazenadas nos documentos na coleção movie_collection. A criação de um índice de pesquisa vetorial habilita a capacidade de percorrer os documentos com eficiência para recuperar documentos com incorporações que correspondam à incorporação da query com base na similaridade vetorial. Leia mais sobre índices de pesquisa vetorial do MongoDB.
1. Navegue até Movie_collection no banco de dados de filmes. Neste ponto, o banco de dados é preenchido com vários documentos contendo informações sobre vários filmes, especialmente dentro dos gêneros de ação e relacionamento.
2. Selecione a opção da aba "Atlas Search" no painel de navegação para criar um índice do Atlas Vector Search. Clique no botão "Create Search Index" para criar um índice do Atlas Vector Search.
3. Na página para criar um índice de pesquisa vetorial, selecione a opção Atlas Vector Search, que permite a criação de um índice de pesquisa vetorial definindo o índice que usa JSON.
4. A página abaixo permite a definição do índice via JSON. Essa página também oferece a capacidade de nomear a pesquisa de índice vetorial. O nome dado ao índice será referenciado no código de implementação nas etapas a seguir. Para este tutorial, o nome "vector_index " será usado.
5. Para concluir a criação do índice de pesquisa vetorial, selecione o banco de dados e a coleção apropriados para os quais o índice deve ser criado. Neste cenário, é o banco de dados "movies " e a coleção "movie_collection. O JSON inserido no editor de JSON deve ser semelhante ao seguinte:
1 { 2 "fields": [ 3 { 4 "numDimensions": 1536, 5 "path": "plot_embedding_optimised", 6 "similarity": "cosine", 7 "type": "vector" 8 } 9 ] 10 }
- campos: esta é uma lista que especifica os campo a serem indexados na coleção MongoDB junto com a definição da característica do próprio índice.
- numDimensions: em cada item de campo,
numDimensions
especifica o número de dimensões dos dados do vetor. Nesse caso, ele é definido como 1536. Esse número deve corresponder à dimensionalidade dos dados de vetor armazenados no campo e também é uma das dimensões que otext-embedding-3-small
da OpenAI cria em incorporações de vetor. - caminho: o campo de caminho indica o caminho para os dados dentro dos documentos do banco de dados a serem indexados. Aqui, ele está definido como
plot_embedding_optimised
. - similaridade: o campo de similaridade define o tipo de métrica de distância de similaridade que será usada para comparar vetores durante uma pesquisa. Aqui, ele é definido como cosseno, que mede o
cosine
do ângulo entre dois vetores, determinando efetivamente o nível de semelhança ou diferença desses vetores em sua orientação no espaço vetorial. Outras medidas métricas de distância de similaridade são Euclideano e Produtos pontuais. Encontre mais informações sobre como indexar incorporações vetoriais para pesquisa vetorial. - Tipo: este campo especifica o tipo dos dados que o índice manipulará. Nesse caso, ele é definido como
vector
, indicando que esse índice foi projetado especificamente para lidar com e otimizar pesquisas em dados vetoriais.
Agora, o índice de pesquisa vetorial deve ser criado com sucesso. Navegar de volta para a página do Atlas Search deve mostrar o índice chamado vector_index com o status ativo.
Essa etapa combina todas as atividades da etapa anterior para fornecer a funcionalidade de realizar pesquisas vetoriais em registros armazenados com base em queries de usuários incorporadas.
Esta etapa implementa uma função que retorna um resultado de pesquisa vetorial gerando uma incorporação de query e definindo um pipeline de agregação MongoDB. O pipeline, que consiste nos estágios
$vectorSearch
e $project
, faz queries usando o vetor gerado e formata os resultados para incluir somente informações necessárias, como enredo, título e gêneros, incorporando uma pontuação de pesquisa para cada resultado. Essa projeção seletiva melhora o desempenho da query reduzindo a transferência de dados e otimiza o uso de recursos de rede e memória, o que é especialmente importante ao lidar com grandes conjuntos de dados. Para engenheiros e desenvolvedores de IA que consideram a segurança de dados em um estágio inicial, as chances de dados confidenciais vazarem para o lado do cliente podem ser minimizadas excluindo cuidadosamente campos irrelevantes para a query do usuário.1 def vector_search(user_query, collection): 2 """ 3 Perform a vector search in the MongoDB collection based on the user query. 4 5 Args: 6 user_query (str): The user's query string. 7 collection (MongoCollection): The MongoDB collection to search. 8 9 Returns: 10 list: A list of matching documents. 11 """ 12 13 # Generate embedding for the user query 14 query_embedding = get_embedding(user_query) 15 16 if query_embedding is None: 17 return "Invalid query or embedding generation failed." 18 19 # Define the vector search pipeline 20 pipeline = [ 21 { 22 "$vectorSearch": { 23 "index": "vector_index", 24 "queryVector": query_embedding, 25 "path": "plot_embedding_optimised", 26 "numCandidates": 150, # Number of candidate matches to consider 27 "limit": 5 # Return top 5 matches 28 } 29 }, 30 { 31 "$project": { 32 "_id": 0, # Exclude the _id field 33 "plot_embedding_opitimzed": 0, # Exclude the plot_embedding_opitimzed field 34 "plot": 1, # Include the plot field 35 "title": 1, # Include the title field 36 "genres": 1, # Include the genres field 37 "score": { 38 "$meta": "vectorSearchScore" # Include the search score 39 } 40 } 41 } 42 ] 43 44 # Execute the search 45 results = collection.aggregate(pipeline) 46 return list(results)
1. Função personalizada da pesquisa vetorial:
- A função
vector_search
foi projetada para executar uma pesquisa sofisticada dentro de uma coleção do MongoDB, utilizando as incorporações vetoriais armazenadas no banco de dados. - Aceita dois parâmetros:
user_query
, uma string representando a query de pesquisa do usuário ecollection
, uma coleção do MongoDB a ser pesquisada.
2. Incorporação de query e pipeline de pesquisa:
- Geração de incorporação: a função começa gerando uma incorporação para a query do usuário usando a função
get_embedding
. - Definindo o pipeline de pesquisa: um pipeline de agregação MongoDB é definido para a pesquisa vetorial. Esse pipeline usa o operador
$vectorSearch
para encontrar documentos cujas incorporações correspondam melhor à incorporação da query. O pipeline especifica o índice a ser usado, o vetor de query e o caminho para as incorporações nos documentos, limitando o número de correspondências de candidatos e o número de resultados retornados. - Projeção de resultados: o estágio
$project
formata a saída incluindo campos relevantes, como enredo, título, gêneros e pontuação de pesquisa, excluindo o ID do documento MongoDB.
A etapa final da fase de implementação se concentra na aplicação prática de nossa funcionalidade de pesquisa vetorial e na integração de AI para lidar com as queries dos usuários de forma eficaz. A função
handle_user_query
realiza uma pesquisa vetorial na coleção do MongoDB com base na query do usuário e utiliza o modelo GPT-3.5 da OpenAI para gerar respostas sensíveis ao contexto.1 def handle_user_query(query, collection): 2 3 get_knowledge = vector_search(query, collection) 4 5 search_result = '' 6 for result in get_knowledge: 7 search_result += f"Title: {result.get('title', 'N/A')}, Plot: {result.get('plot', 'N/A')}\\n" 8 9 completion = openai.chat.completions.create( 10 model="gpt-3.5-turbo", 11 messages=[ 12 {"role": "system", "content": "You are a movie recommendation system."}, 13 {"role": "user", "content": "Answer this user query: " + query + " with the following context: " + search_result} 14 ] 15 ) 16 17 return (completion.choices[0].message.content), search_result 18 19 Conduct query with retrieval of sources 20 query = "What is the best romantic movie to watch?" 21 response, source_information = handle_user_query(query, collection) 22 23 print(f"Response: {response}") 24 print(f"Source Information: \\n{source_information}")
1. Funcionalidade para tratamento de queries:
- A função
handle_user_query
recebe uma query do usuário e a coleção MongoDB como entradas. - Ele começa executando uma pesquisa vetorial na coleção com base na query do usuário, recuperando documentos relevantes do filme.
2. Geração de respostas orientadas por IA:
- Compilação de contexto: em seguida, a função compila uma string de contexto a partir dos resultados da pesquisa, concatenando títulos e enredos dos filmes recuperados.
- Integração do modelo OpenAI: a função
openai.chat.completions.create
é chamada com o modelo gpt-3.5-turbo. - Funções de sistema e usuário: na mensagem enviada ao modelo da OpenAI, duas funções são definidas: sistema, que estabelece o papel da IA como um sistema de recomendação de filmes, e usuário, que fornece a query real do usuário e o contexto.
3. Executando e exibindo respostas:
- A função
handle_user_query
retorna a resposta gerada por IA e o contexto do resultado da pesquisa usado.
Este é o resultado da execução da função:
1 Response: Based on the context provided, the best romantic movie to watch would be "Gorgeous". It revolves around a romantic girl who travels to Hong Kong in search of true love but unexpectedly falls for a kind-hearted professional fighter. 2 Source Information: 3 Title: Run, Plot: This action movie is filled with romance and adventure. As Abhisek fights for his life against the forces of crime and injustice, he meets Bhoomika, who captures his heart. 4 Title: China Girl, Plot: A modern day Romeo & Juliet story is told in New York when an Italian boy and a Chinese girl become lovers, causing a tragic conflict between ethnic gangs. 5 Title: Gorgeous, Plot: A romantic girl travels to Hong Kong in search of certain love but instead meets a kind-hearted professional fighter with whom she begins to fall for instead. 6 Title: Once a Thief, Plot: A romantic and action packed story of three best friends, a group of high end art thieves, who come into trouble when a love-triangle forms between them. 7 Title: House of Flying Daggers, Plot: A romantic police captain breaks a beautiful member of a rebel group out of prison to help her rejoin her fellows, but things are not what they seem.
O novo modelo de incorporação da OpenAI promete melhor desempenho em termos de recuperação em vários idiomas e precisão específica da tarefa, em comparação com os modelos de incorporação da OpenAI lançados anteriormente. Este artigo descreveu as etapas de implementação de um sistema RAG que aproveita o modelo de incorporação mais recente. Veja o repositório do GitHub para obter o código de implementação.
Em cenários práticos, incorporações de menor dimensão que podem manter um alto nível de captura semântica são benéficas para aplicativos de AI generativa, nos quais a relevância e a velocidade de recuperação são cruciais para a experiência e o valor do usuário.
Outras vantagens de dimensões de incorporação menores com alto desempenho são:
- Melhor experiência e relevância do usuário: a relevância da recuperação de informações é otimizada, impactando diretamente a experiência do usuário e o valor em aplicativos orientados por IA.
- Comparação com o modelo anterior: em contraste com o modelo ada v2 anterior, que fornecia apenas incorporações na dimensão 1536, os novos modelos oferecem mais flexibilidade. O text-embedding-3-large estende essa flexibilidade ainda mais com dimensões de 256, 1024 e 3072.
- Eficiência no processamento de dados: a disponibilidade de incorporações de menor dimensionamento ajuda no processamento de dados mais eficiente, reduzindo a carga computacional sem comprometer a qualidade dos resultados.
- Otimização de recursos: as incorporações de dimensões inferiores são otimizadas para recursos, benéficas para aplicativos executados com memória e capacidade de processamento limitadas e para reduzir os custos computacionais gerais.
Os próximos artigos abordarão tópicos avançados, como modelos de incorporação de benchmarking e tratamento de migração de incorporações.
Incorporação é uma técnica em que dados — como palavras, áudio ou imagens — são transformados em representações matemáticas, vetores de números reais em um espaço de alta dimensão conhecido como espaço vetorial. Esse processo permite que os modelos de IA entendam e processem dados complexos, capturando os relacionamentos semânticos subjacentes e as nuances contextuais.
Um armazenamento de vetor, como um banco de dados MongoDB Atlas, é um mecanismo de armazenamento para incorporações de vetor. Ele permite o armazenamento, a indexação e a recuperação eficientes de dados vetoriais, essenciais para tarefas como pesquisa semântica, sistemas de recomendações e outros aplicativos de IA.
Um sistema RAG usa incorporações para melhorar a resposta gerada por um grande modelo de linguagem (LLM) recuperando informações relevantes de um armazenamento de conhecimento com base em similaridades semânticas. A incorporação da query é comparada com a incorporação do armazenamento de conhecimento (registro do banco de dados) para buscar dados contextualmente semelhantes e relevantes, o que melhora a precisão e a relevância das respostas geradas pelo LLM para a query do usuário.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Relacionado
Notícias e anúncios
Análise analítica quase em tempo real alimentada por espelhamento no Microsoft Fabric para o MongoDB Atlas
Dec 10, 2024 | 4 min read
Tutorial
Parte #3: pesquise seus dados semanticamente com o Atlas Vector Search do MongoDB
Sep 18, 2024 | 6 min read