Questo post è stato tradotto automaticamente. Per la versione originale, clicca qui.
langchain-azure-cosmosdb (pip install langchain-azure-cosmosdb) è un nuovo pacchetto Python che connette LangChain e LangGraph ad Azure Cosmos DB for NoSQL, sostituendo i soliti 5+ servizi separati per archiviazione vettoriale, caching, cronologia e memoria con un singolo database.
Sei integrazioni in un unico pacchetto
Il pacchetto include sei classi di integrazione (ciascuna con varianti sincrone e asincrone):
- AzureCosmosDBNoSqlVectorSearch — ricerca vettoriale, testo completo (BM25), ibrida (vettore+testo con RRF) e ibrida ponderata
- AzureCosmosDBNoSqlSemanticCache — cache delle risposte LLM per ridurre latenza e costi su query ripetute
- CosmosDBChatMessageHistory — persistenza della cronologia delle conversazioni con supporto TTL
- CosmosDBSaverSync / CosmosDBSaver — checkpointer LangGraph: persiste lo stato del grafo per thread_id tra le invocazioni
- CosmosDBCacheSync / CosmosDBCache — caching dei risultati a livello di nodo LangGraph
- CosmosDBStore / AsyncCosmosDBStore — memoria a lungo termine con organizzazione per namespace e ricerca semantica
L’autenticazione con chiave di accesso e Managed Identity (Entra ID) è supportata per tutte le integrazioni.
Ricerca vettoriale e ibrida
Azure Cosmos DB for NoSQL supporta indici vettoriali DiskANN e Quantized Flat, scalando da migliaia a miliardi di vettori — lo stesso database che alimenta le cronologie delle conversazioni e i ricordi di ChatGPT in OpenAI. Configurazione della ricerca ibrida:
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"}]
)
Agenti multi-turno LangGraph con checkpointing Cosmos
Il checkpointer CosmosDBSaverSync persiste lo stato del grafo LangGraph in modo che gli agenti ricordino il contesto tra invocazioni separate — nessuno stato in memoria richiesto:
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 — stato persistito dal turno 1
app.invoke(
{"messages": [("user", "What's my name?")]},
config={"configurable": {"thread_id": "user-123"}}
)
# Restituisce: "Your name is Alice!"
Un database invece di cinque
Consolidare tutto in Cosmos DB for NoSQL significa una connessione, un set di credenziali, un cursore di scalabilità e un unico posto dove guardare quando qualcosa va storto. Il pacchetto è disponibile su PyPI e il sorgente è su langchain-ai/langchain-azure su GitHub.
Dettagli completi su devblogs.microsoft.com.
