集成:Azure CosmosDB
在 Haystack 中使用 Azure CosmosDB
目录
概述
Azure Cosmos DB 是一个完全托管的 NoSQL、关系型和向量数据库,用于现代应用开发。它提供个位数毫秒级的响应时间、自动即时扩展以及任何规模下的速度保证。它是 ChatGPT 依赖的数据库,能够以高可靠性和低维护成本动态扩展。Haystack 支持在 Azure Cosmos DB 上运行的 MongoDB 和 PostgreSQL 集群。
Azure Cosmos DB for MongoDB 使您可以轻松地将 Azure Cosmos DB 用作 MongoDB 数据库。您可以使用现有的 MongoDB 技能,并通过将应用程序指向使用 MongoDB API 的帐户连接字符串,继续使用您喜欢的 MongoDB 驱动程序、SDK 和工具。在 Azure Cosmos DB for MongoDB 文档中了解更多信息。
Azure Cosmos DB for PostgreSQL 是一个托管服务,用于 PostgreSQL,并由 Citus 的分布式表开源超级能力扩展。这种超级能力使您能够构建高度可扩展的关系型应用。您可以像使用 PostgreSQL 一样,在一个节点集群上开始构建应用程序。随着您的应用程序的可扩展性和性能需求增长,您可以无缝地扩展到多个节点,通过透明地分发您的表来实现。在 Azure Cosmos DB for PostgreSQL 文档中了解更多信息。
安装
可以通过 MongoDBAtlasDocumentStore 连接到 Azure Cosmos DB 上的 MongoDB 集群。为此,请安装 mongo-atlas-haystack 集成。
pip install mongodb-atlas-haystack
如果您想连接到 Azure Cosmos DB 上的 PostgreSQL 集群,请安装 pgvector-haystack 集成。
pip install pgvector-haystack
用法 (MongoDB)
要将 Azure Cosmos DB for MongoDB 与 MongoDBAtlasDocumentStore 结合使用,您需要通过 Azure 门户设置一个 Azure Cosmos DB for MongoDB vCore 集群。有关分步指南,请参阅 快速入门:Azure Cosmos DB for MongoDB vCore。
设置集群后,使用集群的连接字符串配置 MONGO_CONNECTION_STRING 环境变量。您可以通过遵循 此处 的说明找到连接字符串。格式应如下所示:
import os
os.environ["MONGO_CONNECTION_STRING"] = "mongodb+srv://<username>:<password>@<clustername>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
接下来,导航到集群的快速入门页面,然后点击“启动快速入门”。
这将启动快速入门指南,该指南将引导您创建数据库和集合。
完成后,您可以使用适当的配置在 Haystack 中初始化 MongoDBAtlasDocumentStore。
from haystack_integrations.document_stores.mongodb_atlas import MongoDBAtlasDocumentStore
from haystack import Document
document_store = MongoDBAtlasDocumentStore(
database_name="quickstartDB", # your db name
collection_name="sampleCollection", # your collection name
vector_search_index="haystack-test", # your cluster name
)
document_store.write_documents([Document(content="this is my first doc")])
现在,您可以开始使用 MongoDBAtlasEmbeddingRetriever 构建 Haystack 管道。请查看 MongoDBAtlasEmbeddingRetriever 文档以获取完整的管道示例。
用法 (PostgreSQL)
要将 Azure Cosmos DB for PostgreSQL 与 PgvectorDocumentStore 结合使用,您需要通过 Azure 门户设置一个 PostgreSQL 集群。有关分步指南,请参阅 快速入门:Azure Cosmos DB for PostgreSQL。
设置集群后,使用集群的连接字符串配置 PG_CONN_STR 环境变量。您可以通过遵循 此处 的说明找到连接字符串。格式应如下所示:
import os
os.environ['PG_CONN_STR'] = "host=c-<cluster>.<uniqueID>.postgres.cosmos.azure.com port=5432 dbname=citus user=citus password={your_password} sslmode=require"
完成后,您可以使用适当的配置在 Haystack 中初始化 PgvectorDocumentStore。
document_store = PgvectorDocumentStore(
table_name="haystack_documents",
embedding_dimension=1024,
vector_function="cosine_similarity",
search_strategy="hnsw",
recreate_table=True,
)
现在,您可以开始使用 PgvectorEmbeddingRetriever 和 PgvectorKeywordRetriever 构建 Haystack 管道。请查看 PgvectorEmbeddingRetriever 文档以获取完整的管道示例。
