QdrantEmbeddingRetriever
与 Qdrant 文档存储兼容的基于嵌入的检索器。
| pipeline 中的最常见位置 | 1. 在 RAG 管道的文本嵌入器之后和 PromptBuilder 之前2. 语义搜索管道的最后一个组件 3. 在提取式 QA 管道的文本嵌入器之后和 ExtractiveReader 之前 |
| 必需的初始化变量 | "document_store": QdrantDocumentStore 的一个实例 |
| 强制运行变量 | “query_embedding”: 代表查询的向量(一个浮点数列表) |
| 输出变量 | “documents”:文档列表 |
| API 参考 | Qdrant |
| GitHub 链接 | https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/qdrant |
概述
该QdrantEmbeddingRetriever 是一个与QdrantDocumentStore 兼容的基于嵌入的检索器。它会比较查询和文档的嵌入,并根据结果从QdrantDocumentStore 中获取与查询最相关的文档。
使用在您的 NLP 系统中 QdrantEmbeddingRetriever,请确保查询和文档嵌入可用。您可以在索引管道中添加 Document Embedder,并在查询管道中添加 Text Embedder。
除了query_embedding 之外,QdrantEmbeddingRetriever 还接受其他可选参数,包括top_k(要检索的文档的最大数量)和filters(用于缩小搜索范围)。
在初始化相应的QdrantDocumentStore 初始化时使用的参数,包括嵌入维度(embedding_dim)、similarity 用于比较嵌入的函数,以及 HNWS 配置(hnsw_config).
安装
要开始在 Haystack 中使用 Qdrant,请先使用以下命令安装软件包:
pip install qdrant-haystack
用法
单独使用
此检索器需要要运行 QdrantDocumentStore 和索引的文档。
from haystack_integrations.components.retrievers.qdrant import QdrantEmbeddingRetriever
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
document_store = QdrantDocumentStore(
":memory:",
recreate_index=True,
return_embedding=True,
wait_result_from_api=True,
)
retriever = QdrantEmbeddingRetriever(document_store=document_store)
# using a fake vector to keep the example simple
retriever.run(query_embedding=[0.1]*768)
在 Pipeline 中
from haystack.document_stores.types import DuplicatePolicy
from haystack import Document
from haystack import Pipeline
from haystack.components.embedders import SentenceTransformersTextEmbedder, SentenceTransformersDocumentEmbedder
from haystack_integrations.components.retrievers.qdrant import QdrantEmbeddingRetriever
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
document_store = QdrantDocumentStore(
":memory:",
recreate_index=True,
return_embedding=True,
wait_result_from_api=True,
)
documents = [Document(content="There are over 7,000 languages spoken around the world today."),
Document(content="Elephants have been observed to behave in a way that indicates a high level of self-awareness, such as recognizing themselves in mirrors."),
Document(content="In certain parts of the world, like the Maldives, Puerto Rico, and San Diego, you can witness the phenomenon of bioluminescent waves.")]
document_embedder = SentenceTransformersDocumentEmbedder()
document_embedder.warm_up()
documents_with_embeddings = document_embedder.run(documents)
document_store.write_documents(documents_with_embeddings.get("documents"), policy=DuplicatePolicy.OVERWRITE)
query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", SentenceTransformersTextEmbedder())
query_pipeline.add_component("retriever", QdrantEmbeddingRetriever(document_store=document_store))
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
query = "How many languages are there?"
result = query_pipeline.run({"text_embedder": {"text": query}})
print(result['retriever']['documents'][0])
更新于 大约 1 年前
