本文档提供了一个参考架构,可用于设计基础设施,以便使用 Google Agentspace 和 Vertex AI 运行具有检索增强生成 (RAG) 功能的生成式 AI 应用。此参考架构演示了如何使用托管服务并部署单个 AI 代理来促进端到端 RAG 数据流。Google Agentspace 可作为企业内智能体编排的统一平台。Vertex AI 可加速自定义智能体的开发和部署,并提供托管数据存储区,以便于 RAG 高效检索。
本文档的目标受众群体包括生成式 AI 应用的架构师、开发者和管理员。本文档假定您对 AI、机器学习 (ML) 和大语言模型 (LLM) 概念具有基本的了解。本文档未提供有关如何设计和开发生成式 AI 应用的指导。如需了解如何设计应用,请参阅开发生成式 AI 应用。
架构
下图高度概括地介绍了本文档中介绍的架构:
上图中的架构包含两个子系统:数据注入和服务。
- 数据注入子系统可从外部来源注入和准备数据,以供 RAG 使用。子系统会为提取的数据生成嵌入,并使用这些嵌入在受管理的 Datastore 中构建和维护可搜索的矢量索引。
- 服务子系统包含生成式 AI 应用的前端和后端服务。
- 前端服务处理与应用用户的查询-响应流程,并将查询转发到后端服务。
- 后端服务使用 Google Agentspace 和 Vertex AI 来构建和部署 AI 智能体,以编排 RAG 流程。此流程使用已编入索引的向量数据来生成情境相关且符合 Responsible AI 安全过滤条件的回答。
下图展示了此架构的详细视图:
以下部分介绍了上述架构图的每个子系统中的数据流。
数据注入子系统
数据注入子系统从外部来源注入数据,并为 RAG 准备数据。以下是数据注入和准备流程中的步骤:
- 数据工程师将外部来源的数据上传到 Cloud Storage 存储桶。外部来源可以是应用、数据库或流式传输服务。
- 完成后,Cloud Storage 会向 Pub/Sub 主题发布一条消息。
- Pub/Sub 主题会触发在 Cloud Run functions 中运行的处理作业。
- Cloud Run 函数通过生成元数据并将其存储为 JSON Lines (JSONL) 文件来处理原始数据。JSONL 文件存储在单独的 Cloud Storage 存储桶中。
- 完成后,Cloud Run Functions 会向 Pub/Sub 主题发布消息。
- Pub/Sub 主题会触发在 Google Agentspace 内的托管数据存储区中运行的处理作业。处理作业从 Cloud Storage 存储分区中提取原始注入数据和元数据,然后解析数据并将其分块,以便在提供服务期间高效检索数据。Google Agentspace 会自动生成向量嵌入,无需进行任何配置。
服务子系统
服务子系统处理生成式 AI 应用与其用户之间的查询-响应流。以下是服务流程中的步骤:
- 应用用户通过某个 Cloud Run 前端服务发送查询。 您可以针对不同的体验(例如聊天机器人界面、搜索页面或移动应用)自定义这些服务。
- 前端服务收到查询,然后将查询转发到集中式 Cloud Run 后端服务。此后端提供了一个统一的端点,以支持所有不同的前端客户端。后端服务还会执行必要的预处理,其中可能包括为搜索查询构建过滤条件。这种方法可确保前端透明地处理逻辑。
- 后端服务使用 Google Agentspace API 端点将准备好的请求发送到 Google Agentspace,以启动 RAG 工作流。
- 为了处理查询,Google Agentspace 使用企业搜索和自定义代理来执行以下任务:
- 创建用户查询的嵌入。
- 对受管理的 Datastore 中的已编入索引的数据执行语义搜索,以查找最相关的信息。
- 使用从受管理的 Datastore 中检索到的数据扩充原始查询,以创建详细的情景化提示。
- 根据增强的提示生成最终回答。
- Google Agentspace 将生成的回答发送到 Cloud Run 后端服务。
- 后端服务将最终响应返回给发送原始请求的前端服务。前端服务向应用用户显示答案。
使用的产品
此参考架构使用以下 Google Cloud 产品:
- Google Agentspace:一个托管平台,可作为企业内所有 AI 智能体的中央注册中心和互动中心,并支持应用无缝发现、治理和使用 AI 智能体。
-
Vertex AI:一个机器学习平台,用于训练和部署机器学习模型和 AI 应用以及自定义 LLM,以在依托 AI 技术的应用中使用。
- Vertex AI Agent Engine:一个平台,可让您在生产环境中运行、管理和扩缩 AI 代理。
- Cloud Run:一个无服务器计算平台,可让您直接在 Google 可伸缩的基础设施之上运行容器。
- Pub/Sub:一种异步且可伸缩的通讯服务,可将生成消息的服务与处理这些消息的服务分离开。
- Cloud Storage:适用于各种数据类型的费用低廉且不受限制的对象存储。数据可从 Google Cloud内部和外部访问,并且跨位置进行复制以实现冗余。
使用场景
此架构专为企业场景而设计,在这些场景中,生成式 AI 应用需要访问最新信息,并需要深入了解上下文才能提供准确的回答。
该架构包含一个自定义数据注入子系统,可满足两项关键的企业要求:
- 实时数据可用性:事件驱动型流水线会在新数据在组织中可用时立即处理这些数据,例如新的产品指南或更新的报告。该流水线还会将信息提供给您的受管数据存储区。此设计有助于缓解信息过时问题,因为它可确保数据可用性和使用之间的时间延迟最短。
- 丰富的上下文搜索:借助自定义处理作业,组织可以应用自己的业务逻辑,通过有价值的元数据来丰富数据。Cloud Run 函数可以使用产品线、作者、位置或文档类型等特定属性标记每个文档。这种丰富的元数据有助于智能体缩小搜索范围,并提供更精确、更贴合情境的回答。
RAG 是一种可提高从 LLM 生成的输出质量的有效技术。本部分提供可使用支持 RAG 的生成式 AI 应用的应用场景示例。
个性化产品推荐
在线购物网站可能会使用由 LLM 提供支持的聊天机器人来帮助客户查找产品或获取与购物相关的帮助。可以使用有关用户购买行为和网站互动模式的历史数据来增强用户提出的问题。数据可能包括存储在非结构化数据存储区中的用户评价和反馈,或存储在网络分析数据仓库中的搜索相关指标。然后,LLM 可以处理增强的问题,以生成个性化回复,用户可能认为这些回复更具吸引力和说服力。
临床辅助系统
医院中的医生需要快速分析和诊断患者的健康状况,从而做出有关适当的护理和药物的决策。使用 Med-PaLM 等医疗 LLM 的生成式 AI 应用可用于辅助医生完成临床诊断过程。应用生成的响应可以基于患者历史记录,具体方法是将医生的提示与来自医院电子健康记录 (EHR) 数据库或外部知识库(例如 PubMed)的数据结合在一起。
高效的法律研究
借助由生成式 AI 提供支持的法律研究,律师可以快速查询大量法规和判例法,以确定相关的法律先例或总结复杂的法律概念。可以使用从律师事务所专有的合同语料库、过往法律沟通和内部案例记录中检索到的数据来增强律师的提示,从而改进此类研究的输出结果。这种设计方法可确保生成的响应与律师专门从事的法律领域相关。
设计替代方案
本部分介绍了您可以在 Google Cloud中为支持 RAG 的生成式 AI 应用考虑的其他设计方法。
AI 基础设施替代方案
如果您需要使用全代管式向量搜索产品的架构,可以使用 Vertex AI 和 Vector Search,它们可为大规模向量搜索提供经过优化的服务基础设施。如需了解详情,请参阅使用 Vertex AI 和 Vector Search 且支持 RAG 的生成式 AI 应用的基础设施。
如果您想利用全托管式 Google Cloud 数据库(例如 AlloyDB for PostgreSQL 或 Cloud SQL)的向量存储功能,请参阅使用 Vertex AI 和 AlloyDB for PostgreSQL 的生成式 AI 的 RAG 基础设施。
如果您想使用 Ray、Hugging Face 和 LangChain 等开源工具和模型快速构建和部署支持 RAG 的生成式 AI 应用,请参阅使用 GKE 和 Cloud SQL 且支持 RAG 的生成式 AI 应用的基础设施。
应用托管方案
在本文档中显示的架构中,Cloud Run 是生成式 AI 应用和数据处理的主机。Cloud Run 是一款以开发者为中心的全代管式应用。您还可以将应用部署到 Vertex AI Agent Engine、GKE 集群或 Compute Engine 虚拟机。
在选择应用宿主时,请考虑配置灵活性和管理工作量之间的以下权衡取舍:
- 借助无服务器 Cloud Run 选项,您可以将自定义服务部署到预配置的受管环境中。为了托管前端服务和用于请求预处理的自定义后端逻辑,此架构需要能够部署自定义应用。
- 借助 Vertex AI Agent Engine 选项,您可以使用专为代理服务设计的全代管式平台。Vertex AI Agent Engine 可减少管理开销,并确保与 Google Agentspace 紧密集成。
- 使用 Compute Engine 虚拟机和 GKE 容器时,您需要负责管理底层计算资源,但可以更灵活地进行配置和控制。
如需详细了解如何选择合适的应用托管服务,请参阅以下文档:
其他基础设施选项
如需了解您可以在Google Cloud中为生成式 AI 应用使用的其他基础设施选项、支持的模型和接地技术,请参阅为您的生成式 AI 应用选择模型和基础设施。
设计考虑事项
本部分提供的指导可帮助您在 Google Cloud 中开发支持 RAG 的生成式 AI 架构,以满足您在安全性和合规性、可靠性、费用和性能方面的特定要求。本部分中的指南并非详尽无遗。根据生成式 AI 应用的特定要求以及您使用的 Google Cloud 产品和功能,您可能需要考虑其他设计因素和权衡因素。
如需简要了解 Google Cloud中特定于 AI 和机器学习工作负载的架构原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角。
安全性、隐私权和合规性
本部分介绍了设计注意事项和建议,以便在 Google Cloud 中设计满足工作负载安全性和合规性要求的拓扑。
商品 |
设计注意事项和建议 |
---|---|
Vertex AI |
Vertex AI 支持 Google Cloud 安全控制措施,可用于满足数据驻留、数据加密、网络安全和访问透明性的要求。如需了解详情,请参阅以下文档: Google Agentspace Enterprise 会在 60 天内删除用户请求的数据。如需了解详情,请参阅 Google Cloud上的数据删除。 生成式 AI 模型可能会生成有害的回答,尤其是在明确提示的情况下。为了提高安全性并减轻潜在的滥用风险,您可以配置内容过滤器来屏蔽有害的回答。如需了解详情,请参阅安全和内容过滤器。 |
Cloud Run |
默认情况下,Cloud Run 使用Google-owned and Google-managed encryption keys加密数据。如需使用您控制的密钥保护容器,您可以使用客户管理的加密密钥 (CMEK)。如需了解详情,请参阅使用客户管理的加密密钥。 如需确保仅将获得授权的容器映像部署到 Cloud Run,您可以使用 Binary Authorization。 Cloud Run 可帮助您满足数据驻留要求。Cloud Run 函数在所选区域内运行。 |
Cloud Storage |
默认情况下,Cloud Storage 使用 Google-owned and Google-managed encryption keys加密其存储的数据。如果需要,您可以使用 CMEK 或您自己的通过外部管理方法(如客户提供的加密密钥 [CSEK])管理的密钥。如需了解详情,请参阅数据加密选项。 在 Cloud Storage 中,您可以通过以下两种方法为用户授予存储分区和对象的访问权限:Identity and Access Management (IAM) 和访问权限控制列表 (ACL)。在大多数情况下,我们建议您使用 IAM,这可让您在存储桶级和项目级授予权限。如需了解详情,请参阅访问权限控制概览。 您通过 Cloud Storage 加载到数据注入子系统的数据可能包含敏感数据。您可以使用 Sensitive Data Protection 来发现敏感数据并对其进行分类和去标识化。如需了解详情,请参阅将 Sensitive Data Protection 与 Cloud Storage 搭配使用。 Cloud Storage 可帮助您满足数据驻留要求。Cloud Storage 会在您指定的区域内存储或复制数据。 |
Pub/Sub |
默认情况下,Pub/Sub 使用 Google-owned and Google-managed encryption keys对所有消息(包括静态消息和传输中的消息)进行加密。Pub/Sub 支持使用 CMEK 在应用层进行消息加密。如需了解详情,请参阅配置消息加密。 如果您有数据驻留要求,则可以配置消息存储政策,以便确保消息数据存储在特定位置。 |
如需了解特定于 AI 和机器学习工作负载的安全原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:安全性。
可靠性
本部分介绍在 Google Cloud中为部署构建和运营可靠的基础设施时应考虑的设计因素和建议。
商品 |
设计注意事项和建议 |
---|---|
Vertex AI |
Vertex AI 可确保静态数据驻留。Vertex AI 会将您的源数据(包括受管数据存储区中用于 RAG 的数据)存储在您选择的 Google Cloud 位置。这种将处理与存储分离的做法是该平台实现高可靠性和合规性的一个基本方面。 |
Cloud Run |
Cloud Run 是一项区域级服务,可在区域内的多个可用区同步存储数据。该服务会自动在各可用区之间对流量进行负载均衡。如果可用区服务中断,Cloud Run 作业将继续运行,并且数据不会丢失。如果区域服务中断,Cloud Run 作业将停止运行,直到 Google 解决服务中断问题。 个别 Cloud Run 作业或任务可能会失败。如需处理此类失败,您可以使用任务重试和检查点。 如需了解详情,请参阅作业重试和检查点最佳实践。 |
Cloud Storage |
您可以在以下三种位置类型之一中创建 Cloud Storage 存储分区:单区域、双区域或多区域。对于区域级存储分区中的数据,Cloud Storage 会跨一个区域内的多个可用区同步复制这些数据。为了获得更高的可用性,您可以使用双区域或多区域存储分区,其中 Cloud Storage 会跨区域异步复制数据。确保您的选择符合合规性要求。 |
如需了解特定于 AI 和机器学习工作负载的可靠性原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:可靠性。
费用优化
本部分将指导您优化您使用此参考架构构建的 Google Cloud 拓扑的设置和操作费用。
商品 |
设计注意事项和建议 |
---|---|
Vertex AI |
智能体调用的底层 AI 模型会直接影响使用该智能体的费用。价格根据每个请求的输入和输出令牌数量计算。如需了解详情,请参阅 Vertex AI 上的生成式 AI 配额和系统限制以及 Google Cloud的价格计算器。 如需了解如何最大限度地减少令牌数量以降低费用,请参阅优化提示和输出长度。 |
Cloud Run functions |
创建 Cloud Run 作业时,您需要指定要分配给容器实例的内存量和 CPU 量。 如需控制费用,请从默认 CPU 和内存分配开始。如需提升性能,您可以通过配置 CPU 限制和内存限制来增加分配量。 如果您可以预测 Cloud Run 作业的 CPU 和内存要求,则可以通过获取承诺使用折扣来节省资金。如需了解详情,请参阅 Cloud Run 承诺使用折扣。 |
Cloud Storage |
对于用于将数据加载到数据注入子系统的 Cloud Storage 存储桶,请根据工作负载的数据保留和访问频率要求来选择适当的存储类别。 例如,您可以选择 Standard 存储类别,并使用对象生命周期管理来控制存储费用。对象生命周期管理功能可根据您设置的条件,自动将对象降级为费用较低的存储类别或删除对象。 |
如需了解特定于 AI 和机器学习工作负载的费用优化原则和建议,请参阅 Well-Architected Framework 中的AI 和机器学习视角:费用优化。
性能优化
本部分介绍了设计注意事项和建议,以帮助您在 Google Cloud 中设计满足工作负载性能要求的拓扑。
商品 |
设计注意事项和建议 |
---|---|
Google Agentspace |
为了减少服务期间的延迟时间,请在代理生成完整输出之前发送模型响应,以实现响应流式传输。这样一来,您就可以实时处理输出,并立即更新界面和执行其他并发任务。流式传输可增强感知到的回答速度,并打造更具互动性的用户体验。如需了解详情,请参阅流式传输回答。 |
Cloud Run |
根据性能要求调整 Cloud Run 实例的内存和 CPU 分配。如需了解详情,请参阅为作业配置 CPU 限制和为服务配置内存限制。 |
Cloud Storage |
如需上传大型文件,您可以使用一种名为并行复合上传的方法。使用此策略时,大文件会拆分为各个块。您将这些块并行上传到 Cloud Storage,然后 Cloud Storage 会在 Google Cloud中重新组装数据。如果您有足够的网络带宽和磁盘速度,则并行复合上传的速度可能比常规上传操作快。但是,此策略存在一些限制和费用影响。如需了解详情,请参阅并行复合上传。 |
如需了解特定于 AI 和机器学习工作负载的性能优化原则和建议,请参阅 Well-Architected 框架中的 AI 和机器学习视角:性能优化。
部署
如需部署此参考架构,请使用 GitHub 中提供的 Terraform 示例。如需了解详情,请参阅使用 Google Agentspace 和 Vertex AI 的生成式 AI 应用的 RAG 基础设施。
后续步骤
- 了解 Google Agentspace 如何对文档进行分块以用于 RAG。
- 了解如何在 Cloud Run 上托管 AI 应用和代理。
- 了解 Responsible AI 最佳实践和 Vertex AI 的安全过滤条件。
- 了解大语言模型 (LLM) 的最佳实践。
- 如需简要了解 Google Cloud中特定于 AI 和机器学习工作负载的架构原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角。
- 如需查看更多参考架构、图表和最佳实践,请浏览 Cloud 架构中心。
贡献者
作者:Samantha He | 技术文档工程师
其他贡献者:
- Deepak Michael | 网络专家客户工程师
- Kumar Dhanagopal | 跨产品解决方案开发者
- Mark Schlagenhauf | 网络技术文档工程师
- Victor Morno | Cloud 网络产品经理
- Yehia Elshater | 现场解决方案架构师,生成式 AI,Google Cloud
- Paarth Mahajan | Google Cloud 网络专家