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

AmazonBedrockRanker

使用此组件通过 Amazon Bedrock 模型根据文档与查询的相似性对文档进行排名。

pipeline 中的最常见位置在查询管道中,在返回文档列表的组件(例如 Retriever)之后
必需的初始化变量"aws_access_key_id": AWS 访问密钥 ID。可以通过 AWS_ACCESS_KEY_ID 环境变量设置。

"aws_secret_access_key": AWS 秘密访问密钥。可以通过 AWS_SECRET_ACCESS_KEY 环境变量设置。

"aws_region_name": AWS 区域名称。可以通过 AWS_DEFAULT_REGION 环境变量设置。
强制运行变量“documents”: 文档对象列表

“query”: 查询字符串
输出变量“documents”: 文档对象列表
API 参考Amazon Bedrock
GitHub 链接https://github.com/deepset-ai/haystack-core-integrations/tree/main/integrations/amazon_bedrock/

概述

AmazonBedrockRanker 根据与指定查询的语义相关性对文档进行排名。它使用 Amazon Bedrock Rerank API。支持的模型列表可以在 Amazon 的文档中找到。此 Ranker 的默认模型是cohere.rerank-v3-5:0.

您还可以指定top_k 参数来设置要返回的最大文档数。

安装

要开始使用 Haystack 中的 Amazon Bedrock,请安装amazon-bedrock-haystack

pip install amazon-bedrock-haystack

身份验证

此组件使用 AWS 进行身份验证。您可以使用 AWS CLI 通过您的 IAM 进行身份验证。有关设置 IAM 基于身份的策略的更多信息,请参阅官方文档

📘

使用 AWS CLI

考虑使用 AWS CLI 作为管理 AWS 服务更直接的工具。使用 AWS CLI,您可以快速配置您的 boto3 凭证。这样,您就不需要在 Haystack 中初始化 Amazon Bedrock 时提供详细的身份验证参数。

要使用此组件,请使用模型名称进行初始化。AWS 凭证(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION)应设置为环境变量,如上所述进行配置,或作为 Secret 参数传递。确保您设置的区域支持 Amazon Bedrock。

用法

单独使用

此示例使用AmazonBedrockRanker 来对两个简单文档进行排名。要运行 Ranker,请传递一个query 并提供documents.

from haystack import Document
from haystack_integrations.components.rankers.amazon_bedrock import AmazonBedrockRanker

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

ranker = AmazonBedrockRanker()

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

在 pipeline 中

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

from haystack import Document, Pipeline
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.rankers.amazon_bedrock import AmazonBedrockRanker

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 = AmazonBedrockRanker()

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

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

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