项目展示

  • 首页Our Projects构建可扩展的无服务器 RAG 工作流,使用 Amazon OpenSearch Serverless

构建可扩展的无服务器 RAG 工作流,使用 Amazon OpenSearch Serverless

2026-01-27 14:29:53 24

使用向量引擎在 Amazon 中构建可扩展且无服务器的 RAG 工作流

关键要点

在追求更高效、以客户为中心的支持系统过程中,组织通过部署先进的生成性人工智能应用程序来提升服务水平。此类应用程序在多语言支持、情感分析、个人可识别信息PII检测和对话搜索等四个重要领域表现出色。通过利用 Amazon Bedrock 和 OpenSearch Serverless 的结合,组织能够基于特定领域数据生成高质量的响应,从而提升客户体验并推动销售增长。

在本文中,我们将展示如何通过将 Amazon OpenSearch Serverless 的向量引擎与 Amazon Bedrock 上托管的 LLM如 Anthropic Claude相结合,构建无服务器的 RAG 工作流。该解决方案提供了可扩展的方法,以支持多语言、情感分析、PII 检测和对话 AI。

介绍

为了实现更高效和以客户为中心的支持系统,组织开始部署先进的生成性人工智能应用。这些应用程序的目标是提升多语言支持、情感分析、个人可识别信息PII检测和对话搜索等重要领域的能力。全球客户现在可以用他们喜欢的语言与应用进行互动,而这些应用也能够判断客户的情感状态、隐藏敏感的个人信息,并提供具有上下文感知的回应。这种全面的方法不仅增强客户体验,还能提升效率,确保数据隐私合规,并推动客户保留和销售增长。

生成性人工智能应用在客户支持领域具有变革潜力,提供灵活的解决方案,能无缝集成到组织的业务运营中。结合多语言支持、情感分析、PII 检测和对话搜索的能力,这些应用有望成为游戏规则改变者,使组织能够提供个性化、高效和安全的支持服务,从而实现客户满意度、成本节约、数据隐私合规和营收增长。

Amazon Bedrock 和基础模型如 Anthropic Claude 准备推动一波新的 AI 采纳,为更自然的对话体验提供支持。然而,面临的一大挑战是根据广泛的领域特定数据集调整这些通用模型,以生成有价值和准确的响应。此时,检索增强生成RAG技术发挥了至关重要的作用。

RAG 允许从数据库或文档库中检索相关数据,为大型语言模型LLMs提供有益的上下文。这种额外的上下文帮助模型生成更具体的高质量响应,以适应特定领域的需求。

在本文中,我们通过将 Amazon OpenSearch Serverless 的向量引擎 与 Anthropic Claude 结合使用,演示如何构建无服务器的 RAG 工作流。这种组合提供了一种可扩展的方法,以实现应用程序中的高级自然语言功能,包括以下几点:

多语言支持:该解决方案利用 LLM如 Anthropic Claude处理多语言查询的能力,无需额外训练即可实现真正的多语言功能,区别于传统的机器学习ML系统需在每种语言中进行训练数据准备。情感分析:该解决方案使您能够检测文本输入如客户评论、社交媒体帖子或调查的正面、负面或中立情感。LLMs 可以解释所推断情感的原因,描述文本的哪些部分促成了积极或消极的分类。这种可解释性有助于在模型的预测中建立信任。潜在的用例包括分析产品评论以识别痛点或机会、监测社交媒体的品牌情感或收集客户调查的反馈。PII 检测与修正:Claude LLM 可以准确地识别多种类型的 PII如姓名、地址、社会安全号码和信用卡号码,并使用占位符或通用值替换它,同时保持周围文本的可读性。这使组织能够遵守 GDPR 等法规,并防止敏感客户数据的泄露。它还帮助自动化劳动力密集型的 PII 修正过程,降低融资、客户支持和数据分享等多个用例中的敏感数据泄露风险。

通过精心的提示设计,您可以利用单个 LLM 实现上述用例。关键在于构建明确表达所需任务的提示模板。提示设计使得我们能够利用 LLM 中已存在的巨大知识,实现高级自然语言处理NLP任务,同时根据我们的特定需求量身定制模型的功能。经过精心设计的提示能够释放模型的能力和潜力。

通过 Amazon OpenSearch Serverless 的向量数据库功能,您可以存储文档的向量嵌入,从而实现超快的语义而非关键字相似性搜索,以寻找与提示最相关的段落。

继续阅读,了解如何使用 OpenSearch Serverless 向量数据库和 Amazon Bedrock 构建您自己的 RAG 解决方案。

解决方案概述

下图展示了一个可扩展的、完全托管的基于 RAG 的工作流,适用于语言翻译、情感分析、PII 数据检测和修正以及对话 AI 等众多生成性 AI 应用。该预构建解决方案分为两个阶段。第一阶段是从非结构化文档生成向量嵌入并将这些嵌入保存到 OpenSearch Serverless 的向量化数据库索引中。在第二阶段,用户查询被转发到 Amazon Bedrock Claude 模型,并附带向量化上下文,以提供更准确和相关的响应。

在接下来的部分中,我们将更详细地讨论架构的两个核心功能:

索引领域数据使用增强上下文查询 LLM

索引领域数据

在本节中,我们将讨论数据索引阶段的详细信息。

使用 Amazon Titan 生成嵌入

我们使用 Amazon Titan 嵌入模型 来生成向量嵌入。该嵌入模型具有 1536 个维度,能够捕捉语义上的细微差别和关系。嵌入可以通过 Amazon Bedrock 的无服务器体验获得,使用单一 API 访问,而无需管理基础设施。以下代码展示了如何使用 Boto3 客户端生成嵌入。

pythonimport boto3import json

bedrockclient = boto3client(bedrockruntime)

使用 Amazon Titan 嵌入模型生成嵌入

response = bedrockclientinvokemodel( body=jsondumps({inputText Hello World}) modelId=amazontitanembedtextv1 accept=application/json contentType=application/json)result = jsonloads(response[body]read())embeddings = resultget(embedding)print(fEmbeddings gt {embeddings})

将嵌入存储在 OpenSearch Serverless 向量集

OpenSearch Serverless 提供了一个向量引擎用于存储嵌入。随着索引和查询需求的波动,OpenSearch Serverless 会自动根据需求进行扩展,无需预测容量或管理基础设施。

在 OpenSearch Serverless 中,您无需设置集群,而是用 OpenSearch 容量单位OCUs定义容量。OpenSearch Serverless 会扩展到您定义的最大 OCU 数量。您将被收取至少 4 个 OCUs 的费用,这可以在多个共享相同 AWS 密钥管理服务 (AWS KMS) 密钥的集合中进行共享。

下面的屏幕截图展示了在 OpenSearch Serverless 控制台上如何配置容量限制。

使用领域数据查询 LLM

在本节中,我们将讨论查询阶段的详细信息。

生成查询嵌入

当用户查询数据时,我们首先使用 Amazon Titan 嵌入生成查询的嵌入。OpenSearch Serverless 向量集采用近似最近邻ANN算法来查找与查询嵌入最接近的文档嵌入。ANN 算法使用余弦相似度来衡量嵌入的用户查询与索引数据之间的接近程度。OpenSearch Serverless 将返回与用户查询嵌入距离最小、相似度最高的文档。以下代码展示了我们的向量搜索查询:

pythonvectorquery = { size 5 query {knn {embedding {vector embeddedsearch k 2}}} source False fields [text doctype] }

在 Amazon Bedrock 上查询 Anthropic Claude 模型

OpenSearch Serverless 通过匹配嵌入向量为特定查询找出相关文档。我们用这些上下文增强提示,然后查询 LLM。在此示例中,我们使用 AWS SDK for PythonBoto3 在 Amazon Bedrock 上调用模型。AWS SDK 提供了以下 API 以与 Amazon Bedrock 上的基础模型进行交互:

invokemodelinvokemodelwithresponsestream

以下代码调用我们的 LLM:

构建可扩展的无服务器 RAG 工作流,使用 Amazon OpenSearch Serverless

pythonimport boto3import json

bedrockclient = boto3client(bedrockruntime)

modelid 可以是 anthropicclaudev2、anthropicclaudev1、anthropicclaudeinstantv1

response = bedrockclientinvokemodelwithresponsestream( body=jsondumps(prompt) modelId=modelid accept=application/json contentType=application/json )

前提条件

在您部署该解决方案之前,请查看前提条件。

部署解决方案

该代码示例以及部署步骤可在GitHub 仓库中找到。以下屏幕截图展示了如何使用 AWS CloudShell 部署解决方案。

测试解决方案

该解决方案提供了一些用于索引的示例数据,如下面的屏幕截图所示。您也可以索引自定义文本。最初,对文档的索引可能需要一些时间,因为 OpenSearch Serverless 需要创建一个新的向量索引并进行文档索引。后续请求会更快。如需删除向量索引并重新开始,请选择 重置。

以下屏幕截图展示了如何在索引后以多种语言查询您的领域数据。您还可以尝试对自定义文本进行情感分析或 PII 数据检测和修正。响应通过 Amazon API Gateway 的 WebSockets 进行流式传输。

清理

要清理资源,请通过 AWS CloudFormation 控制台删除以下 AWS CloudFormation 堆栈:

LlmsWithServerlessRagStackApiGwLlmsLambda

结论

在本文中,我们提供了一个 端到端的无服务器解决方案,适用于 RAG 基础的生成性 AI 应用。该解决方案不仅为您提供了一个具有成本效益的选择,尤其是在 GPU 成本和硬件可用性挑战面前,而且简化了开发过程,降低了运营成本。

通过 AWS 您可以随时了解生成性人工智能领域的最新进展。如果您想了解如何开始,请查看 生成性 AI 创新中心。

关于作者

Fraser Sequeira 是一名位于印度孟买的 AWS 初创企业解决方案架构师。在 AWS,Fraser 与初创企业密切合作,设计和构建基于云的解决方案,专注于分析和流处理工作负载。他在云计算方面拥有超过 10 年的经验,对大数据、实时分析和在 AWS 上构建事件驱动架构拥有深入的专业知识。他喜欢跟随 AWS 的最新技术创新,并与客户分享他的学习经验。空闲时间,他喜欢琢磨新的开源技术。

一元云购官网

Kenneth Walsh 是一名位于纽约的高级解决方案架构师,专注于 AWS 市场。Kenneth 对云计算充满热情,并喜欢成为客户的信任顾问。当他不与客户一起进行云迁移时,他喜欢烹饪、有声书、电影,以及与家人和狗共度时光。

Max Winter 是 AWS 金融服务客户的首席解决方案架构师。他与独立软件供应商客户合作,设计解决方案,使他们能够利用 AWS 服务的力量来自动化和优化他们的业务。在空闲时间,他喜欢与家人一起徒步旅行和骑自行车,听音乐和观看戏剧,进行数字摄影和 3D 建模,并向他几乎成年的孩子传授科学和阅读的热爱。

Manjula Nagineni 是一名位于纽约的 AWS 高级解决方案架构师。她与大型金融服务机构合作,架构和现代化其大型应用程序,同时采用 AWS 云服务。她对以云原生的方式设计大数据工作负载充满热情。她在软件开发、分析和多个领域如金融、零售和电信的架构方面拥有超过 20 年的 IT 经验。

订阅我们的时事通讯

获取更多更新