Você pode integrar o MongoDB ao LangGraph para criar agentes de IA e aplicativos avançados de RAG. Esta página fornece uma visão geral da integração do MongoDB LangGraph e como você pode usar o MongoDB para persistência, memória e recuperação de estado do agente em seus fluxos de trabalho do MongoDB.
Para criar um agente de IA de amostra que use todos os componentes desta página, consulte o tutorial.
Observação
Para a integração do JavaScript, consulte LangGraph JS/TS.
Plano de fundo
LangGraph é um framework especializado dentro do ecossistema LangChain, projetado para desenvolver agentes de IA e fluxos de trabalho complexos de múltiplos agentes. Grafos são os componentes centrais do LangGraph, representando o fluxo de trabalho do seu agente. A integração do MongoDB LangGraph habilita as seguintes funcionalidades:
MongoDB LangGraph Checkpointer: você pode persistir o estado de seus agentes LangGraph no MongoDB, fornecendo memória de curto prazo.
Armazenamento LangGraph do MongoDB: você pode armazenar e recuperar memória importantes para seus agentes LangGraph em uma coleção MongoDB, fornecendo memória de longo prazo.
Ferramentas de recuperação: você pode usar a integração do MongoDB LangChain para criar rapidamente ferramentas de recuperação para seus fluxos de trabalho LangGraph.
A integração de seus aplicativos LangGraph com o MongoDB permite consolidar os recursos de recuperação e a memória do agente em um único banco de dados, simplificando sua arquitetura e reduzindo a complexidade operacional.
MongoDB LangGraph Checkpointer (memória de curto prazo)
O MongoDB LangGraph Checkpointer permite que você persista o estado do seu agente no MongoDB para implementar a memória de curto prazo. Esse recurso habilita humanos no loop, memória, viagem no tempo e tolerância a falhas para seus agentes LangGraph.
Para instalar o pacote para este componente:
pip install langgraph-checkpoint-mongodb
Uso
from langgraph.checkpoint.mongodb import MongoDBSaver from pymongo import MongoClient # Connect to your MongoDB cluster client = MongoClient("<connection-string>") # Initialize the MongoDB checkpointer checkpointer = MongoDBSaver(client) # Instantiate the graph with the checkpointer app = graph.compile(checkpointer=checkpointer)
Armazenamento MongoDB LangGraph (memória de longo prazo)
O MongoDB LangGraph Store permite armazenar e recuperar memória em uma coleção do MongoDB , o que habilita a memória de longo prazo para seus agentes LangGraph. Isso permite que você crie agentes que podem se lembrar de interações passadas e usar essas informações para informar decisões futuras.
Para instalar o pacote para este componente:
pip install langgraph-store-mongodb
Uso
from langgraph.store.mongodb import MongoDBStore, create_vector_index_config from langchain_voyageai import VoyageAIEmbeddings # Optional vector search index configuration for the memory collection index_config = create_vector_index_config( embed = VoyageAIEmbeddings(), dims = <dimensions>, fields = ["<field-name>"], filters = ["<filter-field-name>", ...] # Optional list of fields that can filtered during search # Other fields... ) # Store memories in MongoDB collection with MongoDBStore.from_conn_string( conn_string=MONGODB_URI, db_name="<database-name>", collection_name="<collection-name>", index_config=index_config # If specified, automatically embeds and indexes the field value ) as store: store.put( namespace=("user", "memories"), # Namespace for the memories key=f"memory_{hash(content)}", # Unique identifier for each memory value={"content": content} # Document data that contains the memory content ) # Retrieve memories from MongoDB collection with MongoDBStore.from_conn_string( conn_string=MONGODB_URI, db_name="<database-name>", collection_name="<collection-name>", index_config=index_config # If specified, uses vector search to retrieve memories. Otherwise, uses metadata filtering ) as store: results = store.search( ("user", "memories"), query="<query-text">, limit=3 ) for result in results: print(result.value) # To delete memories, use store.delete(namespace, key) # To batch operations, use store.batch(ops)
Parâmetro | necessidade | Descrição | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Obrigatório | Especifique a string de conexão para seu cluster MongoDB ou implantação local do Atlas . | |||||||||
| Obrigatório | O nome do banco de dados a ser usado. Ele será criado se não existir. O padrão é "checkpointing_db". | |||||||||
| Obrigatório | O nome da collection a ser usada. Ele será criado se não existir. O padrão é "armazenamento persistente". | |||||||||
| Opcional | Configuração TTL (Time To Live) para a loja. Isso configura a expiração automática de documentos no armazenamento. Por exemplo:
| |||||||||
| Opcional | Configuração do índice de pesquisa vetorial. Por exemplo:
|
Métodos
Método | Descrição |
---|---|
| Armazena um único item na loja com o namespace, chave e valor especificados. |
| Procura itens dentro de um determinado O método
|
| Recupera um único item da loja. Opcionalmente, você pode atualizar o TTL do item após o acesso. |
| Exclui um único item do armazenamento identificado por seu namespace e chave. |
| Lista namespaces exclusivos na loja. Permite a filtragem por um prefixo de caminho, sufixo e profundidade do documento . |
| Executa uma sequência de operações ( |
| Método que prepara uma lista de campos de filtro para indexação do Atlas Vector Search . |
Observação
Ferramentas de recuperação
Você pode usar perfeitamente os recuperadores do LangChain como ferramentas em seu fluxo de trabalho do LangGraph para recuperar dados relevantes do MongoDB.
A integração do MongoDB LangChain suporta nativamente pesquisa de texto completo, pesquisa vetorial, pesquisa híbrida e recuperação de documentos pai. Para obter uma lista completa dos métodos de recuperação, consulte Recuperadores do MongoDB LangChain.
Uso
Para criar uma ferramenta básica de recuperação com a Atlas Vector Search e LangChain:
from langchain.tools.retriever import create_retriever_tool from langchain_mongodb.vectorstores import MongoDBAtlasVectorSearch from langchain_voyageai import VoyageAIEmbeddings # Instantiate the vector store vector_store = MongoDBAtlasVectorSearch.from_connection_string( connection_string = "<connection-string>", # MongoDB cluster URI namespace = "<database-name>.<collection-name>", # Database and collection name embedding = VoyageAIEmbeddings(), # Embedding model to use index_name = "vector_index", # Name of the vector search index # Other optional parameters... ) # Create a retrieval tool retriever = vector_store.as_retriever() retriever_tool = create_retriever_tool( retriever, "vector_search_retriever", # Tool name "Retrieve relevant documents from the collection" # Tool description ) Para adicionar a ferramenta como um nó no LangGraph:
Converta a ferramenta em um nó.
Adicione o nó ao grafo.
from langgraph.graph import StateGraph from langgraph.prebuilt import ToolNode # Define the graph workflow = StateGraph() # Convert the retriever tool into a node retriever_node = ToolNode([retriever_tool]) # Add the tool as a node in the graph workflow.add_node("vector_search_retriever", retriever_node) graph = workflow.compile()