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}})
更新于 5 个月前
