使用Zilliz Cloud和AWS Bedrock构建RAG:一个叙事指南

检索增强生成(RAG)是一种人工智能框架,它结合了信息检索和自然语言处理(NLP)来增强文本生成。在这个系统中,语言模型通过检索机制得到增强,使其能够响应查询搜索知识库或外部数据库。这样,它可以将最新和相关的信息整合到其响应中,从而产生更准确和内容丰富的输出。
Zilliz Cloud是一个提供工具的平台,用于高效地管理、分析和检索数据。它建立在Milvus向量数据库之上,为存储和处理大规模向量化数据提供解决方案。在RAG的背景下,Zilliz Cloud的向量数据库功能可以被用来存储和搜索大量的向量嵌入,促进RAG框架的检索组件。
AWS Bedrock是一个云服务,提供对各种预训练的基础模型的访问。它提供了一个强大的基础设施,用于部署和扩展NLP解决方案,允许开发人员将语言生成、理解和翻译的模型集成到他们的项目中。在RAG实现中,AWS Bedrock中可访问的语言模型可以处理生成方面,创建连贯且与上下文相关的文本响应,无缝整合检索到的信息。
让我们通过一个例子来看看Zilliz Cloud如何与AWS Bedrock集成。我们将通过这个代码示例,演示如何使用Zilliz Cloud和AWS Bedrock实现RAG应用程序,如图表一总结的那样。
70.1.PNG
图1. 使用Zilliz Cloud和AWS Bedrock实现RAG应用程序的主要步骤
下载包然后导入它们
! pip install --upgrade --quiet langchain langchain-core langchain-text-splitters langchain-community langchain-aws bs4 boto3
例如:
python
配置连接到AWS Bedrock和Zilliz Cloud
下一步配置所需的环境变量以连接到AWS和Zilliz Cloud服务。设置AWS的区域和访问密钥,以提供必要的凭据和区域配置,确保与AWS Bedrock服务的平滑集成。同样,配置Zilliz Cloud的URI和API密钥,允许应用程序安全地连接到Zilliz Cloud平台,该平台提供向量数据库功能,对RAG系统中的检索操作至关重要。
# 设置AWS区域和访问密钥环境变量
使用指定的凭据创建一个boto3客户端,连接到AWS Bedrock运行时服务,允许集成AWS Bedrock中的语言模型。初始化一个ChatBedrock实例,将其链接到客户端并配置为使用特定的语言模型,例如anthropic.claude-3-sonnet-20240229-v1:0。此设置为生成文本响应提供了必要的基础设施,具有模型特定的设置,如低温度参数以控制响应的可变性。初始化一个BedrockEmbeddings实例,用于处理文本嵌入。
python
收集和处理信息
有了嵌入模型实例化后,下一步是从外部源加载数据。创建一个WebBaseLoader实例以从特定网络源获取内容。在这种情况下,它被配置为从关于AI代理的博客文章中加载内容。加载器使用BeautifulSoup的SoupStrainer仅解析网页的特定部分,即那些具有类“post-content”、“post-title”和“post-header”的部分,确保仅检索相关内容。然后,加载器从指定的网络源检索文档,提供一组准备处理的内容。然后,我们使用RecursiveCharacterTextSplitter实例将检索到的文档分割成更小的文本块。这确保了内容是可管理的,并且可以输入到其他组件,如文本嵌入或语言生成模块,进行进一步处理。
python
# 使用text_splitter将文档分割成块docs = text_splitter.split_documents(documents)
生成响应
一个预定义的提示模板指导每个响应的结构,指示AI尽可能使用统计信息和数字,并在缺乏必要信息时避免编造答案。
python
从加载的文档和嵌入中初始化一个Zilliz向量存储,连接到Zilliz Cloud平台。该存储将文档组织为向量,便于快速有效地检索文档,以进行RAG操作。然后检索到的文档被格式化为连贯的文本,创建一个叙事,AI将其整合到其回复中,提供事实、有洞察力且与用户需求相关的答案。
def format_docs(docs): return "\n\n".join(doc.page_content for doc in docs)
最后,一个完整的RAG链用于生成AI响应,并展示了其用法。该链首先从向量存储中检索与用户查询相关的文档,使用检索器和格式化器处理它们,然后将它们传递给提示模板以格式化响应结构。这种结构化的输入然后被输入到语言模型以生成连贯的响应,该响应被解析为字符串格式并呈现给用户,提供准确、有信息的回答。
res = rag_chain.invoke("What is self-reflection of an AI Agent?")print(res)
模型的响应看起来像这样:
自我反思是自主AI代理通过分析和完善其过去的行动、决策和错误来逐步改进的重要能力。
AI代理自我反思的一些关键方面包括:1. 评估过去推理轨迹和行动序列的效率和效果,以识别潜在问题,如低效的规划或幻觉(在没有进展的情况下生成连续相同的行动)。2. 将过去的观察和记忆综合成更高层次的推断或摘要,以指导未来的行为。
Zilliz Cloud集成和AWS Bedrock的优势 如表1所示,Zilliz Cloud和AWS Bedrock无缝集成,为RAG应用程序提供效率、可扩展性和准确性。这种协同作用使得能够开发全面的解决方案来处理大型数据集,提供更准确的响应,并简化RAG链的实现。
70.1.PNG
技术干货
门槛一降再降,易用性大幅提升!Milvus 2.2.12 持续升级中
一句话总结 Milvus 2.2.12 :低门槛、高可用、强性能。
2023-7-27技术干货
LangChain 查询使用指「北」
LangChain 是一种 AI 代理工具,可以为以 ChatGPT 为代表的额大语言模型(LLM)增添更多功能。此外,LangChain 还具备 token 和上下文管理功能。本文主要通过查询 GPT 和查询文档两个示例介绍如何使用 LangChain。
2023-5-30技术干货
如何设计一个面向开发者全生命周期成本的全托管向量检索服务产品?
作为产品的设计者和开发者,必须始终以用户为中心,积极倾听他们的需求,并集中精力降低软件开发的全链路成本,而非过度追求极致性能或过分炫技。在这种背景下,降低开发者的综合使用成本已成为 Zilliz Cloud 和开发团队过去的主要使命。
2023-7-5