You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Haystack中使用Qdrant集合?连接、写入及过滤查询方法

在Haystack中使用Qdrant指定集合的实操步骤

连接已创建的Qdrant集合

初始化QdrantDocumentStore时,直接指定你已通过Qdrant Python SDK创建好的集合名称,同时配置Qdrant的连接信息:

from haystack.document_stores import QdrantDocumentStore

# 连接到远程Qdrant服务的指定集合
document_store = QdrantDocumentStore(
    host="localhost",  # Qdrant服务地址
    port=6333,         # Qdrant端口
    collection_name="your_existing_collection",  # 你已创建的集合名
    embedding_dim=768  # 需与集合中向量维度一致
)

如果是本地磁盘存储的Qdrant实例,替换host和port为path参数:

document_store = QdrantDocumentStore(
    path="./qdrant_local_data",
    collection_name="your_existing_collection",
    embedding_dim=768
)

向特定集合写入文档

先构造Haystack的Document对象,调用write_documents方法即可将数据写入指定集合:

from haystack import Document

# 构造示例文档
docs = [
    Document(
        content="这是测试文档1的核心内容",
        meta={"category": "科技", "author": "张三"}
    ),
    Document(
        content="这是测试文档2的核心内容",
        meta={"category": "财经", "author": "李四"}
    )
]

# 写入到目标集合
document_store.write_documents(docs)

搜索时应用集合过滤

场景1:仅在指定集合内搜索

若初始化QdrantDocumentStore时已绑定目标集合,后续检索组件会默认在该集合内执行搜索:

from haystack.nodes import EmbeddingRetriever
from haystack.pipelines import RetrievalPipeline

# 初始化与集合匹配的嵌入检索器
retriever = EmbeddingRetriever(
    document_store=document_store,
    embedding_model="sentence-transformers/all-MiniLM-L6-v2"
)

# 创建检索管道并执行查询
pipeline = RetrievalPipeline(retriever=retriever)
result = pipeline.run(query="科技领域内容", params={"top_k": 3})

# 输出检索结果
for doc in result["documents"]:
    print(f"内容:{doc.content}\n元数据:{doc.meta}\n")

场景2:跨多个集合搜索并过滤

如果需要同时操作多个集合,初始化QdrantDocumentStore时可不指定集合名,检索时通过filters参数指定目标集合:

# 初始化不绑定特定集合的DocumentStore
document_store = QdrantDocumentStore(
    host="localhost",
    port=6333,
    embedding_dim=768
)

retriever = EmbeddingRetriever(
    document_store=document_store,
    embedding_model="sentence-transformers/all-MiniLM-L6-v2"
)

# 指定要搜索的多个集合
result = retriever.retrieve(
    query="财经领域内容",
    top_k=3,
    filters={"collection": ["your_existing_collection", "finance_collection"]}
)

场景3:集合内文档元数据过滤

在指定集合内按文档元数据(如分类、作者)筛选,同样通过filters参数实现:

result = retriever.retrieve(
    query="相关内容",
    top_k=3,
    filters={"meta": {"category": "科技", "author": "张三"}}
)

内容的提问来源于stack exchange,提问作者Stephane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:34:51