Press "Enter" to skip to content

使用Amazon SageMaker JumpStart,利用生成式AI和RAG构建安全的企业应用程序

生成式人工智能(Generative AI)是一种能够创造新内容和创意的人工智能,包括对话、故事、图像、视频和音乐。它由大型语言模型(LLMs)驱动,这些模型在大量数据上进行了预训练,通常被称为基础模型(FMs)。

随着这些LLMs或FMs的出现,客户可以简单地构建基于生成式AI的应用程序,用于广告、知识管理和客户支持。认识到这些应用程序的影响可以为客户提供增强的洞察力,并在组织中积极影响性能效率,实现简单的信息检索和自动化某些耗时的任务。

通过AWS上的生成式AI,您可以重新定义应用程序,创建全新的客户体验,并提高整体生产力。

在本文中,我们使用AWS Amplify构建一个安全的企业应用程序,该应用程序调用Amazon SageMaker JumpStart基础模型、Amazon SageMaker端点和Amazon OpenSearch Service,以说明如何创建文本到文本或文本到图像以及检索增强生成(RAG)。您可以使用本文作为使用AWS服务构建生成式AI领域安全企业应用程序的参考。

解决方案概述

该解决方案使用SageMaker JumpStart模型将文本到文本、文本到图像和文本嵌入模型部署为SageMaker端点。这些SageMaker端点通过Amazon API Gateway和AWS Lambda函数在Amplify React应用程序中使用。为了保护应用程序和API免受意外访问,将Amazon Cognito集成到Amplify React、API Gateway和Lambda函数中。SageMaker端点和Lambda部署在私有VPC中,因此API Gateway到Lambda函数的通信使用API Gateway VPC链接进行保护。以下工作流程图说明了该解决方案。

使用Amazon SageMaker JumpStart,利用生成式AI和RAG构建安全的企业应用程序 四海 第1张

工作流程包括以下步骤:

  1. 初始设置:使用SageMaker JumpStart FMs将SageMaker端点部署为三个端点,这些端点是从SageMaker JumpStart模型创建的。用于生成图像的文本到图像模型是一个Stability AI稳定扩散基础模型。用于生成文本并部署在解决方案中的文本到文本模型是一个Hugging Face Flan T5 XL模型。用于生成嵌入以索引到Amazon OpenSearch Service或搜索传入问题的上下文的文本嵌入模型是一个Hugging Face GPT 6B FP16嵌入模型。可以根据用例和模型性能基准部署替代LLMs。有关基础模型的更多信息,请参阅入门Amazon SageMaker JumpStart。
  2. 您可以从计算机上访问React应用程序。React应用程序有三个页面:一个页面用于接收图像提示并显示生成的图像;一个页面用于接收文本提示并显示生成的文本;一个页面用于接收问题、查找与问题匹配的上下文,并显示文本到文本模型生成的答案。
  3. 使用Amplify库构建的React应用程序托管在Amplify上,并在Amplify主机URL上提供给用户。Amplify提供React应用程序的托管环境。使用Amplify CLI引导设置Amplify托管环境,并将代码部署到Amplify托管环境中。
  4. 如果您尚未进行身份验证,将使用Amplify React UI库对其进行Amazon Cognito身份验证。
  5. 当您提供输入并提交表单时,请求将通过API Gateway进行处理。
  6. Lambda函数对用户输入进行清理,并调用相应的SageMaker端点。Lambda函数还根据LLM期望的格式构建来自清理后用户输入的提示。这些Lambda函数还重新格式化LLMs的输出,并将响应发送回用户。
  7. 为文本到文本(Flan T5 XXL)、文本到嵌入(GPTJ-6B)和文本到图像模型(Stability AI)部署了SageMaker端点。使用推荐的默认SageMaker实例类型部署了三个单独的端点。
  8. 使用文本到嵌入模型生成文档的嵌入,并将这些嵌入索引到OpenSearch Service。启用了k-最近邻(k-NN)索引,以允许从OpenSearch Service搜索嵌入。
  9. AWS Fargate作业将文档分割成较小的包,并调用文本到嵌入LLM模型,并将返回的嵌入索引到OpenSearch Service,以供之前描述的上下文搜索。

数据集概述

此解决方案使用的数据集是Hugging Face存储库中的pile-of-law。该数据集是一个大型的法律和行政数据语料库。在本示例中,我们使用该存储库中的train.cc_casebooks.jsonl.xz。这是一个以JSONL格式精心策划的教育案例书集,符合LLMs的要求。

前提条件

开始之前,请确保您具备以下前提条件:

  • 一个AWS账户。
  • 将Amazon SageMaker Studio域管理策略附加到AWS身份和访问管理(IAM)执行角色。有关为角色分配权限的说明,请参阅Amazon SageMaker API权限:操作、权限和资源参考。在这种情况下,您需要按照分配给Amazon Augmented AI(Amazon A2I)的权限进行分配。有关更多信息,请参阅Amazon SageMaker基于身份的策略示例。
  • 一个Amazon Simple Storage Service(Amazon S3)存储桶。有关说明,请参阅创建存储桶。
  • 在本文中,您将使用Python使用AWS Cloud Development Kit(AWS CDK)。请按照入门指南中的说明设置本地环境并引导启动开发账户。
  • 此AWS CDK项目需要SageMaker实例(两个ml.g5.2xlarge和一个ml.p3.2xlarge)。您可能需要申请配额增加。

实施解决方案

在此AWS样本GitHub存储库中提供了包含所有架构组件的AWS CDK项目。要实施此解决方案,请执行以下操作:

  1. 将GitHub存储库克隆到您的计算机。
  2. 转到根文件夹。
  3. 初始化Python虚拟环境。
  4. 安装requirements.txt文件中指定的所需依赖项。
  5. 在项目文件夹中初始化AWS CDK。
  6. 在项目文件夹中引导AWS CDK。
  7. 使用AWS CDK deploy命令部署堆栈。
  8. 转到项目文件夹中的Amplify文件夹。
  9. 初始化Amplify并接受CLI提供的默认值。
  10. 添加Amplify托管。
  11. 从Amplify文件夹中发布Amplify前端,并在运行结束时注意提供的域名。
  12. 在Amazon Cognito控制台中,向部署的Amazon Cognito实例添加用户。
  13. 转到步骤11中的域名,并提供Amazon Cognito登录详细信息以访问应用程序。

触发OpenSearch索引作业

AWS CDK项目部署了一个名为GenAIServiceTxt2EmbeddingsOSIndexingLambda的Lambda函数。在Lambda控制台上导航到此函数。

使用Amazon SageMaker JumpStart,利用生成式AI和RAG构建安全的企业应用程序 四海 第2张

以空负载运行测试,如下面的截图所示。

使用Amazon SageMaker JumpStart,利用生成式AI和RAG构建安全的企业应用程序 四海 第3张

此Lambda函数会触发Amazon Elastic Container Service(Amazon ECS)中运行的Fargate任务。此Fargate任务接受包含的JSONL文件来进行分段和创建嵌入索引。每个分段的嵌入是调用作为AWS CDK项目的一部分部署的文本到嵌入LLM端点的结果。

清理

为了避免未来的费用,删除SageMaker端点并停止所有Lambda函数。还要删除在运行应用程序工作流时创建的Amazon S3中的输出数据。在删除存储桶之前,必须删除S3存储桶中的数据。

结论

本文中,我们演示了使用生成式AI和RAG创建安全企业应用程序的端到端方法。此方法可用于在AWS上构建安全可扩展的生成式AI应用程序。我们鼓励您将AWS CDK应用程序部署到您的账户并构建生成式AI解决方案。

其他资源

关于AWS上生成式人工智能应用的更多信息,请参考以下内容:

  • 使用Amazon SageMaker基础模型自动生成测验题目,加速学习以备考AWS认证考试
  • 使用Amazon SageMaker、Amazon OpenSearch Service、Streamlit和LangChain构建强大的问答机器人
  • 使用AWS CDK部署Amazon SageMaker JumpStart中的生成式人工智能模型
  • 使用Amazon SageMaker JumpStart快速开始在AWS上进行生成式人工智能开发
  • 使用Amazon SageMaker JumpStart在AWS上构建无服务器会议摘要后端,利用大型语言模型
Leave a Reply

Your email address will not be published. Required fields are marked *