Haystack 新集成 DocumentStore:QdrantDocumentStore
了解 QdrantDocumentStore、其优势以及如何将其与 Haystack 结合使用。
2023年4月18日我们很高兴地推出 QdrantDocumentStore,它是 Qdrant 的 Haystack DocumentStore 系列的最新成员。这是一个开源软件包,提供了强大的功能,例如高效搜索、高维向量检索和灵活的启动选项。
让我们来了解一下 DocumentStores 以及如何将 QdrantDocumentStore 用于您的管道!
Haystack DocumentStores
Haystack 是一个端到端的 NLP 框架,提供了一种模块化方法来构建最先进的生成式 AI、QA 和语义知识库搜索系统。大多数现代 NLP 系统的核心组件是一个能够高效存储和检索大量文本数据的数据库。向量数据库是实现这一目标的绝佳方式。这些数据库可以存储文本的向量表示,同时还能高效地快速检索它们。为此,Haystack 提供了一组原生 DocumentStores,允许您连接和查询可能存储在 Elasticsearch、Pinecone、Weaviate 或其他数据库中的数据。这样,您就可以在一个数据库中存储和维护您的数据,同时在 Haystack 管道和应用程序中使用它们。
Qdrant 新 DocumentStore
Haystack DocumentStore 系列的最新成员是 QdrantDocumentStore。这个新的 DocumentStore 是首创的,它是一个由 Qdrant 团队维护的外部软件包。Qdrant 是一个向量相似性搜索引擎,提供了一个生产级的服务,拥有方便的 API,用于存储、搜索和管理带有附加负载的向量。Qdrant 针对高维向量搜索进行了优化,并支持各种相似性度量,使其成为各种 NLP 应用的强大工具。
QdrantDocumentStore 的优势
使用 Qdrant 和 Haystack 的一些优势包括
- 高效搜索和检索高维向量
- mmap 支持 HNSW 图存储
- 过滤功能直接集成到向量搜索阶段
- 基于元数据属性的约束
- 通过使用 标量量化 将内存占用减少高达 4 倍
- 使用 少量 RAM 存储高达一百万个向量
- 开源!😍
Qdrant 提供了多种启动实例的选项。本地内存/磁盘持久化模式非常适合测试场景以及在 Colab 或 Jupyter Notebook 中进行快速实验,您计划只存储少量向量。当您需要扩展时,可以使用 Docker 容器轻松切换到本地服务器部署。如果您根本不想管理基础设施,还有一个完全托管的 Qdrant Cloud 服务,提供免费永久 1GB 集群。使用 Haystack 都可以实现!💙
Haystack 是一个支持开发人员构建完整 NLP 管道的综合框架,而 Qdrant 是一个强大的向量相似性搜索引擎。为了确保这两个工具之间的无缝协作并创建健壮的 NLP 应用程序,QdrantDocumentStore 是 Qdrant 维护的一个单独的软件包,专门设计用于与 Haystack 集成。通过拥有自己的发布周期,QdrantDocumentStore 可以独立于 Haystack 进行更新,从而带来更简化、更高效的工作流程。
如何使用 QdrantDocumentStore
如果您想将 QdrantDocumentStore 与 Haystack 一起使用,可以在 GitHub 上的 qdrant-haystack 仓库中找到源代码。通过此集成,您可以利用 Qdrant 强大的搜索功能和 Haystack 的自然语言处理功能,创建强大的语义搜索和检索工具。
要将 QdrantDocumentStore 与 Haystack 一起使用,您可以安装 qdrant-haystack
pip install qdrant-haystack
然后,初始化 QdrantDocumentStore
from qdrant_haystack.document_stores import QdrantDocumentStore
document_store = QdrantDocumentStore(
":memory:",
index="Document",
embedding_dim=512,
recreate_index=True,
hnsw_config={"m": 16, "ef_construct": 64} # Optional
)
如果您想为嵌入启用标量量化,可以像使用原始 QdrantClient 一样,通过传递正确的配置来实现。
from qdrant_haystack.document_stores import QdrantDocumentStore
from qdrant_client.http import models
document_store = QdrantDocumentStore(
"https://:6333",
index="Document",
embedding_dim=512,
recreate_index=True,
quantization_config=models.ScalarQuantization(
scalar=models.ScalarQuantizationConfig(
type=models.ScalarType.INT8,
quantile=0.99,
always_ram=True,
),
),
)
QdrantDocumentStore支持 Qdrant Python 客户端中 所有可用的配置属性。
初始化文档存储后,您可以使用 write_documents 方法编写您的文档。这将允许您将向量数据库与 Haystack 无缝集成,并使用其功能。
document_store.write_documents(docs)
就是这样!有关将 Qdrant 与 Haystack 结合使用的更多示例和文档,请参阅 qdrant-haystack GitHub 仓库,如果您有任何疑问,请加入 Haystack 社区 Discord。
