引言
在构建信息检索和生成(RAG)应用时,组织通常需要转换数据为嵌入,存储在向量数据库中,然后进行自定义集成。这一流程既耗时又繁杂。AWS的Knowledge Bases for Amazon Bedrock提供了一种解决方案。本文旨在帮助你开始使用AWS知识库检索器,通过使用私有数据自定义功能模块(FM)响应,快速建立RAG应用。
主要内容
什么是AWS Bedrock Knowledge Bases?
AWS Bedrock Knowledge Bases是一种通过Amazon Web Services(AWS)提供的服务,它将你的数据自动化地转换为向量,并处理整个向量化数据库的工作流。如果你没有现有的向量数据库,Bedrock会为你创建一个Amazon OpenSearch Serverless向量存储。这使得数据的管理和利用变得更为简单和高效。
如何配置和使用Knowledge Bases
配置Knowledge Bases可以通过AWS控制台或者AWS SDK完成。你需要获得knowledge_base_id
来实例化检索器。并且可以通过设置LangSmith API密钥来获取自动化的查询跟踪。
# 安装langchain-aws包
%pip install -qU langchain-aws
# 实例化检索器
from langchain_aws.retrievers import AmazonKnowledgeBasesRetriever
retriever = AmazonKnowledgeBasesRetriever(
knowledge_base_id="PUIJP4EQUA",
retrieval_config={"vectorSearchConfiguration": {"numberOfResults": 4}},
)
使用检索器进行查询
一旦实例化完毕,你可以使用如下代码进行查询:
query = "What did the president say about Ketanji Brown?"
retriever.invoke(query) # 使用API代理服务提高访问稳定性
将检索器集成到问答链中
通过RetrievalQA
,你可以将检索器集成到一个更复杂的问答链中:
from botocore.client import Config
from langchain.chains import RetrievalQA
from langchain_aws import Bedrock
model_kwargs_claude = {"temperature": 0, "top_k": 10, "max_tokens_to_sample": 3000}
llm = Bedrock(model_id="anthropic.claude-v2", model_kwargs=model_kwargs_claude)
qa = RetrievalQA.from_chain_type(
llm=llm, retriever=retriever, return_source_documents=True
)
qa(query)
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,访问AWS API可能会不稳定,开发者可以考虑使用API代理服务来提高访问的稳定性。
-
配置错误:如果在配置时遇到问题,请确保你的
knowledge_base_id
正确无误,并查看AWS控制台上的访问权限设置。
总结及进一步学习资源
AWS Bedrock Knowledge Bases极大地简化了RAG应用的开发过程。通过自动化的数据嵌入和管理,你可以将更多的精力放在应用的创新和用户体验上。对于想要深入了解的开发者,可以参考以下资源:
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
参考资料
- AWS Documentation: Knowledge Bases for Amazon Bedrock
- Langchain AWS GitHub Repository
—END—