创建一个针对您独特数据集的多模态聊天机器人,使用 Amazon Bedrock FMs 机器学习博客

新闻动态

用 Amazon Bedrock FMs 创建基于你独特数据集的多模态聊天机器人

关键要点

利用 Amazon Bedrock 的多模态基础模型 (FMs) 创建聊天助手,可以处理图像和文本。使用 Retrieval Augmented Generation (RAG) 策略,提高聊天机器人的响应准确性。通过 Amazon OpenSearch Service 和 AWS Lambda 实现系统架构。该系统可广泛应用于各个行业,如零售和制造业,有效解决用户的具体问题。

随着大型语言模型 (LLMs) 的技术进步,越来越多的企业正在构建新的聊天机器人应用程序,以帮助外部客户或支持内部团队。许多情况下,企业构建了基于检索增强生成 (RAG) 的聊天助理,可以参考公司特定文档,以回答与特定业务或场景相关的问题。

在过去几个月,多模态基础模型的可用性和能力大幅提升。这些模型旨在理解和生成与图像相关的文本,缩小视觉信息和自然语言之间的差距。虽然这些多模态模型在回答问题和解释图像方面普遍有效,但它们的回答限制于自身训练数据集的信息。

在本文中,我们将展示如何使用 Amazon Web Services (AWS) 的 Amazon Bedrock 模型创建多模态聊天助手,用户可以提交图像和问题,文本响应将基于一组封闭的专有文档进行生成。这样的多模态助手可以在各行业中发挥重要作用。例如,零售商可以利用该系统更有效地销售产品例如,HDMI 适配器,问题是“我该如何将此适配器连接到我的智能电视?”。设备制造商可以构建应用程序,使他们的工作更加高效例如,损坏的机械设备,问题是“我需要什么类型的管道来修理这个?”。这种方法在图像输入对查询专有文本数据集至关重要的场景中非常有效。本文以一个来自汽车市场的合成数据集为例,演示如何让用户上传汽车图片、提问并基于汽车市场数据集收到响应。

解决方案概述

对于我们定制的多模态聊天助手,首先需要创建一个相关文本文档的向量数据库,以回答用户查询。 Amazon OpenSearch Service 是一种强大的高灵活度搜索引擎,允许用户基于多种词汇和语义检索方法获取数据。本文重点讨论文本文档,但有关复杂文档类型例如包含图像的文档的嵌入,请参见 使用托管在 Amazon Bedrock 和 Amazon SageMaker 上的多模态基础模型与幻灯片演示进行交互

在 OpenSearch Service 中获取文档后这是一次性设置步骤,我们使用 AWS CloudFormation 模板部署全面的端到端多模态聊天助手。以下系统架构表示用户上传图像、提问并基于存储在 OpenSearch 中的文本数据集得到文本响应的逻辑流程。

生成文本图像响应的逻辑流程如下:

步骤 1 和 2 用户的查询和相应的图像通过 Amazon API Gateway 连接到 AWS Lambda 函数,后者充当整体处理和协调的计算系统。步骤 3 Lambda 函数将查询图像存储在 Amazon S3 中,并使用指定的 ID,这对于后续的聊天助手分析可能有用。步骤 48 Lambda 函数协调一系列与多模态模型、LLM 和文本嵌入模型的 Amazon Bedrock 调用:使用查询和图像对 Claude V3 Sonnet 模型进行查询以生成文本描述。使用 Amazon Titan 文本嵌入 嵌入原始问题和文本描述的连接。从 OpenSearch Service 中检索相关文本数据。基于检索到的文档生成与原始问题相辅相成的响应。步骤 9 Lambda 函数将用户查询和答案存储在 Amazon DynamoDB 中,并与 Amazon S3 图像 ID 关联。步骤 10 和 11 将生成的文本响应发送回客户端。

初始设置 OpenSearch 索引可以通过一个 Amazon SageMaker 笔记本完成。

前提条件

使用多模态聊天助手解决方案时,需要具备一些可用的 Amazon Bedrock FMs。

在 Amazon Bedrock 控制台中,选择导航栏上的 模型访问。选择 管理模型访问。启用所有 Anthropic 模型,包括 Claude 3 Sonnet,以及 Amazon Titan 文本嵌入 V2 模型,如下图所示。

对于本文,我们建议在 useast1 或 uswest2 AWS 区域 启用这些模型。此时它们应立即激活并可用。

使用 AWS CloudFormation 进行简单部署

为了部署该解决方案,我们提供了一个名为 deploysh 的简单脚本,可以在不同区域部署端对端解决方案。该脚本可以直接通过 Amazon S3 获取,使用 aws s3 cp s3//awsblogsartifactspublic/artifacts/ML16363/deploysh。

通过 AWS 命令行界面 (AWS CLI),可以使用以下命令在各个区域部署此堆栈:

bashbash deploysh useast1

bashbash deploysh uswest2

堆栈的部署可能需要最长 10 分钟。完成堆栈部署后,注意记下 Amazon OpenSearch Serverless 集合的物理 ID,此 ID 将在后续步骤中使用。它的格式应类似于 zr1b364emavn65x5lki8。同时要记下 API 网关连接的物理 ID,格式应类似于 zxpdjtklw2,如下图所示。

填充 OpenSearch Service 索引

虽然 OpenSearch Serverless 集合已经实例化,但仍需使用汽车列表文档数据集创建并填充向量索引。为此,您需要使用 Amazon SageMaker 笔记本进行操作。

在 SageMaker 控制台中,导航到新创建的名为 MultimodalChatbotNotebook 的 SageMaker 笔记本如下面的图像所示,该笔记本将预填充 carlistingszip 和 TitanOSIndexipynb。

打开 TitanOSIndexipynb 笔记本后,将 hostid 变量更改为之前记录的集合物理 ID。

从上到下运行该笔记本,以创建并填充包含 10 个汽车列表的数据集的向量索引。

在运行填充索引代码后,可能需要几分钟时间才能在 OpenSearch Service 控制台上显示填充状态,如下图所示。

测试 Lambda 函数

接下来,通过提交测试事件 JSON 来测试 CloudFormation 堆栈创建的 Lambda 函数。在以下 JSON 中,将存储桶名称替换为您为部署解决方案创建的存储桶名称,例如,multimodalchatbotdeploymentACCOUNTNOREGION。

json{ bucket multimodalchatbotdeploymentACCOUNTNOREGION key jeepjpg questiontext 这辆车大概多少钱?}

您可以通过导航到所创建 Lambda 函数的 测试 面板,并使用上述 JSON 定义新的测试事件来设置此测试。然后,在事件定义的右上角选择 测试。

如果您的 Lambda 函数来自与 CloudFormation 模板中 allowlisted 的存储桶不同的存储桶,请确保在 Lambda 执行角色中添加相关权限。

Lambda 函数的运行可能需要 1020 秒主要取决于图像的大小。如果函数执行成功,您应该会收到类似于以下代码块的输出 JSON。下图显示了控制台上的成功输出。

json{ statusCode 200 body 根据 2013 年的 Jeep Grand Cherokee SRT8 列表,像描述的这辆车的报价可能在 17000 左右,即使有严重的车身损坏和高里程。这款强大的引擎、定制的设计以及越野能力可能证明这一价格的合理性。}

请注意,如果您刚启用模型访问,可能需要几分钟时间才能将访问权限传播到 Lambda 函数。

测试 API

为了集成到应用程序中,我们已将 Lambda 函数连接到可以从各种设备访问的 API 网关连接。我们在 SageMaker 笔记本中包含了一个笔记本,允许您通过问题和图像查询系统并返回响应。要使用该笔记本,请用通过 CloudFormation 堆栈创建的 API 网关连接的物理 ID 替换 APIGW 变量,并将 REGION 变量替换为基础设施部署的区域。然后,确保您的图像位置和查询设置正确,运行笔记本单元。您应该在 1020 秒内收到基于您自己的文本数据集的多模态查询输出,如下图所示。

注意,API 网关连接仅能从此特定笔记本访问,因此需要更全面的安全性和权限元素才能使系统进入生产阶段。

质性结果

基于图像提交查询的多模态聊天助手在许多场景下都是有用的。我们使用一个汽车销售数据集展示了该应用。例如,用户可能对他们正在查看的一辆车有疑问,因此拍摄一张照片并提交问题,比如“这辆车大概要多少钱?”。与其用 LLM 训练的通用信息回答问题可能已经过时,响应将基于您本地和特定的汽车销售数据集。对于此用例,我们从 Unsplash 获取图像,并使用合成创建的包含 10 个汽车列表的数据集来回答问题。10 个车的型号和年份在下图中列出。

创建一个针对您独特数据集的多模态聊天机器人,使用 Amazon Bedrock FMs 机器学习博客

在下表的示例中,您可以观察到回答不仅是基于视觉语言模型 (VLM) 系统识别的与输入图像最相似的汽车列表,同时也为问题提供了只有我们的封闭汽车数据集 carlistingszip 可获得的具体数字、成本和地点。

问题图像回答这辆车大概多少钱?2013 年 Jeep Grand Cherokee SRT8 列表与之相关,报价为 17000,尽管存在严重的事故车身损坏。然而,它保留了强大的 470 马力 V8 发动机,并且在服务记录中维护良好。这辆车的发动机大小是多少?2013 年 Volkswagen Beetle 的汽车列表提到它配备高效的 18L 涡轮增压发动机。列表中没有提供其他发动机详细信息。我可以在世界的哪个地方购买到这样的二手车?根据提供的汽车列表,2021 年特斯拉 Model 3 是与您感兴趣的车辆最为相似的。它描述为低里程、保持良好的 Model 3,状况完美,售价为 48000,地点位于西雅图地区。

延迟和定量结果

由于速度和延迟对聊天助手至关重要,而此解决方案由多个 API 调用到 FMs 和数据存储组成,因此测量每一步骤的速度很有意义。我们对各种 API 调用的相对速度进行了内部分析,下面的图表可视化了结果。

从最慢到最快的调用顺序为 Claude V3 Vision FM,平均耗时 82 秒。最终输出生成步骤图表中的 LLM Gen平均耗时 49 秒。Amazon Titan 文本嵌入模型和 OpenSearch Service 检索过程则快得多,平均分别耗时 028 秒和 027 秒。

在这些实验中,完整多阶段多模态聊天机器人平均时间为 158 秒。然而,如果您提交的是 22 MB 的图像,则整体时间可低至 115 秒,如果使用更低分辨率的图像,时间可能会更短。

清理

为了清理资源并避免费用,按照以下步骤操作:

确保从 Amazon DynamoDB 和 Amazon S3 保存所有重要数据。手动清空并删除两个已配置的 S3 存储桶。从 CloudFormation 控制台删除已部署的资源堆栈以清理资源。

结论

从在线聊天助手到帮助销售人员达成交易的工具,AI 助手是一项迅速成熟的技术,旨在提高各行业的效率。这些助手通常旨在产生基于 RAG 的自定义文档和数据集的回答,而最新一步是开发一个多模态聊天助手,它能够根据封闭的文本数据集回答多模态问题。

安卓加速器下载

在本文中,我们演示了如何创建一个可以接收图像和文本输入并产生基于您自己数据集的文本响应的多模态聊天助手。该解决方案适用于从市场到客户服务的各种应用场景,这些场景需要根据多模态输入查询从特定领域数据集中获取的答案。

我们鼓励您自行部署该解决方案,尝试不同的图像和文本数据集,并探索如何协调各种 Amazon Bedrock FMs

使用 Google Cloud Platform 原生工作负载身份访问 AWS作者:Simran Singh 和 Rashmi Iyer,发表于 2023年12月22日分类:中级 (200)、多云、安全、身份与合规、技术如何做永久链接评论 分享关键要点本文展示如何通过 Google Cloud Pl...

Amazon Keyspaces新增支持冻结集合关键要点新增冻结集合:Amazon Keyspaces现支持使用冻结关键字存储集合数据类型如列表、集合和映射作为不可变值。与开源Cassandra的一致性:冻结集合功能与开源Cassandra一致,无需重构即可在Amazon Keyspaces上运行现...