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_k 和score_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}})
更新于 大约 1 年前
