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 .

Saiba por que o MongoDB foi selecionado como um líder no 2024 Gartner_Magic Quadrupnt()
Desenvolvedor do MongoDB
Centro de desenvolvedores do MongoDB
chevron-right
Produtos
chevron-right
Atlas
chevron-right

Como criar um sistema RAG usando o Claude 3 Opus e o MongoDB

Richmond Alake15 min read • Published Aug 28, 2024 • Updated Aug 28, 2024
IAPandasPythonAtlas
SNIPPET
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty

Introdução

A Anthropic, fornecedora de grandes modelos de linguagem (LLMs), apresentou recentemente três modelos de última geração classificados na família de modelos Claude 3. Este tutorial utiliza um dos modelos Claude 3 em um sistema de geração aumentada de recuperação (RAG) alimentado pelo banco de dados vetoriais MongoDB. Antes de mergulhar na implementação do sistema de geração aumentada de recuperação, aqui está uma visão geral da versão mais recente da Anthropic:
Introdução da família de modelos Claude 3:
  • Modelos: a família é composta por Claude 3 Haiku, Claude 3 Sonnet e Claude 3 Opus, cada um projetado para atender a diferentes necessidades e aplicativos.
  • Benchmarks: os modelos Claude 3 estabeleceram novos padrões em cognição de IA, destacando-se em tarefas complexas, compreensão e raciocínio.
Funcionalidades e recursos:
  • Suporte multilíngue e multimodal: os modelos Claude 3 podem gerar código e texto em um idioma diferente do inglês. Os modelos também são multimodais, com a capacidade de entender imagens.
  • Janela de contexto longa: o modelo Claude 3 inicialmente tem uma janela de contexto de 200K tokens, com a capacidade de estender até um milhão de tokens para casos de uso específicos.
  • Recordação quase perfeita: os modelos demonstram funcionalidades excepcionais de recuperação ao analisar grandes quantidades de texto.
Considerações de design:
  • Atributos equilibrados: o desenvolvimento dos modelos Claude 3 foi orientado por três fatores principais: velocidade, inteligência e custo-benefício. Isso oferece aos consumidores uma variedade de modelos para aproveitar diferentes casos de uso que exigem a troca de um dos fatores por um aumento em outro.
Essa é uma atualização rápida sobre a versão mais recente do Anthropic. Embora o modelo Claude 3 tenha uma grande janela de contexto, um custo substancial ainda está associado a cada chamada que atinge os limites superiores da janela de contexto fornecida. O RAG é um padrão de design que utiliza uma fonte de conhecimento para fornecer informações adicionais aos LLMs combinando semanticamente a entrada da query com os pontos de dados dentro do repositório de conhecimento.
Este tutorial implementa um chatbot solicitado a assumir o papel de um analista de tecnologia de capital de risco. O chatbot é um sistema RAG ingênuo com uma coleção de artigos de notícias de tecnologia atuando como sua fonte de conhecimento.
O que esperar deste tutorial:
  • Obtenha insights sobre a construção de um sistema de geração aumentada de recuperação integrando os modelos Claude 3 ao MongoDB para aprimorar a precisão da resposta às queries.
  • Siga um tutorial abrangente sobre como configurar seu ambiente de desenvolvimento, da instalação das bibliotecas necessárias até a configuração de um MongoDB database.
  • Aprenda métodos eficientes de tratamento de dados, incluindo a criação de índices de pesquisa vetorial e a preparação de dados para ingestão e processamento de query.
  • Entenda como empregar modelos Claude 3 dentro do sistema RAG para gerar respostas precisas com base em informações contextuais recuperadas do banco de dados.
Todo o código de implementação apresentado neste tutorial está localizado neste repositório do GitHub

Etapa 1: Variáveis de ambiente, instalação da biblioteca, carregamento de dados e preparação

Esta seção aborda as etapas realizadas para preparar a fonte do ambiente de desenvolvimento e limpar os dados utilizados como base de conhecimento para o chatbot de analista técnico de capital de risco.
Definir variáveis de ambiente:
1import os
2
3os.environ["ANTHROPIC_API_KEY"] = ""
4ANTHROPIC_API_KEY = os.environ.get("ANTHROPIC_API_KEY")
5
6os.environ["VOYAGE_API_KEY"] = ""
7VOYAGE_API_KEY = os.environ.get("VOYAGE_API_KEY")
8
9os.environ["HF_TOKEN"] = ""
O seguinte código instala todas as bibliotecas necessárias:
!pip install --quiet pymongo datasets pandas anthropic voyageai
Abaixo estão breves explicações das ferramentas e bibliotecas utilizadas no código de implementação:
  • anthropic: Esta é a biblioteca Python oficial da Anthropic que permite o acesso a modelos de linguagem de última geração. Essa biblioteca fornece acesso aos modelos da família Claude 3, que podem compreender texto e imagens.
  • 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 biblioteca de ciência de dados fornece estruturas de dados robustas e métodos para manipulação, processamento e análise de dados.
  • voyageai: esta é a biblioteca cliente oficial do Python para acessar os modelos de incorporação do Voyage.
  • pyMongo: o PyMongo é um conjunto de ferramentas Python para MongoDB. Ele permite interações com um banco de dados MongoDB.
Ferramentas como Pyenv e Conda podem criar ambientes de desenvolvimento isolados para separar versões de pacotes e dependências em seus projetos. Nesses ambientes, você pode instalar versões específicas de bibliotecas, garantindo que cada projeto opere com seu próprio conjunto de dependências sem interferência. A apresentação do código de implementação neste tutorial é melhor executada em um ambiente Colab ou Notebook.
Após importar as bibliotecas necessárias, as etapas subsequentes nesta seção envolvem o carregamento do conjunto de dados que serve como base de conhecimento fundamental para o sistema RAG e o chatbot. Este conjunto de dados contém uma coleção cuidadosamente escolhida de artigos de notícias de tecnologia do HackerNoon, complementares com uma coluna adicional de incorporações. Essas incorporações foram criadas processando as descrições de cada artigo no conjunto de dados. As incorporações para este conjunto de dados foram geradas usando o modelo de incorporação do OpenAI. Eles serão removidos e substituídos usando o modelo de incorporação da VoyageAI: voyage-large-2.
O conjunto de dadoskey-news-embedding contém mais de um milhão de pontos de dados, espelhando a escala de dados normalmente encontrada em um ambiente de produção. No entanto, somente os pontos de dados500 são utilizados para este aplicativo específico, mas fique à vontade para aumentar o número de pontos de dados.
1from datasets import load_dataset
2import pandas as pd
3
4# Make sure you have an Hugging Face token(HF_TOKEN) in your development environment before running the code below
5# How to get a token: https://huggingface.co/docs/hub/en/security-tokens
6
7# https://huggingface.co/datasets/MongoDB/tech-news-embeddings
8dataset = load_dataset("MongoDB/tech-news-embeddings", split="train", streaming=True)
9combined_df = dataset.take(500)
10
11# Convert the dataset to a pandas dataframe
12combined_df = pd.DataFrame(combined_df)
O trecho de código acima executa as seguintes etapas:
  • Importa as bibliotecas necessárias: 'datasets' para carregar o conjunto de dados e 'pandas' para manipulação de dados.
  • Carrega o conjunto de dados "MongoDB/key-news-embeddings" do Abraçando o Face, usando a divisão "trem" e ativando o modo de streaming.
  • Obtém as primeiras 500 amostras do conjunto de dados transmitido usando o método "take".
  • Converte as amostras selecionadas em um DataFrame de Pandas para facilitar a manipulação e análise.
Esse processo recupera efetivamente um subconjunto do conjunto de dados de incorporações de notícias de tecnologia e o prepara para processamento ou análise posterior usando andas. Algo a observar é que a opção de streaming permite o manuseio eficiente de grandes conjuntos de dados, carregando dados em blocos em vez de todos de uma vez, o que é particularmente útil ao trabalhar com extensos conjuntos de dados e ambientes com recursos de computação limitados.
Como fase final na preparação de dados, o trecho de código abaixo mostra a etapa para remover a coluna_id do conjunto de dados agrupado, pois ela é desnecessária para as etapas subsequentes neste tutorial. Além disso, os dados dentro da coluna de incorporação para cada ponto de dados são removidos, pois planejamos gerar novas incorporações usando o modelo de incorporação VoyageAI.
1# Remove the _id coloum from the intital dataset
2combined_df = combined_df.drop(columns=['_id'])
3
4# Convert each numpy array in the 'embedding' column to a normal Python list
5combined_df['embedding'] = combined_df['embedding'].apply(lambda x: x.tolist())

Etapa 2: Incorporando geração

Depois de preparar nosso conjunto de dados inicial, a próxima etapa crucial é gerar incorporações para nossos dados de texto. Essas incorporações nos permitirão realizar pesquisas vetoriais habilitadas pelo MongoDB posteriormente.
1import voyageai
2
3vo = voyageai.Client(api_key=VOYAGE_API_KEY)
4
5def get_embedding(text: str) -> list[float]:
6 if not text.strip():
7 print("Attempted to get embedding for empty text.")
8 return []
9
10 embedding = vo.embed(text, model="voyage-large-2", input_type="document")
11
12 return embedding.embeddings[0]
13
14combined_df["embedding"] = combined_df["description"].apply(get_embedding)
15
16combined_df.head()
Este trecho de código acima executa algumas operações importantes:
  1. Importamos a biblioteca VoyageAI e inicializamos um cliente com nossa chave de API.
  2. Definimos uma função get_embedding que:
  • Verifica se há texto de entrada vazio
  • Usa o cliente VoyageAI para gerar uma incorporação usando o modelo "voyage-large-2"
  • Retorna a incorporação gerada
  1. Aplicamos esta função à coluna "descrição" do nosso DataFrame, criando uma nova coluna de "incorporação".
  2. Finalmente, exibimos as primeiras linhas do nosso DataFrame atualizado para verificar a nova coluna.
Esse processo é essencial para preparar nossos dados para os recursos de pesquisa vetorial do Atlas. Ao gerar incorporações de alta qualidade para cada descrição, estamos capturando o significado semântica de nossos dados de texto em um formato otimizado para operações vetoriais. Isso permitirá pesquisas de similaridade mais precisas e eficientes em nosso banco de dados vetorial.
Lembre-se de que a escolha do modelo de incorporação pode afetar significativamente a qualidade dos resultados do Atlas Search. O modelo VoyageAI usado aqui é conhecido por seus recursos avançados de NLP, que devem fornecer incorporações robustas para nosso caso de uso.
Na próxima seção, veremos como usar essas incorporações para realizar pesquisas vetoriais no MongoDB.

Etapa 3: criação de banco de dados e coleção

Uma abordagem para compor uma pilha de AI com foco em lidar com grandes volumes de dados e reduzir o isolamento de dados é utilizar o mesmo provedor de banco de dados para seus dados operacionais e vetoriais. 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 com eficiência queries e recupera incorporações vetoriais.
Para criar um novo MongoDB database, configure um cluster de banco de dados:
  1. Registre-se para obter uma conta gratuita do MongoDB Atlas ou os usuários existentes podem entrar no MongoDB Atlas.
  2. Selecione a opção "Database" no painel esquerdo, que navegará até a página Implantação de banco de dados com uma especificação de implantação de qualquer cluster existente. Crie um novo cluster de banco de dados clicando no botão +Criar.
  3. Para obter assistência com a configuração do cluster de banco de dados e a obtenção do identificador exclusivo de recursos (URI), consulte nosso guia para configurar um cluster MongoDB e obter sua string de conexão.
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.
Neste ponto, você criou um cluster de banco de dados, obteve uma string de conexão com o banco de dados e colocou uma referência à string de conexão no ambiente de desenvolvimento. A próxima etapa é criar um banco de dados e coletar dados por meio da interface de usuário do MongoDB Atlas.
Depois de criar um cluster, navegue até a página do cluster e crie um banco de dados e uma coleção dentro do cluster MongoDB Atlas clicando em + Criar banco de dados. O banco de dados será chamado knowledge e a coleção será chamada research_papers.
Criação de banco de dados e coleções

Etapa 3: criação do índice de pesquisa vetorial

Neste ponto, você criou um cluster, um banco de dados e uma coleção.
As etapas nesta seção são cruciais para garantir que um Atlas Search vetorial possa ser realizado usando as queries inseridas no chatbot e pesquisadas nos registros da collection hacker_noon_sync_news. O objetivo desta etapa é criar um índice vetorial do Atlas Search. Para isso, consulte o guia oficial de criação de índice do Atlas Search.
Na criação de um índice de pesquisa vetorial usando o editor JSON no MongoDB Atlas, certifique-se de que seu índice de pesquisa vetorial seja nomeado como vector_index e que a definição do índice de pesquisa vetorial seja a seguinte:
1{
2 "fields": [{
3 "numDimensions": 256,
4 "path": "embedding",
5 "similarity": "cosine",
6 "type": "vector"
7 }]
8}

Etapa 4: ingestão de dados

Para ingerir dados no MongoDB database criado nas etapas anteriores, as seguintes operações devem ser realizadas:
  • Conecte-se ao banco de dados e à coleção.
  • Limpe a coleção de quaisquer registros existentes.
  • Converta o Pandas DataFrame do conjunto de dados em dicionários antes da ingestão.
  • Ignore dicionários no MongoDB usando uma operação em lote.
1import pymongo
2
3def get_mongo_client(mongo_uri):
4 """Establish and validate connection to the MongoDB."""
5
6 client = pymongo.MongoClient(mongo_uri, appname="devrel.showcase.anthropic_rag.python")
7
8 # Validate the connection
9 ping_result = client.admin.command('ping')
10 if ping_result.get('ok') == 1.0:
11 # Connection successful
12 print("Connection to MongoDB successful")
13 return client
14 else:
15 print("Connection to MongoDB failed")
16 return None
17
18mongo_uri = os.environ["MONGO_URI"]
19
20if not mongo_uri:
21 print("MONGO_URI not set in environment variables")
22
23mongo_client = get_mongo_client(mongo_uri)
24
25DB_NAME = "knowledge"
26COLLECTION_NAME = "research_papers"
27
28db = mongo_client.get_database(DB_NAME)
29collection = db.get_collection(COLLECTION_NAME)
O trecho de código acima usa o PyMongo para criar um objeto de cliente MongoDB, representando a conexão com o cluster e permitindo o acesso aos seus bancos de dados e coleções. As variáveis DB_NAME e COLLECTION_NAME recebem os nomes definidos para o banco de dados e a coleção na etapa anterior. Se você tiver escolhido nomes de banco de dados e coleção diferentes, certifique-se de que eles estejam refletidos no código de implementação.
O trecho de código abaixo garante que a coleção de banco de dados atual esteja vazia executando a operaçãodelete_many() na coleção.
1# To ensure we are working with a fresh collection
2# delete any existing records in the collection
3collection.delete_many({})
A ingestão de dados em uma coleção do MongoDB a partir de um DataFrame do pandas é um processo simples que pode ser realizado com eficiência convertendo o DataFrame em dicionários e, em seguida, utilizando o método insert_many na coleção para passar os registros do conjunto de dados convertidos.
1# Data Ingestion
2combined_df_json = combined_df.to_dict(orient='records')
3collection.insert_many(combined_df_json)
O processo de ingestão de dados deve levar menos de um minuto e, quando a ingestão de dados é concluída, os IDs dos registros correspondentes do documento ingerido são retornados.
Esta seção mostra a criação de uma função personalizada de Atlas Search que aceita uma query do usuário, que corresponde às entradas do chatbot. A função também usa um segundo parâmetro, collection, que aponta para a coleção de banco de dados que contém registros nos quais a pesquisa vetorial deve ser conduzida.
A função vector_search produz um resultado de pesquisa vetorial derivado de uma série de operações descritas em um pipeline de agregação do MongoDB. Esse pipeline inclui os estágios $vectorSearch e $project e executa queries com base nas incorporações vetoriais das queries do usuário. Em seguida, ele formata os resultados, omitindo quaisquer atributos de registro desnecessários para os processos subsequentes.
1def 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": "embedding",
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 "embedding": 0, # Exclude the embedding field
34 "score": {
35 "$meta": "vectorSearchScore" # Include the search score
36 }
37 }
38 }
39 ]
40
41 # Execute the search
42 results = collection.aggregate(pipeline)
43 return list(results)
O trecho de código acima realiza as seguintes operações para permitir a pesquisa semântica de artigos de notícias de tecnologia:
  1. Defina a função vector_search que recebe a string de query de um usuário e uma coleção do MongoDB como entradas e retorna uma lista de documentos que correspondem à query com base na pesquisa de similaridade de vetores.
  2. Gere uma incorporação para a query do usuário chamando a função definida anteriormente, get_embedding, que converte a string de query em uma representação vetorial.
  3. Construa um pipeline para a função agregada do MongoDB, incorporando dois estágios principais: $vectorSearch e $project.
  4. O estágio$vectorSearch executa a pesquisa vetorial real. O campo de índice especifica o índice vetorial a ser utilizado para a pesquisa vetorial, e isso deve corresponder ao nome inserido na definição do índice de pesquisa vetorial nas etapas anteriores. O campo queryVector usa a representação de incorporação da query de uso. O campo de caminho corresponde ao campo de documento que contém as incorporações. O numCandidates especifica o número de documentos de candidatos a serem considerados e o limite do número de resultados a serem retornados.
  5. O estágio $project formata os resultados para excluir o campo _id e embedding.
  6. O agregado executa o pipeline definido para obter os resultados da pesquisa vetorial. A operação final converte o cursor retornado do banco de dados em uma lista.

Etapa 6: tratamento de queries de usuários com modelos Claude 3

A seção final do tutorial descreve a sequência de operações realizadas da seguinte forma:
  • Aceite uma query de usuário na forma de uma string.
  • Utilize o modelo de incorporação VoyageAI para gerar incorporações para a query do usuário.
  • Carregue o Anthropic Claude 3— especificamente, o modelo 'claude-3-opus-20240229'— para servir como modelo base, que é o grande modelo de linguagem para o sistema RAG.
  • Execute uma pesquisa vetorial usando as incorporações da query do usuário para buscar informações relevantes da base de conhecimento, o que fornece contexto adicional para o modelo de base.
  • Envie a query do usuário e as informações adicionais coletadas para o modelo base para gerar uma resposta.
Uma observação importante é que as dimensões da incorporação da query do usuário correspondem às dimensões definidas na definição do índice de pesquisa vetorial no MongoDB Atlas.
A próxima etapa desta seção é importar a biblioteca do Anthropic e carregar o cliente para acessar os métodos do Anthropic para lidar com mensagens e acessar os modelos do Claude. Certifique-se de obter uma chave de API do Anthropic localizada na página de configurações no website oficial da Anthropic.
1import anthropic
2client = anthropic.Client(api_key=userdata.get("ANTHROPIC_API_KEY"))
O trecho de código a seguir apresenta a função handle_user_query, que tem duas finalidades principais: Ela aproveita uma função de pesquisa vetorial personalizada definida anteriormente para consultar e recuperar informações relevantes de um MongoDB database e utiliza a API Anthropic por meio de um objeto cliente para usar um dos modelos Claude 3 para a geração de respostas a consultas.
1def 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 += (
8 f"Title: {result.get('title', 'N/A')}, "
9 f"Company Name: {result.get('companyName', 'N/A')}, "
10 f"Company URL: {result.get('companyUrl', 'N/A')}, "
11 f"Date Published: {result.get('published_at', 'N/A')}, "
12 f"Article URL: {result.get('url', 'N/A')}, "
13 f"Description: {result.get('description', 'N/A')}, \n"
14 )
15
16 response = client.messages.create(
17 model="claude-3-opus-20240229",
18 max_tokens=1024,
19 system="You are Venture Capital Tech Analyst with access to some tech company articles and information. Use the information you are given to provide advice.",
20 messages=[
21 {"role": "user", "content": "Answer this user query: " + query + " with the following context: " + search_result}
22 ]
23 )
24
25 return (response.content[0].text), search_result
Essa função começa executando a pesquisa vetorial em relação à coleção MongoDB especificada com base na query de entrada do usuário. Em seguida, ela passa a formatar as informações recuperadas para processamento posterior. Posteriormente, a função invoca a API da Anthropic, direcionando a solicitação para um modelo Claude 3 específico.
Abaixo está uma descrição mais detalhada das operações no trecho de código acima:
  1. Execução de pesquisa vetorial: A função começa chamando vector_search com a query do usuário e uma coleção especificada como argumentos. Isso realiza uma pesquisa na coleção, aproveitando embeddings vetoriais para encontrar informações relevantes relacionadas à query.
  2. Compilar resultados da pesquisa: search_result é inicializado como uma string vazia para agregar informações da pesquisa. Os resultados da pesquisa são compilados iterando sobre os resultados retornados pela vector_search função e formatam os detalhes de cada item (título, nome da empresa, URL, data de publicação, URL do artigo e descrição) em uma string legível por humanos, anexando essas informações a search_result com um caractere de nova linha \n no final de cada entrada.
  3. Gerar resposta usando o cliente Anthropic: Em seguida, a função constrói uma solicitação para a API Anthropic (por meio de um objeto cliente, presumivelmente uma instância da classe cliente Anthropic criada anteriormente). Ela especifica:
    O modelo a ser usado ("claude-3-opus-20240229"), que indica uma versão específica do modelo Claude 3.
    O limite máximo de token para a resposta gerada (max_tokens=1024).
    Uma descrição do sistema orienta o modelo a se comportar como um "Analista de Tecnologia de Venture Capital" com acesso a artigos e informações de empresas de tecnologia, usando isso como contexto para aconselhar.
    A mensagem real para o modelo processar, que combina a query do usuário com os resultados de pesquisa agregados como contexto.
  4. Retornar a resposta gerada e os resultados da pesquisa: ele extrai e retorna o texto da resposta do primeiro item no conteúdo da resposta junto com os resultados da pesquisa compilados.
1# Conduct query with retrieval of sources
2query = "Give me the best tech stock to invest in and tell me why"
3response, source_information = handle_user_query(query, collection)
4
5print(f"Response: {response}")
6print(f"Source Information: \\n{source_information}")
A etapa final deste tutorial é inicializar a query, passá-la para a funçãohandle_user_query e imprimir a resposta retornada.
  1. Inicializar a query: A variável query recebe um valor de string contendo a solicitação do usuário: "Dê-me as melhores ações de tecnologia para investir e diga-me por quê." Isso serve como entrada para a handle_user_query função.
  2. Execute handle_user_query a função: a função usa dois parâmetros — a query do usuário e uma referência à coleção da qual as informações serão recuperadas. Ela realiza uma pesquisa vetorial para encontrar documentos relevantes na coleção e formata os resultados para uso posterior. Em seguida, consulta o modelo Anthropic Claude 3, fornecendo-lhe a query e os resultados da pesquisa formatados como contexto para gerar uma resposta informada.
  3. Recupere as informações da resposta e da fonte: a função retorna dois dados: resposta e source_information. A resposta contém a resposta gerada pelo modelo para a query do usuário, enquanto source_information inclui dados detalhados da coleção usados para informar a resposta.
  4. Exibir resultados: Finalmente, o código imprime a resposta do modelo Claude 3, juntamente com as informações de origem que contribuíram para essa resposta.
Resposta do Claude 3 Opus
Os modelos Claude 3 têm o que parecem ser impressionantes capacidades de raciocínio. A partir da resposta na captura de tela, ele é capaz de considerar a linguagem expressiva como um fator em sua tomada de decisão e também fornecer uma abordagem estruturada para sua resposta.
O mais impressionante é que explica por que outras opções nos resultados da pesquisa não são candidatas à seleção final. E se você notar, a data também foi levada em consideração.
Logicamente, isso não substituirá nenhum analista de tecnologia humano em breve, mas com uma base de conhecimento mais ampla e dados em tempo real, isso poderá rapidamente se tornar um sistema co-piloto para analistas de capital de risco.
Lembre-se de que a resposta da Opus não é um conselho financeiro e é mostrada apenas para fins ilustrativos.

Conclusão

Este tutorial apresentou as etapas essenciais para configurar seu ambiente de desenvolvimento, preparar seu conjunto de dados e integrar modelos de linguagem de última geração com um sistema de banco de dados avançado.
Ao aproveitar os pontos fortes exclusivos dos modelos Claude 3 e do MongoDB, demonstramos como criar um sistema RAG que não apenas responde com precisão às queries dos usuários, mas também compreende o contexto em profundidade. O desempenho impressionante do sistema RAG é resultado do conhecimento paramétrico da Opus e das funcionalidades de correspondência semântica facilitadas pela pesquisa vetorial.
A criação de um RAG com os modelos mais recentes do Claude 3 e do MongoDB configura uma infraestrutura de IA eficiente. Ele oferece redução de custos e baixa latência ao combinar banco de dados operacional e banco de dados vetorial em uma solução. As funcionalidades do sistema nativo RAG apresentados neste tutorial podem ser estendidas para fazer o seguinte:
  • Obtenha notícias em tempo real sobre a empresa retornadas dos resultados da pesquisa.
  • Obtenha informações adicionais extraindo texto dos URLs fornecidos nos resultados de pesquisa associados.
  • Armazene metadados adicionais antes da ingestão de dados para cada ponto de dados.
Algumas das extensões de funcionalidade propostas podem ser obtidas utilizando capacidades de chamada de função da Anthropic ou aproveitando APIs de pesquisa. A principal conclusão é que, se você pretende desenvolver um chatbot, um sistema de recomendação ou qualquer aplicativo que exija respostas diferenciadas de AI, os princípios e técnicas descritos aqui servirão como um ponto de partida valioso.
Quer aproveitar outro modelo de última geração para seu sistema RAG? Confira nosso artigo que usa o Gemma do Google juntamente com modelos de incorporação de código aberto fornecidos pelo Hugging Face.

Perguntas frequentes

1. O que são os 3 modelos Claude e como eles aprimoram um sistema RAG?
Os modelos Claude 3 (Haiku, Sonnet, Opus) são grandes modelos de linguagem de última geração desenvolvidos pela Anthropic. Eles oferecem recursos avançados como suporte multilíngue, multimodalidade e longas janelas de contexto de até um milhão de tokens. Esses modelos são integrados aos sistemas RAG para aproveitar sua capacidade de entender e gerar texto, aprimorando a precisão e a compreensão da resposta do sistema.
2. Por que o MongoDB é escolhido para um sistema RAG com tecnologia do Claude 3?
O MongoDB é usado por suas capacidades duplas como banco de dados operacional e vetorial. Ele armazena, consulta e recupera com eficiência incorporações vetoriais, tornando-o ideal para gerenciar os extensos volumes de dados e as demandas de processamento em tempo real de aplicativos de IA, como um RAG.
3. Como funciona a função de pesquisa vetorial dentro do sistema RAG?
A função de pesquisa vetorial no sistema RAG conduz uma pesquisa semântica em uma coleção do MongoDB usando as incorporações vetoriais das queries do usuário. Ela se baseia em um pipeline de agregação do MongoDB, incluindo os estágios $vectorSearch e $project, para encontrar e formatar os documentos mais relevantes com base na semelhança de queries.
4. Qual é a importância das incorporações de dados no sistema RAG?
As incorporações de dados são cruciais para combinar o conteúdo semântico das queries do usuário com o conhecimento armazenado no banco de dados. Elas transformam o texto em um espaço vetorial, permitindo que o sistema RAG realize pesquisas vetoriais e recupere informações contextualmente relevantes para informar as respostas do modelo.
5. Como o sistema RAG lida com as queries do usuário com os modelos Claude 3?
O sistema RAG processa queries de usuários gerando incorporações usando um modelo de incorporação (por exemplo, "voyage-large-2" do VoyageAI) e conduzindo um Atlas Search vetorial para buscar informações relevantes. Essas informações e a query do usuário são passadas para um modelo de Class 3 , que gera uma resposta detalhada e informada com base no contexto combinado.
Principais comentários nos fóruns
Avatar do Comentarista do Fórum
Mboh_Bless_Pearl_NchongbohMboh Bless Pearl Nchongboh2 trimestres atrás

Na verdade, acha que isso é fácil e direto ao ponto

Veja mais nos fóruns

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

Avaliação RAG: detectando alucinações com Patronus AI e MongoDB


Aug 15, 2024 | 11 min read
Tutorial

Como construir um gráfico animado da linha do tempo com MongoDB Charts Embedding SDK


Dec 13, 2023 | 6 min read
Artigo

A relevância do Atlas Search explicada


Aug 14, 2024 | 13 min read
Tutorial

Analisando analyzers para criar o índice correto do Atlas Search para seu aplicativo


Aug 28, 2024 | 8 min read
Sumário
  • Introdução