使用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
技术干货
如何选择合适的 Embedding 模型
检索增强生成(RAG)是生成式 AI (GenAI)中的一类应用,支持使用自己的数据来增强 LLM 模型(如 ChatGPT)的知识。 RAG 通常会用到三种不同的AI模型,即 Embedding 模型、Rerankear模型以及大语言模型。本文将介绍如何根据您的数据类型以及语言或特定领域(如法律)选择合适的 Embedding 模型。
2024-08-26技术干货
使用 Ollama、Llama 3.1 和 Milvus 实现Function Calling 功能
将函数调用(Function Calling)与 LLM 相结合能够扩展您的 AI 应用的能力。通过将您的大语言模型(LLM)与用户定义的 Function 或 API 集成,您可以搭建高效的应用,解决实际问题。
2024-10-25技术干货
GraphRAG 详解: 通过知识图谱提升 RAG 系统
检索增强生成(Retrieval Augmented Generation,RAG)是一种连接外部数据源以增强大语言模型(LLM)输出质量的技术。这种技术帮助 LLM 访问私有数据或特定领域的数据,并解决幻觉问题。因此,RAG 已被广泛用于许多通用的生成式 AI(GenAI)应用中,如 AI 聊天机器人和推荐系统。
2024-10-25