Se puede integrar MongoDB con LangGraph para construir agentes de IA y aplicaciones RAG avanzadas. Esta pÔgina ofrece una visión general de la integración de MongoDB LangGraph y cómo puede usarse MongoDB para la persistencia del estado del agente, la memoria y la recuperación en los flujos de trabajo de LangGraph.
Para crear un agente de IA de muestra que use todos los componentes de esta pƔgina, se puede consultar el 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>=0.4.0"
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>=0.3.0"
Uso
Atlas admite dos modos de integración:
Incorporación manual: Generar vectores de incorporación en el lado del cliente con un modelo de incorporación que especifiques.
Inserción automatizada: MongoDB inserta texto del lado del servidor sin necesidad de generarlo manualmente. Para obtener mÔs información, consulte Inserción automatizada.
Importante
La incrustación automatizada estÔ disponible como funcionalidad de Vista Previa sólo para MongoDB Community Edition v8.2 y versiones posteriores. La funcionalidad y la documentación correspondiente pueden cambiar en cualquier momento durante el periodo de vista previa. Para obtener mÔs información, consulte Funcionalidades 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()