文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

WeaviateEmbeddingRetriever

这是与 Weaviate Document Store 兼容的嵌入检索器。

pipeline 中的最常见位置1. 在 Text Embedder 之后,在 RAG pipeline 的 PromptBuilder 之前 2. 语义搜索 pipeline 中的最后一个组件 3. 在 Text Embedder 之后,在 extractive QA pipeline 的 ExtractiveReader 之前
必需的初始化变量"document_store": WeaviateDocumentStore 的一个实例
强制运行变量“query_embedding”:浮点数列表
输出变量“documents”:文档列表
API 参考Weaviate
GitHub 链接https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/weaviate

概述

WeaviateEmbeddingRetriever 是一个基于嵌入的检索器,与 WeaviateDocumentStore 兼容。它比较查询和 Document 的嵌入,并从WeaviateDocumentStore 中根据结果检索与查询最相关的 Documents。

参数

使用要在 NLP 系统中使用 WeaviateEmbeddingRetriever,请确保查询和 Document 嵌入可用。您可以通过在索引 Pipeline 中添加 Document Embedder,并在查询 Pipeline 中添加 Text Embedder 来实现。

除了query_embedding 之外,WeaviateEmbeddingRetriever 还接受其他可选参数,包括top_k(要检索的文档的最大数量)和filters(用于缩小搜索范围)。

您还可以指定distance,即嵌入之间的最大允许距离,以及certainty,即结果项与搜索嵌入之间的归一化距离。此行为distance 取决于 Collection 中使用的距离度量。有关更多信息,请参阅 Weaviate 官方文档

嵌入相似度函数取决于 Collection 中使用的 vectorizer。WeaviateDocumentStore。请查看 Weaviate 官方文档 以了解所有支持的 vectorizers。

用法

安装

要开始使用 Haystack 的 Weaviate,请使用以下命令安装该包:

pip install weaviate-haystack

单独使用

此 Retriever 需要一个 WeaviateDocumentStore 实例和已索引的文档才能运行。WeaviateDocumentStore 和索引的 Documents 才能运行。

from haystack_integrations.document_stores.weaviate.document_store import WeaviateDocumentStore
from haystack_integrations.components.retrievers.weaviate import WeaviateEmbeddingRetriever

document_store = WeaviateDocumentStore(url="https://:8080")

retriever = WeaviateEmbeddingRetriever(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.document_stores.weaviate.document_store import (
    WeaviateDocumentStore,
)
from haystack_integrations.components.retrievers.weaviate import (
    WeaviateEmbeddingRetriever,
)

document_store = WeaviateDocumentStore(url="https://:8080")

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", WeaviateEmbeddingRetriever(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])


相关链接

请查看 GitHub 仓库或我们的文档中的 API 参考