p } ?>

使用 Amazon Bedrock 知识库提升 RAG 在数值分析中的应用 机器学习博客

使用Amazon Bedrock知识库提升数值分析的RAG技术

关键要点

在本文中,我们探讨了如何通过Amazon Bedrock知识库来优化检索增强生成RAG技术,以改善数值分析。RAG是一种强大的技术,能够使基础模型FMs利用外部知识源生成更好的文本。然而,在面对复杂嵌套表格时,该技术带来了挑战。通过三种功能的结合,Amazon Bedrock知识库为这一问题提供了解决方案。

在生成AI的领域中,检索增强生成RAG技术已成为一种强大的处理方式,能够让基础模型FMs利用外部知识源来增强文本生成能力。

Amazon Bedrock 是一项完全托管的服务,通过单一API提供来自领先AI公司的高性能基础模型,如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI和Amazon。它还提供广泛的功能来构建具有安全性、隐私性和负责任AI的生成AI应用。Amazon Bedrock知识库 是一项完全面向托管的功能,帮助您实施整个RAG工作流程从数据获取到检索和提示增强无需构建与数据源的自定义集成和管理数据流。然而,RAG在数值分析方面仍然面临不少挑战,特别是在处理嵌套复杂表格时。Amazon Bedrock知识库的最新创新为这一问题提供了解决方案。

接下来,我们将探讨Amazon Bedrock知识库如何应对多个文档中的数值分析用例。

使用 Amazon Bedrock 知识库提升 RAG 在数值分析中的应用 机器学习博客

RAG的强大之处与局限性

使用RAG,引入了一种信息检索组件,可以利用用户输入从数据源中提取相关信息。用户查询和相关信息都被提供给大型语言模型LLM。该LLM利用新知识和训练数据生成更好的响应。

尽管这种方法对文本文件的应用具有很大潜力,但非文本元素例如表格的存在带来了显著挑战。其中一个问题是,表格结构本身在直接针对PDF或Word文档查询时可能难以解释。为了解决这个问题,可以将数据转换为文本、Markdown或HTML等格式。

另一个问题涉及对包含表格的文档进行搜索、检索和分块。RAG的第一步是将文档分块,以便将该数据块转换为向量,以实现有意义的文本表示。然而,当将这种方法应用于表格时,即使转换为文本格式,向量表示也可能无法捕捉表格中的所有关系。结果是,当尝试检索信息时,很多信息都会丢失。因此,LLM无法提供准确的答案。

Amazon Bedrock知识库提供以下三项功能来解决该问题:

功能描述混合搜索混合搜索通过向量表示和关键词检索信息,从而基于语义意义获取信息。因此,以前仅通过纯语义搜索所遗漏的信息得以检索,LLM可以准确提供正确答案。固定大小的数据分块您可以为最终转换为向量的数据指定固定大小。较小的大小意味着较少的数据量,反之亦然。从搜索结果中检索大量数据块这是从搜索结果返回的数据块数量。检索的结果越多,提供给LLM的上下文就越丰富。

通过结合这些功能,可以增强对多个包含数据表的文档中信息的数值分析。接下来的部分中,我们将示范如何使用一套来自Amazon的财报文档来实现这一方法。

解决方案概述

以下图示展现了用于分析数值文档的高层架构。

用户调用流程包括以下步骤:

用户上传一个或多个文档,启动工作流程。Streamlit应用将这些上传的文档存储到Amazon简单存储服务 (Amazon S3) 存储桶中。文档成功复制到S3存储桶后,事件自动触发AWS Lambda。Lambda函数调用Amazon Bedrock知识库API从上传的文档中提取嵌入核心数据表示。这些嵌入是表示文档核心特征和意义的结构化信息。文档处理并存储后,应用的GUI变为可交互状态。用户现在可以通过用户友好的界面以自然语言提出问题。当用户提交问题时,应用将查询转换为查询嵌入。这些嵌入包含了用户问题的本质,有助于从知识库中检索相关上下文。您可以使用Retrieve API直接查询知识库的信息。RetrieveAndGenerate API使用检索到的结果来增强基础模型的提示并返回响应。应用通过结合基于关键词和基于语义的混合搜索方法,搜索知识库中与用户查询相关的信息。此搜索旨在找到同时匹配明确术语和问题意图的上下文答案。当相关上下文被识别后,应用将该信息用户的查询和检索的上下文转发给LLM模块。LLM模块处理提供的查询和上下文,以生成响应。应用通过其GUI将生成的响应反馈给用户。完整的交互循环由用户最初的问题生成综合且具有上下文相关性的答案。

在接下来的部分中,我们将逐步介绍如何创建S3存储桶和知识库,部署Streamlit应用,同时使用AWS CloudFormation进行测试。

前期准备

您需要具备以下前期准备:

一个具有必要权限的AWS账户启动AWS CloudFormation的访问权限访问Amazon Bedrock上的Anthropic Claude 3 Sonnet和Amazon Titan Text Embeddings v2模型的权限已下载CloudFormation 模板到本地计算机

创建S3存储桶

完成以下步骤以创建您的S3存储桶:

在Amazon S3控制台中,选择导航面板中的存储桶。选择创建存储桶。输入唯一的存储桶名称,遵循S3存储桶命名规则。选择您希望创建存储桶的AWS区域,建议选择地理位置接近您的区域。保持其他设置为默认值,选择创建存储桶。

创建知识库

完成以下步骤以创建具有默认设置的知识库:

加速器官方下载在Amazon Bedrock控制台中,选择导航面板中构建工具下的知识库。选择创建知识库。在提供知识库详细信息部分,提供如下信息:对于知识库名称,输入名称。选择创建并使用新服务角色以进行AWS身份与访问管理 (IAM) 权限。在选择数据源部分,选中Amazon S3的单选按钮并选择下一步。在配置数据源部分,提供如下信息:对于S3 URI,输入您创建的存储桶的S3路径。对于分块和解析配置,选择自定义的单选按钮。对于分块策略,选择固定大小分块。对于最大令牌数,输入250。对于块间重叠百分比,输入30。其他保持默认,选择下一步。

在选择嵌入模型并配置向量存储部分,提供如下信息:对于嵌入模型,选择Titan文本嵌入v2。在向量数据库下,选择快速创建新的向量存储。其他保持默认设置,选择下一步。

审核知识库设置,选择创建知识库。

Amazon Bedrock将现在为您配置所需的资源并设置知识库,如下图所示注意:此过程可能需几分钟才能完成。请记录下显示的知识库ID。

点击数据源名称,并记录下显示的数据源ID。

创建Streamlit应用

上面完成知识库设置后,完成以下步骤以使用CloudFormation模板创建Streamlit应用:

在AWS CloudFormation控制台中,选择导航面板中的堆栈。选择创建堆栈。选择与新资源标准。对于模板源,选择上传模板文件。选择选择文件,并上传您之前下载的模板。输入堆栈名称。配置以下参数:知识库配置对于KnowledgeBaseID,输入您之前保存的知识库ID。对于DatasourceID,输入您之前保存的数据源ID。S3存储桶配置对于RAGDocumentInput,输入您创建的存储桶名称。子网配置对于SubnetId,选择您的公共子网。对于VpcId,选择您希望部署Streamlit应用的VPC ID。对于YourPublicIP,输入您访问Streamlit应用的公共IP地址。实例配置对于InstanceType和LatestLinuxAMI,您可以使用默认值。查看堆栈详情,并在能力部分选中复选框:我确认AWS CloudFormation可能创建IAM资源。选择创建堆栈以启动堆栈创建过程。这将需要几分钟来完成。

堆栈完成后,您可以在堆栈的输出标签页中找到Streamlit应用的URL。

现在,我们已经部署了Streamlit应用,让我们看看用户如何与之交互以及如何提问。

测试解决方案

我们可以将用户界面体验分为两个阶段:文档获取和文档查询。

文档获取工作流程包括以下步骤:

用户使用Streamlit应用上传文档。为进行测试,我们可以使用过去16个季度的亚马逊财报。应用将文档上传到S3存储桶中。上传事件触发Lambda函数。此函数启动获取工作以同步数据到知识库。根据指定的分块策略,知识库将S3存储桶中的文档转换为向量嵌入,并存储在默认的Amazon OpenSearch无服务器向量数据库中。此过程大约需要15分钟完成。您可以按照这里提到的步骤来检查同步历史记录,该历史记录包含关于数据源何时同步的详细信息。在开始在Streamlit应用中提问之前,请等待同步完成。

文档查询工作流程包括以下步骤:

用户在一个运行在亚马逊弹性计算云 (Amazon EC2)的Streamlit应用中与之互动,在其中输入关于文档的问题查询并接收响应。应用将查询传递给知识库。知识库返回最相关的文本。在此案例中,由于我们使用混合搜索,它返回的结果包括基于关键词和基于语义的结果。在混合搜索中,我们最大化返回的块数设置为100。应用调用Amazon Bedrock中的指定LLM,并将检索结果作为上下文,以及原始查询传递给LLM。LLM模型处理提示和上下文,返回响应。Streamlit应用向用户展示结果。

为了测试此设置,我们在AWS账户中部署了解决方案,并分析了过去16个季度的亚马逊财报。以下表格展示了默认分块的语义搜索与固定大小分块和最大结果的混合搜索的结果比较。

问题默认分块的语义搜索固定大小分块的混合搜索2020到2023年,科技和基础设施的总运营费用的变化是多少?根据搜索结果提供的信息,我找不到2020到2023年科技和基础设施总运营费用的确切变化。搜索结果提供了一些财务数据,但没有将运营费用细分为科技和基础设施等具体类别。没有这种细节,我无法确定该时间段内的这些费用的确切变化。根据财务信息,亚马逊2020年的科技和基础设施运营费用从427亿增加到856亿,增加了429亿美元。2020、2021和2022年的国际运营费用是多少?根据搜索结果,我找不到有关亚马逊2020、2021和2022年国际运营费用的信息。搜索结果提供的财务信息主要聚焦于亚马逊的整体运营费用、现金流和其他财务指标,但没有针对国际运营的费用进行具体细分。亚马逊的国际运营费用为:2020年:103695百万;2021年:128711百万;2022年:125753百万。

如上所示,混合搜索选项为所有问题提供了正确的答案。

清理

为防止在部署和测试此解决方案后产生费用,请删除存储桶、知识库和CloudFormation堆栈。

结论

在本文中,我们讨论了Amazon Bedrock知识库如何提供强大的解决方案,使得对文档进行数值分析成为可能。您可以在AWS账户中部署此解决方案,并使用它来分析不同类型的文档。随着我们不断推动生成AI的边界,像这样的解决方案将在打通非结构化数据与可操作见解之间的鸿沟方面发挥重要作用,使组织能够充分释放其数据资产的潜力。

要进一步探索Amazon Bedrock知识库的先进RAG功能,请

亚马逊Aurora MySQL版本3中的二进制日志优化 数据库博客
< 上一篇
新的 AWS 技能计划助力亚太地区做好 AI 准备 培训与认证博客
下一篇 >

评论