本文档提供了一个参考架构,可用于通过 Gemini Enterprise 和 Gemini Enterprise Agent Platform 为具有检索增强生成 (RAG) 功能的生成式 AI 应用设计基础设施。此参考架构演示了如何使用托管式服务并部署单个 AI 智能体,以实现端到端 RAG 数据流。Gemini Enterprise 是一个统一的平台,可用于在整个企业中编排智能体。 Agent Platform 可加快自定义智能体的开发和部署,并提供代管式数据存储区,以便为 RAG 提供高效检索。
本文档的目标受众群体包括生成式 AI 应用的架构师、开发者和管理员。本文档假定您对 AI、机器学习 (ML) 和大语言模型 (LLM) 概念具有基本的了解。本文档未提供有关如何设计和开发生成式 AI 应用的指导。如需了解如何设计应用,请参阅开发生成式 AI 应用。
架构
下图简要展示了本文档介绍的架构:
上图中的架构包含两个子系统:数据注入和服务。
- 数据注入子系统会注入并准备来自外部来源的数据,以供在 RAG 中使用。该子系统会为提取的数据生成嵌入,并使用这些嵌入在代管式数据存储区中构建和维护可搜索的向量索引。
- 服务子系统包含生成式 AI 应用的前端和后端服务。
- 前端服务处理与应用用户的查询-响应流,并将查询转发到后端服务。
- 后端服务使用 Gemini Enterprise 和 Agent Platform 来构建和部署 AI 智能体,以编排 RAG 流程。此过程使用索引向量数据生成符合情境且遵循 Responsible AI 安全过滤器的回答。
下图展示了此架构的详细视图:
以下部分介绍了上述架构图中每个子系统内的数据流。
数据注入子系统
数据注入子系统从外部来源注入数据,并为 RAG 准备数据。以下是数据注入和准备流程中的步骤:
- 数据工程师将数据从外部来源上传到 Cloud Storage 存储桶。 外部来源可能是应用、数据库或在线媒体服务。
- 完成后,Cloud Storage 会向 Pub/Sub 主题发布消息。
- Pub/Sub 主题会触发处理作业在 Cloud Run functions 中运行。
- Cloud Run functions 通过生成元数据并将其存储为 JSON 行 (JSONL) 文件来处理原始数据。JSONL 文件存储在单独的 Cloud Storage 存储桶中。
- 完成后,Cloud Run functions 会向 Pub/Sub 主题发布一条消息。
- Pub/Sub 主题会触发下游 Cloud Run 函数,该函数会调用 Discovery Engine API 的
documents.import方法,以在 Gemini Enterprise 内的代管式数据存储区中启动导入作业。导入作业会从 Cloud Storage 存储桶中拉取提取的原始数据和元数据,然后解析数据并将其分块,以便在传送期间高效检索。Gemini Enterprise 会自动生成向量嵌入,无需任何配置。
服务子系统
服务子系统处理生成式 AI 应用与其用户之间的查询-响应流。以下是服务流程中的步骤:
- 应用用户通过其中一个 Cloud Run 前端服务发送查询。您可以针对不同的体验(例如聊天机器人界面、搜索页面或移动应用)自定义这些服务。
- 前端服务收到查询,然后将查询转发到集中式 Cloud Run 后端服务。此后端提供一个统一的端点,用于支持所有不同的前端客户端。后端服务还会执行必要的预处理,其中可能包括为搜索查询构建过滤条件。这种方法可使逻辑对前端保持透明。
- 后端服务使用 Gemini Enterprise API 端点将准备好的请求发送到 Gemini Enterprise,以启动 RAG 工作流。
- 为了处理查询,Gemini Enterprise 会使用企业搜索和自定义代理来执行以下任务:
- 创建用户查询的嵌入。
- 对代管式数据存储区中已编入索引的数据执行语义搜索,以查找相关度最高的信息。
- 使用从代管式数据存储区检索到的数据来扩充原始查询,以创建详细的情境提示。
- 根据增强的提示生成最终回答。
- Gemini Enterprise 将生成的回答发送到 Cloud Run 后端服务。
- 后端服务会将最终响应返回给发送原始请求的前端服务。前端服务向应用用户呈现答案。
使用的产品
此参考架构使用以下 Google Cloud 产品:
- Gemini Enterprise:一个全托管式安全平台,用于在企业内部署和管理 AI 智能体。
- Gemini Enterprise Agent Platform:一个综合性平台,可让您构建、扩缩、治理和优化企业级 AI 智能体。
- Gemini Enterprise Agent Platform 上的 Agent Runtime:一个可让您在生产环境中运行、管理和扩缩 AI 智能体的平台。
- Cloud Run:一个无服务器计算平台,可让您直接在 Google 可伸缩的基础设施之上运行容器。
- Cloud Run functions:一个无服务器计算平台,可让您直接在 Google Cloud中运行单一用途的函数。
- Pub/Sub:一种异步且可伸缩的通讯服务,可将生成消息的服务与处理这些消息的服务分离开。
- Cloud Storage:适用于各种数据类型的费用低廉且不受限制的对象存储区。数据可从 Google Cloud内部和外部访问,并且跨位置进行复制以实现冗余。
使用场景
此架构专为企业场景而设计,适用于生成式 AI 应用需要访问最新信息并需要深入理解上下文才能提供准确回答的情况。
该架构包含一个自定义数据注入子系统,可满足两个关键的企业要求:
- 实时数据可用性:事件驱动型流水线会在新数据(例如新产品指南或更新后的报告)在组织中可用后立即对其进行处理。该流水线还会将这些信息存储在您的代管式数据存储区中。这种设计有助于缓解信息过时问题,因为它有助于最大限度地减少数据可用性和使用之间的延迟。
- 丰富的上下文搜索:自定义处理作业可让您的组织应用自己的业务逻辑,使用有价值的元数据丰富数据。Cloud Run 函数可以使用产品线、作者、位置或文档类型等特定属性为每个文档添加标签。这些丰富的元数据有助于智能体缩小搜索范围,并提供更精确、更贴合情境的回答。
RAG 是一种可提高从 LLM 生成的输出质量的有效技术。本部分提供可使用支持 RAG 的生成式 AI 应用的应用场景示例。
个性化产品推荐
在线购物网站可能会使用由 LLM 提供支持的聊天机器人来帮助客户查找产品或获取与购物相关的帮助。可以使用有关用户购买行为和网站互动模式的历史数据来增强用户提出的问题。数据可能包括存储在非结构化数据存储区中的用户评价和反馈,或存储在网络分析分析型数据仓库中的搜索相关指标。然后,LLM 可以处理增强的问题,以生成个性化回复,用户可能认为这些回复更具吸引力和说服力。
临床辅助系统
医院中的临床医生需要查看和综合患者健康信息,从而做出明智的护理决策。使用 MedGemma 等医疗基础模型的生成式 AI 应用可以帮助临床医生总结临床笔记并查看医疗背景信息。应用生成的回答可以基于患者历史记录,具体方法是将提示与来自医院电子健康记录 (EHR) 数据库或外部知识库(例如 PubMed)的数据结合在一起。
高效的法律研究
借助由生成式 AI 提供支持的法律研究,律师可以快速查询大量法规和判例法,以确定相关的法律先例或总结复杂的法律概念。可以使用从律师事务所专有的合同语料库、过往法律沟通和内部案例记录中检索到的数据来增强律师的提示,从而改进此类研究的输出结果。这种设计方法有助于生成与律师专门从事的法律领域相关的回答。
设计替代方案
本部分介绍了您可以在 Google Cloud中为支持 RAG 的生成式 AI 应用考虑的其他设计方法。
AI 基础设施替代方案
如需查看在 Google Cloud中使用 RAG 设计和部署生成式 AI 应用的架构指南列表,请参阅使用 RAG 的生成式 AI。
应用托管方案
在本文档所示的架构中,Cloud Run 是生成式 AI 应用和数据处理的主机。Cloud Run 是一个以开发者为中心的全托管式平台。您还可以将应用部署到 Gemini Enterprise Agent Platform 上的 Agent Runtime、Google Kubernetes Engine (GKE) 集群或 Compute Engine 虚拟机。
如需选择应用主机,请考虑以下配置灵活性和管理工作量之间的权衡:
- 借助无服务器 Cloud Run 选项,您可以将自定义服务部署到预配置的代管式环境中。为了托管前端服务和用于请求预处理的自定义后端逻辑,此架构需要能够部署自定义应用。
- 借助 Agent Runtime 选项,您可以使用专为智能体服务设计的全代管式平台。Agent Runtime 可减少管理开销,并与 Gemini Enterprise 紧密集成。
- 使用 Compute Engine 虚拟机和 GKE 容器时,您需要负责管理底层计算资源,但您拥有更大的配置灵活性和控制权。
如需详细了解如何选择合适的应用托管服务,请参阅以下文档:
其他基础设施选项
如需了解您可以在Google Cloud中为生成式 AI 应用使用的其他基础设施选项、支持的模型和接地技术,请参阅为您的生成式 AI 应用选择模型和基础设施。
设计考虑事项
本部分提供的指导可帮助您在 Google Cloud 中开发支持 RAG 的生成式 AI 架构,以满足您在安全性和合规性、可靠性、费用和性能方面的特定要求。本部分中的指南并非详尽无遗。根据生成式 AI 应用的特定要求以及您使用的 Google Cloud 产品和功能,您可能需要考虑其他设计因素和权衡因素。
如需简要了解 Google Cloud中特定于 AI 和机器学习工作负载的架构原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角。
安全性、隐私权和合规性
本部分介绍了在 Google Cloud 中设计满足工作负载安全性和合规性要求的拓扑的设计注意事项和建议。
如需了解特定于 AI 和机器学习工作负载的安全原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:安全性。
Agent Platform
Agent Platform 支持 Google Cloud安全控制措施,可用于满足数据驻留、数据加密、网络安全和访问透明性的要求。如需了解详情,请参阅以下文档:
- 机器学习服务的安全控制
- 针对生成式 AI 的安全控制措施
- Agent Platform 与零数据保留政策
- 为 Gemini Enterprise 启用 Access Transparency
- Gemini Enterprise 的合规性和安全控制
- Gemini Enterprise 合规性
- 在 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 在应用层进行消息加密。如需了解详情,请参阅配置消息加密。
如果您有数据驻留要求,则可以配置消息存储政策,以便确保消息数据存储在特定位置。
可靠性
本部分介绍在 Google Cloud中为部署构建和运营可靠的基础设施的设计注意事项和建议。
如需了解特定于 AI 和机器学习工作负载的可靠性原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:可靠性。
Agent Platform
Agent Platform 支持静态数据驻留。Agent Platform 会将您的源数据(包括托管式数据存储区中 RAG 的数据)存储在您选择的Google Cloud 位置中。这种处理与存储分离的设计,是该平台提供高可靠性和合规性的基础。
Cloud Run
Cloud Run 是一项区域级服务,可在一个区域内的多个可用区之间自动分配无状态服务实例并进行负载均衡。如果可用区服务中断,Cloud Run 服务和 Cloud Run functions 将继续运行,不会中断。为了应对区域性服务中断,您可以在全球外部应用负载均衡器后跨多个区域部署 Cloud Run 服务。如需了解详情,请参阅处理来自多个区域的流量。
在数据注入子系统中,事件驱动型 Cloud Run functions 函数可能会遇到暂时性故障,或因至少传送一次而收到重复事件。为了可靠地处理这些场景,请考虑以下最佳实践:
- 设计幂等函数,以便重新处理事件时产生相同的结果,而不会创建重复记录。
- 在 Pub/Sub 触发器上配置事件驱动型函数重试(采用指数退避算法),以便从暂时性下游错误中恢复。
- 配置 Pub/Sub 死信主题,以隔离重复处理失败的消息,以便单独检查和重放。
Cloud Storage
您可以在以下三种位置类型之一中创建 Cloud Storage 存储桶:单区域、双区域或多区域。对于区域级存储桶中的数据,Cloud Storage 会跨一个区域内的多个可用区同步复制该数据。为了获得更高的可用性,您可以使用双区域或多区域存储桶,其中 Cloud Storage 会跨区域异步复制数据。请确保您的选择符合合规性要求。
费用优化
本部分将指导您优化您使用此参考架构构建的 Google Cloud 拓扑的设置和操作费用。
如需了解特定于 AI 和机器学习工作负载的费用优化原则和建议,请参阅 Well-Architected Framework 中的AI 和机器学习视角:费用优化。
Agent Platform
智能体调用的底层 AI 模型会直接影响该智能体的使用费用。价格根据每个请求的输入和输出 token 数量计算。如需了解详情,请参阅智能体平台上的生成式 AI 配额和系统限制以及 Google Cloud 价格计算器。
如需了解如何最大限度地减少 token 数量以降低费用,请参阅上下文缓存概览。
Cloud Run
如需优化 Cloud Run 服务和 Cloud Run functions 的费用,请考虑以下建议:
- 结算设置:根据您的流量模式选择合适的结算设置。对于零星或突发的工作负载(例如数据注入流水线中事件驱动的 Cloud Run functions),请使用基于请求的结算方式(默认),这样您只需为处理请求期间所消耗的 CPU 和内存付费。对于流量稳定且可预测的 Cloud Run 服务,请考虑基于实例的结算方式,这种结算方式不收取单次请求费用,并且每秒计算费率更低。
- CPU、内存和并发:从默认 CPU 和内存分配开始,然后根据监控的利用率调整 CPU 限制和内存限制。调整每个实例的最大并发请求数,以便更少的实例可以处理并发 I/O 绑定请求(例如等待模型或 API 响应)。
- 实例伸缩限制:配置实例数上限,以便在流量意外激增期间限制伸缩费用,并根据冷启动延迟时间要求平衡实例数下限。
- 承诺使用折扣:如果您可以预测 Cloud Run 工作负载的计算要求,则可以通过 Cloud Run 承诺使用折扣降低费用。
如需了解详情,请参阅经过费用优化的 Cloud Run 服务的最佳实践。
Cloud Storage
对于用于将数据加载到数据注入子系统的 Cloud Storage 存储桶,请根据工作负载的数据保留和访问频率要求来选择适当的存储类别。例如,您可以选择 Standard Storage 存储类别,并使用对象生命周期管理来控制存储费用。对象生命周期管理功能会根据您设置的条件,自动将对象降级为费用较低的存储类别或删除对象。
性能优化
本部分介绍了在 Google Cloud 中设计满足工作负载性能要求的拓扑的设计注意事项和建议。
如需了解特定于 AI 和机器学习工作负载的性能优化原则和建议,请参阅 Well-Architected 框架中的 AI 和机器学习视角:性能优化。
Gemini Enterprise
为了在服务期间缩短延迟时间,请在智能体生成完整输出之前发送模型回答,从而流式传输回答。这样可以实时处理输出,您可以立即更新界面并执行其他并发任务。流式传输可增强感知到的回答速度,并打造更具互动性的用户体验。如需了解详情,请参阅使用 StreamAssist 获取搜索结果。
在 Agent Runtime 上构建和注册自定义智能体开发套件 (ADK) 智能体时,请尽量减少顺序多智能体跃点、工具往返和冗余摘要传递,以缩短端到端轮次延迟时间。如需了解详情,请参阅性能和可靠性最佳实践。
Cloud Run
根据工作负载性能要求,调整 Cloud Run 服务和 Cloud Run functions 的 CPU 和内存分配。如需在从零伸缩时缩短冷启动延迟时间,请启用启动 CPU 加速,以便在容器实例启动期间临时提供额外的 CPU,或配置实例数下限以使实例保持备用状态。如需了解详情,请参阅为服务配置 CPU 限制和为服务配置内存限制。
Cloud Storage
如需上传大型文件,您可以使用一种名为并行复合上传的方法。使用此策略时,大文件会拆分为各个块。您将这些块并行上传到 Cloud Storage,然后 Cloud Storage 会在 Google Cloud中重新组合数据。如果您有足够的网络带宽和磁盘速度,则并行复合上传的速度可能比常规上传操作快。但是,此策略存在一些限制和费用影响。如需了解详情,请参阅并行复合上传。
部署
如需部署此参考架构,请使用 GitHub 中提供的 Terraform 示例。如需了解详情,请参阅使用 Gemini Enterprise 和 Agent Platform 的生成式 AI 应用的 RAG 基础设施。
后续步骤
- 了解 Gemini Enterprise 如何为 RAG 进行文档分块。
- 了解如何在 Cloud Run 上托管 AI 应用和代理。
- 了解 Responsible AI 最佳实践和 Agent Platform 的安全过滤条件。
- 了解大语言模型的提示策略。
- 如需简要了解 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 网络专家