Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

GraphRAG com MongoDB e LangChain

Este tutorial demonstra como implementar o GraphRAG usando MongoDB Atlas e LangChain. O GraphRAG é uma abordagem alternativa ao RAG tradicional que estrutura seus dados como um gráfico de conhecimento em vez de incorporações vetoriais. Quando combinada com um LLM, essa abordagem permite a recuperação com reconhecimento de relacionamento e o argumento com vários saltos.

O GraphRAG é uma abordagem alternativa ao RAG tradicional que estrutura os dados como um gráfico de conhecimento de entidades e seus relacionamentos, em vez de incorporações vetoriais. Enquanto o RAG baseado em vetor encontra documentos semanticamente semelhantes à query, o GraphRAG localiza entidades conectadas à query e atravessa os relacionamentos no grafo para recuperar informações relevantes.

Essa abordagem é particularmente útil para responder a perguntas baseadas em relacionamento, como "Qual é a conexão entre a Empresa A e a Empresa B?" ou "Quem é o gerente da Pessoa X?".

MongoDBGraphStore é um componente na integração MongoDB MongoDB que permite implementar GraphRAG armazenando entidades (nós) e seus relacionamentos (edge) em uma coleção MongoDB . Este componente armazena cada entidade como um documento com campos de relacionamento que fazem referência a outros documentos em sua coleção. Ele executa queries usando o $graphLookup estágio de agregação.

Para concluir este tutorial, você deve ter o seguinte:

  • Um dos seguintes tipos de cluster MongoDB :

    • Um cluster do Atlas executando a versão 6.0.11 do MongoDB, 7.0.2, ou posterior. Certifique-se de que seu endereço IP esteja incluído na lista de acesso do seu projeto Atlas.

    • Um sistema local do Atlas criado usando Python e Docker. Instale atlas-local-lib-py opip install atlas-local-lib-py () para criar e gerenciar implantações locais programaticamente. Para saber mais, consulte o repositório atlas-local-lib-py .

    • Um cluster da MongoDB Community com o Search e o Vector Search instalados.

  • Uma chave de API da OpenAI. Você deve ter uma conta da OpenAI com créditos disponíveis para solicitações de API. Para saber mais sobre como registrar uma conta OpenAI, consulte o site da API OpenAI.

  • Um ambiente para executar notebooks Python interativos, como o VS Code ou Colab.

Configure o ambiente para este tutorial. Crie um bloco de anotações Python interativo salvando um arquivo com a extensão .ipynb. Este bloco de anotações permite que você execute trechos de código Python individualmente, e você o usará para executar o código neste tutorial.

Para configurar seu ambiente de bloco de anotações:

1

Execute o seguinte comando:

pip install --quiet --upgrade pymongo langchain_community wikipedia langchain_openai langchain_mongodb
2

Copie o exemplo de código a seguir, substitua as variáveis pelos seus próprios valores e execute o código:

<api-key>

Sua chave de API do OpenAI

<connection-string>

string de conexão SRV do cluster MongoDB

import os
os.environ["OPENAI_API_KEY"] = "<api-key>"
MONGODB_URI = "<connection-string>"
DB_NAME = "langchain_db" # MongoDB database to store the knowledge graph
COLLECTION = "wikipedia" # MongoDB collection to store the knowledge graph

Observação

Substitua <connection-string> pela string de conexão do seu cluster do Atlas ou da implantação local do Atlas.

Sua string de conexão deve usar o seguinte formato:

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

Para saber mais, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.

Sua string de conexão deve usar o seguinte formato:

mongodb://localhost:<port-number>/?directConnection=true

Para saber mais, consulte Connection strings.

Esta seção demonstra como usar o MongoDB como um gráfico de conhecimento para o GraphRAG. Cole e execute o seguinte código no seu bloco de notas:

1

Inicialize o LLM usando o método init_chat_model do LangChain:

from langchain_openai import OpenAI
from langchain.chat_models import init_chat_model
chat_model = init_chat_model("gpt-4o", model_provider="openai", temperature=0)
2

Neste tutorial, você utilizará dados publicamente acessíveis da Wikipedia como fonte de dados. Para carregar os dados de amostra, execute o seguinte snippet de código. Ele executa as seguintes etapas:

  • Recupera um subconjunto de páginas da Wikipedia, filtradas pela query Sherlock Holmes.

  • Usa um divisor de texto para dividir os dados em documentos menores.

  • Especifica os parâmetros de parte, que determinam o número de caracteres em cada documento e o número de caracteres que devem se sobrepor entre dois documentos consecutivos.

from langchain_community.document_loaders import WikipediaLoader
from langchain_text_splitters import TokenTextSplitter
wikipedia_pages = WikipediaLoader(query="Sherlock Holmes", load_max_docs=3).load()
text_splitter = TokenTextSplitter(chunk_size=1024, chunk_overlap=0)
wikipedia_docs = text_splitter.split_documents(wikipedia_pages)
3

Use a classe MongoDBGraphStore para construir o grafo de conhecimento e carregá-lo em seu cluster MongoDB :

from langchain_mongodb.graphrag.graph import MongoDBGraphStore
graph_store = MongoDBGraphStore.from_connection_string(
connection_string = MONGODB_URI,
database_name = DB_NAME,
collection_name = COLLECTION,
entity_extraction_model = chat_model
)
4

Adicione documentos à coleção usando o método add_documents. Quando você adiciona novos documentos, este método localiza entidades existentes e as atualiza ou cria novas, caso não existam.

Esta etapa pode levar alguns minutos. Você pode ignorar quaisquer avisos que apareçam na saída.

graph_store.add_documents(wikipedia_docs)

Depois de executar o código de exemplo, você pode visualizar como seus dados são armazenados navegando até a coleção documents.wikipedia na IU do Atlas.

5

Você pode visualizar a estrutura do grafo usando as bibliotecas networkx e pyvis. Para obter um exemplo, consulte o notebook.

Invoque o grafo de conhecimento para responder a perguntas. Use o método chat_response para invocar o gráfico de conhecimento. Ele recupera documentos relevantes do MongoDB e, em seguida, usa o modelo de chat que você especificou para gerar uma resposta em linguagem natural.

Especificamente, o modelo de chat extrai entidades da query, o MongoDB atravessa o grafo de conhecimento para localizar entidades conectadas usando o estágio, e as entidades mais próximas e seus relacionamentos são enviados com a query de volta ao modelo de chat para gerar uma $graphLookup resposta.

query = "Who inspired Sherlock Holmes?"
answer = graph_store.chat_response(query)
print(answer.content)
Sherlock Holmes was inspired by Dr. Joseph Bell, a physician known for his keen observation and deductive reasoning, as acknowledged by Sir Arthur Conan Doyle, Holmes' creator.

Assista a este vídeo para ver uma demonstração do código utilizado neste tutorial.

Duração: 2 minutos