Docs Menu
Docs Home
/ /

Integre MongoDB con LangGraph

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.

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.

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
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)

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

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.

from langgraph.store.mongodb import MongoDBStore, create_vector_index_config
from langchain_voyageai import VoyageAIEmbeddings
# Vector search index configuration with client-side embedding
index_config = create_vector_index_config(
embed = VoyageAIEmbeddings(),
dims = <dimensions>,
fields = ["<field-name>"],
filters = ["<filter-field-name>", ...] # Optional
)
# 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
) as store:
store.put(
namespace=("user", "memories"),
key=f"memory_{hash(content)}",
value={"content": content}
)

Para utilizar la incrustación automatizada, pase un AutoEmbeddings instancia al parámetro embed en la configuración del índice. Esto permite a MongoDB generar y gestionar vectores de incrustación automáticamente.

from langgraph.store.mongodb import MongoDBStore, create_vector_index_config
from langchain_mongodb import AutoEmbeddings
# Vector search index configuration with server-side Automated Embedding
index_config = create_vector_index_config(
embed = AutoEmbeddings(model_name="voyage-4"),
fields = ["<field-name>"],
filters = ["<filter-field-name>", ...] # Optional
)
# Store memories - text is embedded server-side
with MongoDBStore.from_conn_string(
conn_string=MONGODB_URI,
db_name="<database-name>",
collection_name="<collection-name>",
index_config=index_config
) as store:
store.put(
namespace=("user", "memories"),
key=f"memory_{hash(content)}",
value={"content": content}
)

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)
Método
Descripción

put(namespace, key, value, *, index)

Almacena un único elemento en el almacén con el namespace, clave y valor especificados.

search(namespace_prefix, /, *, ...)

Realiza búsquedas de elementos dentro de un namespace_prefix dado. Admite un filtro básico de clave-valor y búsqueda semántica de query si se configura un índice vectorial.

El método search tiene los siguientes modos:

  • Filtrado de metadatos (sin query): Cuando se llama sin un argumento de query, realiza una query estándar filtrada de MongoDB. Se puede especificar un diccionario de filtros para que coincida con los campos dentro del documento de valor almacenado.

    Por ejemplo: store.search(("docs",), filter={"author": "Bob", "status": "published"})

  • Búsqueda semántica (con query): Si el almacenamiento fue inicializado con un index_config y se proporciona una string de query, realiza una búsqueda semántica. El método incorpora el texto de la query y utiliza la búsqueda vectorial de MongoDB para encontrar los elementos más relevantes.

    Por ejemplo: store.search(("docs",), query="information about AI assistants")

get(namespace, key, *, refresh_ttl)

Recupera un único elemento del almacenamiento. Opcionalmente, puede actualizar el TTL del elemento al acceder.

delete(namespace, key)

Borra un solo elemento del almacén identificado por su namespace y clave.

list_namespaces(*, prefix, ...)

Enumera los namespace únicos en el almacenamiento. Permite el filtrado por un prefijo de ruta, un sufijo y la profundidad del documento.

batch(ops)

Ejecuta una secuencia de operaciones (GetOp, PutOp, SearchOp, DeleteOp) en una sola agrupación. Las operaciones de lectura se realizan primero, seguidas de una aplicación masiva de operaciones de guardar deduplicadas. abatch(ops) es la versión asíncrona de este método.

ensure_index_filters(filters)

Método que prepara una lista de campos de filtro para la indexación de búsqueda vectorial en MongoDB.

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.

  1. 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
    )
  2. Para añadir la herramienta como un nodo en LangGraph:

    1. Convertir la herramienta en un nodo.

    2. 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()

Volver

Spring AI

Obtén una insignia de habilidad

¡Domine "Gen IA" gratis!

Más información

En esta página