Puede integrar MongoDB con LangGraph para construir agentes de IA y avanzados Aplicaciones RAG. Esta página ofrece una descripción general de la integración de MongoDB con LangGraph y cómo usar MongoDB para la persistencia del estado del agente, la memoria y la recuperación en sus flujos de trabajo de LangGraph.
Para crear un agente de IA de muestra que utilice todos los componentes de esta página, consulte tutorial.
Nota
Para la integración de JavaScript, consulte LangGraph JS/TS.
Segundo plano
LangGraph es un marco especializado dentro del ecosistema LangChain diseñado para desarrollar agentes de IA y flujos de trabajo complejos de múltiples agentes. Grafos son los componentes principales de LangGraph, que representan el flujo de trabajo de su agente. La integración de MongoDB LangGraph permite las siguientes capacidades:
Checkpointer de MongoDB LangGraph: Puede mantener el estado de los agentes LangGraph en MongoDB, proporcionando memoria a corto plazo.
MongoDB LangGraph Store: se pueden almacenar y recuperar memorias importantes para los agentes LangGraph en una colección de MongoDB, proporcionando una memoria a largo plazo.
Herramientas de recuperación: se puede utilizar la integración de MongoDB LangChain para crear rápidamente herramientas de recuperación para los flujos de trabajo de LangGraph.
La integración de las aplicaciones LangGraph que se usan con MongoDB permite consolidar tanto las capacidades de recuperación como la memoria del agente en una única base de datos, simplificando la arquitectura usada y reduciendo la complejidad operativa.
Checkpointer de MongoDB LangGraph (memoria a corto plazo)
El MongoDB LangGraph Checkpointer permite persistir el estado del agente en MongoDB para implementar una memoria a corto plazo. Esta característica permite la intervención humana, la memoria, el viaje en el tiempo y la tolerancia a fallos para los agentes LangGraph que se usan.
Para instalar el paquete de 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)
Almacenamiento de MongoDB LangGraph (memoria a largo plazo)
La tienda LangGraph de MongoDB permite almacenar y recuperar memorias en una colección de MongoDB, lo que habilita una memoria a largo plazo para los agentes de LangGraph. Esto permite compilar agentes que puedan recordar interacciones pasadas y utilizar esa información para tomar decisiones futuras.
Para instalar el paquete de este componente:
pip install langgraph-store-mongodb
Uso
Atlas admite dos modos de incrustación:
Incorporación manual: genere vectores de incorporación en el lado del cliente con un modelo de incorporación que usted especifique.
Incrustaciones automatizadas: MongoDB incrusta texto en el servidor sin necesidad de generarlo manualmente. Para obtener más información, consulte Incrustaciones automatizadas.
Importante
La incrustación automatizada está disponible como función de vista previa solo para MongoDB Community Edition v8.2 y versiones posteriores. Esta función y la documentación correspondiente pueden cambiar en cualquier momento durante el periodo de vista previa. Para obtener más información, consulte Funciones de vista previa.
Recuperación y borrado de recuerdos:
# 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 ) 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)
Parameter | Necesidad | Descripción | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Requerido | Especifique la cadena de conexión para su clúster de MongoDB o para la implementación local de Atlas. | |||||||||
| Requerido | El nombre de la base de datos que se va a utilizar. Se creará si no existe. Se establece por defecto en "checkpointing_db". | |||||||||
| Requerido | El nombre de la colección que se va a utilizar. Se creará si no existe. Por defecto en "persistent-store". | |||||||||
| Opcional | Configuración de TTL (Time To Live) para el almacenamiento. Esto configura la expiración automática de documentos en el almacenamiento. Por ejemplo: | |||||||||
| Opcional | Configuración del índice de búsqueda vectorial. El parámetro Por ejemplo: |
Métodos
Método | Descripción |
|---|---|
| Almacena un único elemento en el almacén con el namespace, clave y valor especificados. |
| Realiza búsquedas de elementos dentro de un El método
|
| Recupera un único elemento del almacenamiento. Opcionalmente, puede actualizar el TTL del elemento al acceder. |
| Borra un solo elemento del almacén identificado por su namespace y clave. |
| Enumera los namespace únicos en el almacenamiento. Permite el filtrado por un prefijo de ruta, un sufijo y la profundidad del documento. |
| Ejecuta una secuencia de operaciones ( |
| Método que prepara una lista de campos de filtro para la indexación de búsqueda vectorial en MongoDB. |
Herramientas de recuperación
Se pueden usar sin problemas los recuperadores LangChain como herramientas en el flujo de trabajo de LangGraph para recuperar datos relevantes de MongoDB.
La integración de MongoDB LangChain admite de forma nativa la búsqueda de texto completo, la búsqueda vectorial, la búsqueda híbrida y la recuperación de documentos principales. Para una lista completa de métodos de recuperación, consultar MongoDB LangChain Retrievers.
Uso
Para crear una herramienta de recuperación básica con la búsqueda vectorial de MongoDB y 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 añadir la herramienta como un nodo en LangGraph:
Convertir la herramienta en un nodo.
Añada el nodo al 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()