Este post fue traducido automáticamente. Para la versión original, haz clic aquí.
langchain-azure-cosmosdb (pip install langchain-azure-cosmosdb) es un nuevo paquete Python que conecta LangChain y LangGraph a Azure Cosmos DB for NoSQL, reemplazando los 5+ servicios separados habituales para almacenamiento vectorial, caché, historial y memoria con una sola base de datos.
Seis integraciones en un paquete
El paquete incluye seis clases de integración (cada una con variantes síncronas y asíncronas):
- AzureCosmosDBNoSqlVectorSearch — búsqueda vectorial, de texto completo (BM25), híbrida (vector+texto con RRF) e híbrida ponderada
- AzureCosmosDBNoSqlSemanticCache — cachear respuestas LLM para reducir latencia y coste en consultas repetidas
- CosmosDBChatMessageHistory — persistir el historial de conversación con soporte TTL
- CosmosDBSaverSync / CosmosDBSaver — checkpointer de LangGraph: persiste el estado del grafo por thread_id entre invocaciones
- CosmosDBCacheSync / CosmosDBCache — caché de resultados a nivel de nodo en LangGraph
- CosmosDBStore / AsyncCosmosDBStore — memoria a largo plazo con organización por espacio de nombres y búsqueda semántica
La autenticación con clave de acceso e Identidad Administrada (Entra ID) es compatible con todas las integraciones.
Búsqueda vectorial e híbrida
Azure Cosmos DB for NoSQL admite índices vectoriales DiskANN y Quantized Flat, escalando de miles a miles de millones de vectores — la misma base de datos que impulsa los historiales de conversación y memorias de ChatGPT en OpenAI. Configuración de la búsqueda híbrida:
vectorstore = AzureCosmosDBNoSqlVectorSearch(
cosmos_client=...,
embedding=AzureOpenAIEmbeddings(...),
...
)
results = vectorstore.similarity_search(
"distributed database",
k=5,
search_type="hybrid",
full_text_rank_filter=[{"search_field": "text", "search_text": "distributed"}]
)
Agentes multi-turno de LangGraph con checkpointing en Cosmos
El checkpointer CosmosDBSaverSync persiste el estado del grafo de LangGraph para que los agentes recuerden el contexto entre invocaciones separadas — sin necesidad de estado en memoria:
checkpointer = CosmosDBSaverSync(
database_name="agents-db",
container_name="checkpoints",
endpoint="..."
)
app = graph.compile(checkpointer=checkpointer)
# Turno 1
app.invoke(
{"messages": [("user", "Hi, I'm Alice!")]},
config={"configurable": {"thread_id": "user-123"}}
)
# Turno 2 — estado persistido del turno 1
app.invoke(
{"messages": [("user", "What's my name?")]},
config={"configurable": {"thread_id": "user-123"}}
)
# Devuelve: "Your name is Alice!"
Una base de datos en lugar de cinco
Consolidar todo en Cosmos DB for NoSQL significa una conexión, un conjunto de credenciales, un botón de escala y un lugar donde buscar cuando algo va mal. El paquete está disponible en PyPI y el código fuente está en langchain-ai/langchain-azure en GitHub.
Detalles completos en devblogs.microsoft.com.
