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

JinaRanker

使用此组件通过 Jina AI 模型根据查询相似度对文档进行排序。

pipeline 中的最常见位置在查询管道中,在一个返回文档列表的组件(例如 Retriever )之后
必需的初始化变量"api_key": Jina API 密钥。可以通过以下方式设置:JINA_API_KEY 环境变量设置。
强制运行变量“query”: 查询字符串

“documents”: 文档列表
输出变量“documents”:文档列表
API 参考Jina
GitHub 链接https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/jina

概述

JinaRanker 根据查询相似度对给定文档进行排序。它使用 Jina AI 排序模型 – 可以在 Jina AI 的 网站 上查看完整列表。此 Ranker 的默认模型是jina-reranker-v1-base-en.

此外,您还可以使用可选的top_kscore_threshold 参数配合JinaRanker :

  • Ranker 的 top_k 是要返回的文档数量(如果它是管道中的最后一个组件)或转发到下一个组件的文档数量。
  • 如果您设置了score_threshold 作为 Ranker 的参数,它将只返回与 Jina AI 模型计算出的相似度分数高于该阈值的文档。

安装

要开始使用此集成与 Haystack,请使用以下命令安装软件包:

pip install jina-haystack

授权

该组件默认使用JINA_API_KEY 环境变量(默认)。否则,您可以在初始化时通过 api_key 按如下方式传递 Jina API 密钥:

ranker = JinaRanker(api_key=Secret.from_token("<your-api-key>"))

要获取您的 API 密钥,请访问 Jina AI 的 网站

用法

单独使用

您可以使用在管道之外使用 JinaRanker 来根据您的查询对文档进行排序。

要运行 Ranker,请传递一个查询,提供文档,并在 top_k 参数中设置要返回的文档数量。

from haystack import Document
from haystack_integrations.components.rankers.jina import JinaRanker

docs = [Document(content="Paris"), Document(content="Berlin")]

ranker = JinaRanker()

ranker.run(query="City in France", documents=docs, top_k=1)

在 pipeline 中

这是一个管道的示例,该管道从InMemoryDocumentStore 基于关键字搜索(使用InMemoryBM25Retriever)设置要排名的文档数量。然后,它使用JinaRanker 检索文档,以根据其与查询的相似度对检索到的文档进行排序。

from haystack import Document, Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack_integrations.components.rankers.jina import JinaRanker

docs = [Document(content="Paris is in France"), 
        Document(content="Berlin is in Germany"),
        Document(content="Lyon is in France")]
document_store = InMemoryDocumentStore()
document_store.write_documents(docs)

retriever = InMemoryBM25Retriever(document_store = document_store)
ranker = JinaRanker()

ranker_pipeline = Pipeline()
ranker_pipeline.add_component(instance=retriever, name="retriever")
ranker_pipeline.add_component(instance=ranker, name="ranker")

ranker_pipeline.connect("retriever.documents", "ranker.documents")

query = "Cities in France"
ranker_pipeline.run(data={"retriever": {"query": query, "top_k": 3}, 
                                   "ranker": {"query": query, "top_k": 2}})

相关链接

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