在 AWS 上使用 Amazon FSx for NetApp ONTAP 和 Amazon Bed
  • 3

在 AWS 中利用 Amazon FSx for NetApp ONTAP 和 Amazon Bedrock 构建基于 RAG 的生成式 AI 应用

关键要点

在本篇文章中,我们将展示如何结合 Amazon FSx for NetApp ONTAP 和 Amazon Bedrock 以创建基于检索增强生成RAG的生成式 AI 应用。该解决方案通过安全快速地将公司特定的非结构化用户文件数据引入到 Amazon Bedrock,提供了更具上下文的和准确的回应,同时确保数据的安全性与权限的控制。

概述

生成式人工智能AI应用通常采用一种叫做 检索增强生成RAG 的技术,使基础模型FMs能够访问到在训练期间未曾拥有的额外数据。这些数据用于丰富生成式 AI 的提示,以提供更具上下文和精准的回应,而无需对基础模型进行持续训练,此外还能提高透明度并减少幻觉。

在此文中,我们展示了如何使用 Amazon FSx for NetApp ONTAP 与 Amazon Bedrock 为您的生成式 AI 应用提供 RAG 体验。我们的解决方案利用 FSx for ONTAP 文件系统作为非结构化数据的来源,并将用户的现有文件夹与相关元数据不断填充到 Amazon OpenSearch Serverless 向量数据库,通过这些信息增强生成式 AI 的提示。

在开发使用 RAG 的生成式 AI 应用例如问答聊天机器人时,客户同样关心数据的安全性,防止最终用户从未经授权的数据源查询信息。我们的解决方案利用 FSx for ONTAP 使用户能够扩展现有的数据安全和访问机制,以增强 Amazon Bedrock 的模型响应。我们将 FSx for ONTAP 用作相关元数据的来源,特别是与用户的文件和文件夹附加的安全访问控制列表ACL,并将这些元数据填充到 OpenSearch Serverless 中。通过将访问控制操作与文件事件结合,我们的解决方案展示了 FSx for ONTAP 如何确保 Amazon Bedrock 仅使用已授权文件的嵌入,为连接到生成式 AI 应用的特定用户提供信息。

AWS 无服务器服务使构建生成式 AI 应用变得简单,提供自动扩展、内置高可用性和按需计费的模式。事件驱动的计算结合 AWS Lambda 非常适合计算资源密集型的按需任务,比如文档嵌入和灵活的大语言模型LLM调度,Amazon API Gateway 则提供了一个 API 接口,允许可插拔前端以及 LLM 的事件驱动调用。我们的解决方案还演示了如何在 Amazon Bedrock 和 FSx for ONTAP 之上利用 API Gateway 和 Lambda 构建一个可扩展、自动化、基于 API 的无服务器应用层。

解决方案概述

这个解决方案配置了一个 FSx for ONTAP 多可用区 文件系统,并加入了一个 AWS 托管的 Microsoft AD 域。一个 OpenSearch Serverless 向量搜索集合提供了可扩展且高性能的相似度搜索能力。我们使用 Amazon EC2 Windows 服务器作为 FSx for ONTAP 卷的 SMB/CIFS 客户端,并为卷中的 SMB 共享配置数据共享和 ACL。我们利用这些数据和 ACL 来测试 RAG 场景中与 Amazon Bedrock 相关的权限访问。

我们解决方案中的嵌入容器组件在 EC2 Linux 服务器上部署,并作为 NFS 客户端挂载到 FSx for ONTAP 卷上。它定期将现有文件夹及其安全 ACL 配置迁移到 OpenSearch Serverless中。它使用来自 FSx for ONTAP 文件系统的公司特定数据以及附加的元数据和 ACL填充 OpenSearch Serverless 向量搜索集合的索引。

风驰加速器15分钟免费

此解决方案实现了一个 RAG 检索 Lambda 函数,使得通过将生成式 AI 提示与您公司的特定数据和相关元数据包括 ACL结合使用 Amazon Bedrock API,来增强与 Amazon Bedrock 的 RAG 功能。RAG 检索 Lambda 函数会在 Amazon DynamoDB 表中存储用户交互的对话历史。

最终用户通过聊天机器人应用或直接通过 API Gateway 接口提交自然语言提示与解决方案进行交互。聊天机器人应用的容器利用 Streamlit 构建,并通过 AWS 应用负载平衡器 (ALB) 前端。当用户通过 ALB 向聊天机器人 UI 提交自然语言提示时,聊天机器人容器与 API Gateway 接口交互,随后调用 RAG 检索 Lambda 函数以获取用户的回复。用户随后也可以直接向 API Gateway 提交请求并获取响应。

架构图

以下架构图展示了我们解决方案的各种组件。

在 AWS 上使用 Amazon FSx for NetApp ONTAP 和 Amazon Bed

前提条件

完成以下必要步骤:

确保您已在 Amazon Bedrock 中具有模型访问权限。在本解决方案中,我们使用 Anthropic Claude v3 Sonnet。安装 AWS 命令行界面 (AWS CLI)。安装 Docker。安装 Terraform。

部署解决方案

本解决方案可在此 GitHub 仓库 下载。克隆该仓库并使用 Terraform 模板将所有组件及其所需配置进行预置。

克隆本解决方案的仓库: sh sudo yum install y unzip git clone https//githubcom/awssamples/genaibedrockfsxontapgit cd genaibedrockfsxontap/terraform

从 terraform 文件夹,通过 Terraform 部署整个解决方案: sh terraform init terraform apply autoapprove

此过程可能需要 1520 分钟才能完成。完成后,Terraform 命令的输出应如下所示:

plaintextapiinvokeurl = https//9ng1jjn8qiexecuteapiltregiongtamazonawscom/prodfsxmanagementip = toset([19819255230])fsxsecretid = arnawssecretsmanagerltregiongtltaccountidgtsecretAmazonBedrockFSxNetAPPONTAPa2fZEdIt0fBcS9fsxsvmsmbdnsname = BRSVMBEDROCK01COMlbdnsname = chatloadbalancer2040177936ltregiongtelbamazonawscom

加载数据并设置权限

为测试解决方案,我们将利用 EC2 Windows 服务器adhost作为 FSx for ONTAP 卷的 SMB/CIFS 客户端来共享示例数据并设置用户权限。这些权限随后用于通过解决方案的嵌入容器组件填充 OpenSearch Serverless 索引。按照以下步骤操作以将 FSx for ONTAP SVM 数据卷挂载为网络驱动器,上传数据到此共享网络驱动器并基于 Windows ACL 设置权限:

从 Terraform 模板的输出中获取 adhost 实例的 DNS。在您 AWS 控制台的 AWS Systems Manager Fleet Manager,找到 adhost 实例并 按照这里的说明使用远程桌面登录。使用域管理员用户 bedrock01Admin 并从 AWS Secrets Manager 获取密码。您可以从 Terraform 模板输出中找到密码的 Secret IDfsxsecretid。在此电脑下,右键点击网络,选择映射网络驱动器以挂载 FSx for ONTAP 数据卷。

选择驱动器字母,并使用 FSx for ONTAP 共享路径进行挂载(ltsvmgtltdomain gtcltvolumenamegt)。

将 Amazon Bedrock 用户指南 上传至共享网络驱动器,并设置权限仅限管理员用户使用确保在高级中禁用继承。

将 Amazon FSx for ONTAP 用户指南 上传至共享驱动器,确保权限设置为每个人。在 adhost 服务器上,打开命令提示符并输入以下命令以获取管理员用户的 SID: sh wmic useraccount where name=Admin get sid

使用聊天机器人测试权限

测试权限时,请从 Terraform 模板输出中获取 lbdnsname URL,并通过网络浏览器访问它。

对于提示查询,询问与 FSx for ONTAP 用户指南有关的任何常见问题。在我们的场景中,我们询问“如何创建一个 FSx for ONTAP 文件系统”,模型回复提供了详细步骤并在聊天窗口中提供了创建 FSx for ONTAP 文件系统的 AWS 管理控制台、AWS CLI 或 FSx API 的信息来源地图。

现在,让我们询问一个仅限管理员访问的 Amazon Bedrock 用户指南的问题。在我们的场景中,我们询问“如何使用基础模型与 Amazon Bedrock”,模型回复表示没有足够的信息来为问题提供详细答案。

此时,该模型应该返回步骤,详细说明如何与 Amazon Bedrock 一起使用基础模型,并提供模型用于生成响应的来源。

使用 API Gateway 测试权限

您也可以直接通过 API Gateway 查询模型。从 Terraform 模板输出中获取 apiinvokeurl 参数。

shcurl v ltapiinvokeurlgt/bedrockragretreival X POST H contenttype application/json d {sessionid 1prompt 什么是 FSxN ONTAP 文件系统? bedrockmodelid anthropicclaude3sonnet20240229v10 modelkwargs {temperature 10 topp 10 topk 500} metadata NA memorywindow 10}

然后以每个人的访问权限调用与 FSx for ONTAP 用户指南相关的查询,将 metadata 参数的值设置为 NA 以指示每个人的访问:

shcurl v ltapiinvokeurlgt/bedrockragretreival X POST H contenttype application/json d {sessionid 1prompt 什么是 Bedrock? bedrockmodelid anthropicclaude3sonnet20240229v10 modelkwargs {temperature 10 topp 10 topk 500} metadata S15214037439088129687778528720804991112 memorywindow 10}

清理

为了避免重复收费,在尝试解决方案之后请清理您的账户。从 terraform 文件夹中删除解决方案的 Terraform 模板:

shterraform apply destroy

结论

在本文章中,我们展示了一种解决方案,该方案使用 FSx for ONTAP 结合 Amazon Bedrock,并利用 FSx for ONTAP 对文件所有权和 ACL 的支持,提供 RAG 场景中的权限控制访问。我们的解决方案使您能够使用 Amazon Bedrock 构建生成式 AI 应用,并将 FSx for ONTAP 文件系统中的公司特定非结构化用户文件数据用于丰富生成式 AI 提示。该解决方案使您能够提供更相关、上下文特定且准确的响应,同时确保只有经过授权的用户可以访问这些数据。最后,该解决方案展示了 AWS 无服务器服务利用 FSx for ONTAP 和 Amazon Bedrock 实现自动扩展、基于事件的计算以及 API 接口,为您的 AWS 上的生成式 AI 应用程序提供支持。

欲获取更多有关如何开始构建 Amazon Bedrock 和 FSx for ONTAP 的信息,请参考以下资源:

Amazon Bedrock Workshop GitHub 仓库Amazon FSx for NetApp ONTAP 文件存储工作坊 GitHub 仓库NetApp 帮助客户充分发挥 GenAI 的潜力,利用 BlueXP 工作负载工厂和 Amazon Bedrock

作者介绍

Kanishk Mahajan是 AWS 的解决方案架构负责人,负责云转型和解决方案架构。Kanishk 专注于容器、云运营、迁移和现代化、AI/ML、安全性和合规性,并在这些领域担任技术领域社区成员。

Michael Shaul是 NetApp 首席技术办公室的首席架构师。在数据管理系统、应用程序和基础设施解决方案的构建方面有超过 20 年的经验。

Sasha Korman是技术愿景领导者,带领以色列和印度的动态开发和 QA 团队。Sasha 在 NetApp 工作已满 14 年,起初是程序员,他的实践经验与领导力在推动复杂项目取得成功方面发挥了关键作用。

Loading comments