基础知识库(Bedrock Knowledge Bases)¶
Amazon Bedrock的知识库是亚马逊网络服务(AWS)的一项服务,它允许您通过使用私有数据来定制FM响应,快速构建RAG应用程序。
实现RAG
需要组织执行多个繁琐的步骤,将数据转换为嵌入(向量),将嵌入存储在专门的向量数据库中,并构建定制集成到数据库中,以搜索和检索与用户查询相关的文本。这可能是耗时且低效的。
使用Amazon Bedrock的知识库
,只需指向您在Amazon S3
中数据的位置,Amazon Bedrock的知识库
会处理整个摄入工作流程到您的向量数据库中。如果您没有现有的向量数据库,Amazon Bedrock会为您创建一个Amazon OpenSearch无服务器向量存储。
在这个笔记本中,我们介绍了AmazonKnowledgeBasesRetriever - Amazon Bedrock在Llama Index中的集成,通过检索API从知识库中检索与用户查询相关的结果。
使用知识库检索器¶
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!
查询 = "和整个宇宙相比,银河系有多大?"检索结果 = 检索器.检索(查询)# 打印第一个检索结果打印(检索结果[0].获取内容())
查询 = "和整个宇宙相比,银河系有多大?"检索结果 = 检索器.检索(查询)# 打印第一个检索结果打印(检索结果[0].获取内容())
使用检索器查询Bedrock LLMs¶
from transformers import pipeline
retriever = pipeline("retrieval", model="facebook/rag-token-nq")
retriever("What is the capital of France?")
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)