Bedrock(知识库)¶
适用于 Amazon Bedrock 的知识库是 Amazon Web Services (AWS) 提供的一项服务,让您能够通过使用您的私有数据自定义 FM 响应,快速构建 RAG 应用程序。
实现 RAG
需要组织执行几个繁琐的步骤,将数据转换为嵌入(向量),将嵌入存储在专门的向量数据库中,并构建自定义集成到数据库中,以便搜索和检索与用户查询相关的文本。这可能既耗时又效率低下。
借助 `适用于 Amazon Bedrock 的知识库`,只需指向您在 `Amazon S3` 中数据的位置,`适用于 Amazon Bedrock 的知识库` 就会负责将数据完整摄取到您的向量数据库的工作流程。如果您没有现有的向量数据库,Amazon Bedrock 会为您创建一个 Amazon OpenSearch Serverless 向量存储。
知识库可以通过 AWS 控制台 或使用 AWS SDK 进行配置。
在此 notebook 中,我们介绍 AmazonKnowledgeBasesRetriever - 通过 Retrieve API 在 Llama Index 中集成 Amazon Bedrock,以便从知识库中检索与用户查询相关的结果。
使用知识库检索器¶
In [ ]
已复制!
%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 [ ]
已复制!
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 [ ]
已复制!
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 [ ]
已复制!
%pip install llama-index-llms-bedrock
%pip install llama-index-llms-bedrock
In [ ]
已复制!
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)