主题
Amazon Bedrock 知识库是 Amazon Web Services (AWS) 提供的一项服务,可让你使用私有数据定制 FM 响应,从而快速构建 RAG 应用。
实现 RAG 需要组织执行若干繁琐步骤,将数据转换为嵌入(向量)、将嵌入存储在专用向量数据库中,并构建与数据库的自定义集成,以搜索和检索与用户查询相关的文本。这可能既耗时又低效。
使用 Knowledge Bases for Amazon Bedrock,只需指向数据在 Amazon S3 中的位置,Knowledge Bases for Amazon Bedrock 就会负责整个摄取工作流并将其写入你的向量数据库。如果你没有现成的向量数据库,Amazon Bedrock 会为你创建一个 Amazon OpenSearch Serverless 向量存储。
知识库可以通过 AWS 控制台配置,也可以使用 AWS SDK配置。
在本 notebook 中,我们介绍 AmazonKnowledgeBasesRetriever——Llama Index 中的 Amazon Bedrock 集成,它通过 Retrieve API 从知识库中检索用户查询的相关结果。
使用知识库检索器
%pip install --upgrade --quiet boto3 botocore
%pip install llama-index
%pip install llama-index-retrievers-bedrock有关 retrieval_config 支持参数的更多信息,请查看 boto3 文档:链接
要在 retrieval_config 中使用过滤器,你需要为数据源设置 metadata.json 文件。更多信息请参见:链接
from llama_index.retrievers.bedrock import AmazonKnowledgeBasesRetriever
retriever = AmazonKnowledgeBasesRetriever(
knowledge_base_id="<knowledge-base-id>",
retrieval_config={
"vectorSearchConfiguration": {
"numberOfResults": 4,
"overrideSearchType": "HYBRID",
"filter": {"equals": {"key": "tag", "value": "space"}},
}
},
)query = "How big is Milky Way as compared to the entire universe?"
retrieved_results = retriever.retrieve(query)
# Prints the first retrieved result
print(retrieved_results[0].get_content())使用检索器配合 Bedrock LLM 进行查询
%pip install llama-index-llms-bedrockfrom llama_index.core import get_response_synthesizer
from llama_index.llms.bedrock.base import Bedrock
llm = Bedrock(model="anthropic.claude-v2", temperature=0, max_tokens=3000)
response_synthesizer = get_response_synthesizer(
response_mode="compact", llm=llm
)
response_obj = response_synthesizer.synthesize(query, retrieved_results)
print(response_obj)