Bedrock(知识库)¶
Amazon Bedrock 知识库 是亚马逊云科技(AWS)推出的一项服务,允许您利用私有数据定制基础模型(FM)响应,快速构建 RAG(检索增强生成)应用程序。
实现 RAG 通常需要企业执行多项繁琐步骤:将数据转换为嵌入向量(embeddings)、将向量存储至专用向量数据库、构建自定义集成以实现与数据库的交互,从而检索与用户查询相关的文本。这一过程往往耗时且低效。
通过 Amazon Bedrock 知识库,您只需指定 Amazon S3 中的数据存储位置,该服务便会自动处理整个向量数据库的数据摄取工作流。若您尚未配置向量数据库,Amazon Bedrock 将为您创建 Amazon OpenSearch Serverless 向量存储服务。
知识库可通过 AWS 管理控制台 或 AWS 开发工具包 进行配置。
本笔记本将介绍 Llama Index 中通过 Retrieve API 实现的 AmazonKnowledgeBasesRetriever 与 Amazon Bedrock 的集成,该功能可从知识库中检索与用户查询相关的结果。
使用知识库检索器¶
In [ ]:
Copied!
%pip install --upgrade --quiet boto3 botocore
%pip install llama-index
%pip install llama-index-retrievers-bedrock
%pip install --upgrade --quiet boto3 botocore
%pip install llama-index
%pip install llama-index-retrievers-bedrock
In [ ]:
Copied!
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"}},
}
},
)
from llama_index.retrievers.bedrock import AmazonKnowledgeBasesRetriever
retriever = AmazonKnowledgeBasesRetriever(
knowledge_base_id="",
retrieval_config={
"vectorSearchConfiguration": {
"numberOfResults": 4,
"overrideSearchType": "HYBRID",
"filter": {"equals": {"key": "tag", "value": "space"}},
}
},
)
In [ ]:
Copied!
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())
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 进行查询¶
In [ ]:
Copied!
%pip install llama-index-llms-bedrock
%pip install llama-index-llms-bedrock
In [ ]:
Copied!
from 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)
from 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)