使用 Agent 平台和 Spanner Graph 为生成式 AI 构建 GraphRAG 基础设施

Last reviewed 2026-10-16 UTC

本文档提供了一个参考架构,可帮助您在 Google Cloud中为 GraphRAG 生成式 AI 应用设计基础设施。目标受众群体包括构建和管理智能信息检索系统的架构师、开发者和管理员。本文档假定您对 AI、图数据管理和知识图谱概念具有基本的了解。本文档未提供有关设计和开发 GraphRAG 应用的具体指导。

GraphRAG 是一种基于图的检索增强生成 (RAG) 方法。 RAG 通过使用 Vector Search 检索到的与上下文相关的数据来增强提示,从而帮助 AI 生成的回答接地。GraphRAG 将 Vector Search 与知识图谱查询相结合,以检索能够更好地反映来自不同来源的数据之间互连性的情境数据。使用 GraphRAG 增强的提示可以生成更详细、更相关的 AI 回答。

架构

下图展示了 Google Cloud中支持 GraphRAG 的生成式 AI 应用的架构:

架构中的数据注入和服务流程。

上图中的架构由两个子系统组成:数据注入和服务。以下部分介绍了子系统的用途以及子系统内部和子系统之间的数据流。

数据注入子系统

数据注入子系统从外部来源注入数据,然后为 GraphRAG 准备数据。数据注入和准备流程涉及以下步骤:

  1. 数据会注入到 Cloud Storage 存储桶中。 这些数据可以由数据分析师上传、从数据库注入或从任何来源流式传输。
  2. 提取数据后,系统会向 Pub/Sub 主题发送消息。
  3. Pub/Sub 触发 Cloud Run 函数来处理上传的数据。
  4. Cloud Run 函数使用 Gemini API 和 LangChain 的 LLMGraphTransformer 等工具,根据输入文件构建知识图谱。
  5. 该函数会将知识图谱存储在 Spanner Graph 数据库中。
  6. 该函数使用 LangChain 的 RecursiveCharacterTextSplitter 或 Document AI 的布局解析器等工具,将数据文件的文本内容分割成精细单元。
  7. 该函数使用 Gemini Enterprise Agent Platform Embeddings API 创建文本片段的向量嵌入。
  8. 该函数会将向量嵌入和关联的图表节点存储在 Spanner Graph 中。

向量嵌入是语义检索的基础。知识图谱节点支持遍历和分析复杂的数据关系和模式。

服务子系统

服务子系统管理生成式 AI 应用与其用户之间的查询-响应生命周期。传送流程涉及以下步骤:

  1. 用户向 AI 智能体提交自然语言查询,该智能体部署在 Gemini Enterprise Agent Platform 上的 Agent Runtime 中。
  2. 代理会按如下方式处理查询:
    1. 使用 Agent Platform Embeddings API 将查询转换为向量嵌入。
    2. 通过在嵌入数据库中执行向量相似度搜索,检索与查询相关的图节点。
    3. 通过遍历知识图谱检索与查询相关的数据。
    4. 通过将原始查询与检索到的图谱数据相结合来扩充提示。
    5. 使用智能体搜索排名 API 对结果进行排名,结果由从图数据库中检索到的节点和边缘组成。排名基于与查询的语义相关性。
    6. 通过调用 Gemini API 总结结果。
  3. 然后,智能体将摘要结果发送给用户。

您可以在 Cloud Logging 中存储和查看查询-响应活动日志,并且可以使用 Cloud Monitoring 设置基于日志的监控。

使用的产品

此参考架构使用以下 Google 产品和工具:

  • Spanner Graph:一种图数据库,提供 Spanner 的可伸缩性、可用性和一致性功能。
  • Gemini Enterprise Agent Platform:一个综合性平台,可让您构建、扩缩、治理和优化企业级 AI 智能体。
  • Cloud Run functions:一个无服务器计算平台,可让您直接在 Google Cloud中运行单一用途的函数。
  • Cloud Storage:适用于各种数据类型的费用低廉且不受限制的对象存储区。数据可从 Google Cloud内部和外部访问,并且跨位置进行复制以实现冗余。
  • Pub/Sub:一种异步且可伸缩的通讯服务,可将生成消息的服务与处理这些消息的服务分离开。
  • Cloud Logging:具有存储、搜索、分析和提醒功能的实时日志管理系统。
  • Cloud Monitoring:可帮助您了解您的应用和基础设施的性能、可用性和健康状况的服务。

使用场景

GraphRAG 有助于为各行各业的应用场景实现智能数据检索。本部分介绍了医疗保健、金融、法律服务和制造业中的一些用例。

保健和药物:临床决策支持

在临床决策支持系统中,GraphRAG 将来自医学文献、患者电子健康记录、药物相互作用数据库和临床试验结果的大量数据整合到一个统一的知识图谱中。当临床医生和研究人员查询患者的症状和当前用药情况时,GraphRAG 会遍历知识图谱,以识别相关病症和潜在的药物相互作用。它还可以根据其他数据(例如患者的基因特征)生成个性化治疗建议。与关键字匹配相比,这种信息检索方式提供的回答更具上下文相关性,且更有依据。

金融服务:统一财务数据

金融服务公司使用知识图谱,为分析师提供来自不同来源(例如分析师报告、财报电话会议和风险评估)的数据的统一结构化视图。知识图谱可识别关键数据实体(例如公司和高管),并映射实体之间的关键关系。这种方法提供了一个丰富的、相互关联的数据网络,可实现更深入、更高效的财务分析。分析师可以发现以前隐藏的洞见,例如复杂的供应链依赖关系、竞争对手之间重叠的董事会成员,以及面临复杂地缘政治风险的情况。

在法律领域,GraphRAG 可用于根据先例、法规、判例法、监管更新和内部文件生成个性化的法律建议。当律师准备案件时,他们可以提出有关特定法律论点、类似案件的先前裁决或新立法影响的细致问题。GraphRAG 利用可用法律知识的互联性来识别相关先例并解释其适用性。它还可以通过追踪法律概念、法规和司法解释之间的关系,提出反驳论点。 与传统知识检索方法相比,这种方法可让法律从业者获得更全面、更精确的数据洞见。

制造和供应链:解锁机构知识

制造和供应链运营需要高度精确。 维持所需精度水平所必需的知识,往往埋藏在成千上万份内容密集、静态的标准操作程序 (SOP) 文档中。当工厂中的生产线或机器发生故障,或者出现物流问题时,工程师和技术人员往往会浪费宝贵的时间在不连贯的 PDF 文档中搜索,以诊断和排查问题。知识图谱和对话式 AI 可以结合使用,将隐藏的机构知识转化为交互式诊断伙伴。

设计替代方案

本文档介绍的架构是模块化的。您可以根据自己的要求,调整架构的某些组件,以使用替代产品、工具和技术。

构建知识图谱

您可以使用 LangChain 的 LLMGraphTransformer 工具从头开始构建知识图谱。通过使用 allowed_nodes、allowed_relationships、node_properties 和 relationship_properties 等 LLMGraphTransformer 参数指定图谱架构,您可以提高生成的知识图谱的质量。不过,LLMGraphTransformer 可能会从通用网域中提取实体,因此可能不适合医疗保健或制药等利基网域。此外,如果您的组织已经有构建知识图谱的可靠流程,则此参考架构中显示的数据注入子系统是可选的。

存储知识图谱和向量嵌入

本文档中的架构使用 Spanner 作为知识图谱和向量嵌入的数据存储区。如果您的企业知识图谱已存在于其他位置(例如 Neo4j 等平台上),则可以考虑使用向量数据库来存储嵌入。但是,此方法需要额外的管理工作,并且费用可能更高。Spanner 为图结构和向量嵌入提供了一个整合的、全球一致的数据存储区。这样的数据存储区可实现统一的数据管理,有助于优化成本、性能、安全治理和运营效率。

Agent Runtime

在此参考架构中,智能体部署在 Agent Runtime 上,后者为 AI 智能体提供托管式运行时。您可以考虑的其他选项包括 Cloud Run 和 Google Kubernetes Engine (GKE)。这些选项不在本文档的讨论范围内。

使用 RAG 进行接地

如应用场景部分所述,GraphRAG 可在许多场景中实现智能数据检索,以进行接地。但是,如果您用于增强提示的源数据没有复杂的相互关系,则 RAG 可能是生成式 AI 应用的合适选择。

以下参考架构展示了如何使用支持向量的代管式数据库或专用 Vector Search 产品在 Google Cloud 中构建 RAG 所需的基础设施:

设计考虑事项

本部分介绍了一些设计因素、最佳实践和建议,您在使用此参考架构开发满足特定安全性、可靠性、费用和性能要求的拓扑时应考虑这些内容。

本部分中的指导并非详尽无遗。根据工作负载的要求以及您使用的 Google Cloud 和第三方产品和功能,您可能还需要考虑其他设计因素和权衡因素。

安全性、隐私权和合规性

本部分介绍了在 Google Cloud 中设计满足工作负载安全性和合规性要求的拓扑时的设计注意事项和建议。

Agent Platform 安全注意事项

为确保您的 Agent Platform 配置和使用符合您的安全要求,请考虑以下建议:

Spanner Graph 数据加密

默认情况下,存储在 Spanner Graph 中的数据使用 Google-owned and Google-managed encryption keys进行加密。如果您需要使用由您控制和管理的加密密钥,则可以使用客户管理的加密密钥 (CMEK)。如需了解详情,请参阅 CMEK 简介。

Cloud Run functions 安全注意事项

为确保您的 Cloud Run functions 实现满足您的安全要求,请考虑以下建议:

  • 数据加密:默认情况下,Cloud Run 使用 Google-owned and Google-managed encryption keys加密数据。如需使用您控制的密钥保护容器,您可以使用 CMEK。如需了解详情,请参阅使用客户管理的加密密钥。
  • 容器映像安全性:为帮助确保仅将获得授权的容器映像部署到 Cloud Run,您可以使用 Binary Authorization。
  • 数据驻留:Cloud Run 可帮助您满足数据驻留要求。您的 Cloud Run functions 函数在所选区域内运行。

Cloud Storage 安全注意事项

为确保您的 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 可帮助您满足数据驻留要求。数据会在您指定的区域内存储或复制。

Pub/Sub 安全注意事项

为确保您的 Pub/Sub 配置符合安全要求,请考虑以下建议:

  • 数据加密:默认情况下,Pub/Sub 使用Google-owned and Google-managed encryption keys对所有消息(包括静态消息和传输中的消息)进行加密。Pub/Sub 支持使用 CMEK 在应用层进行消息加密。如需了解详情,请参阅配置消息加密。
  • 数据驻留:如果您有数据驻留要求,则可以配置消息存储政策,以便确保消息数据存储在特定位置。

Cloud Logging 安全注意事项

为确保您的 Cloud Logging 配置符合安全要求,请考虑以下设计因素和建议:

  • 管理活动审核:默认情况下,系统会为此参考架构中使用的所有 Google Cloud 服务启用管理员活动审核日志。这些日志会记录修改 Google Cloud 资源配置或元数据的 API 调用或其他操作。
  • 数据访问审核:对于此架构中使用的 Google Cloud 服务,您可以启用数据访问审核日志。通过这些日志,您可以跟踪读取资源配置或元数据的 API 调用,或者跟踪用于创建、修改或读取用户提供的资源数据的用户请求。
  • 数据驻留:如需帮助满足数据驻留要求,您可以配置 Cloud Logging,以将日志数据存储在您指定的区域中。如需了解详情,请参阅区域化存储日志。

如需了解特定于 AI 和机器学习工作负载的安全原则和建议,请参阅 Google Cloud Well-Architected Framework 中的 AI 和机器学习视角:安全性。

可靠性

本部分介绍了在 Google Cloud中为部署构建和运营可靠的基础设施的设计注意事项和建议。

Agent Platform 容量和端点可用性

如果您的请求数量超出分配的容量,则系统会返回错误代码 429。对于业务关键型且始终需要高吞吐量的工作负载,您可以使用预配吞吐量来预留吞吐量。如果数据可以跨多个区域或国家/地区共享,您可以使用全球端点。

Spanner Graph 数据可用性和灾难恢复

Spanner 旨在实现高数据可用性和全球可伸缩性。为了确保即使在区域服务中断期间也能保持可用性,Spanner 提供了多区域配置,可在多个区域的多个可用区中复制数据。除了这些内置的弹性功能之外,Spanner 还提供以下功能来支持全面的灾难恢复策略:

  • 数据库防删除保护
  • 强大的备份和恢复功能,包括计划备份和跨区域复制
  • 时间点恢复 (PITR),可防范逻辑数据损坏、运维人员错误或意外写入,最长可达 7 天

如需了解详情,请参阅灾难恢复概览。

Cloud Run functions 对基础设施服务中断的稳健性

Cloud Run 是区域级服务。数据跨一个区域内的多个可用区同步存储。流量在可用区之间自动进行负载均衡。如果可用区服务中断,Cloud Run 将继续运行,并且数据不会丢失。如果发生区域服务中断,服务将停止运行,直到 Google 解决服务中断问题。

Cloud Storage 数据可用性

您可以在以下三种位置类型之一中创建 Cloud Storage 存储桶:单区域、双区域或多区域。存储在区域级存储桶中的数据会跨一个区域内的多个可用区同步复制。为了获得更高的可用性,您可以使用双区域或多区域存储桶,其中数据会跨区域异步复制。

Pub/Sub 可靠性注意事项

为确保您的 Pub/Sub 配置满足可靠性要求,请考虑以下建议:

  • 速率控制:为避免在消息流量瞬时激增期间出现错误,您可以在发布者设置中配置流控制,以限制发布请求的速率。
  • 失败处理:如需处理失败的发布尝试,请根据需要调整重试请求变量。如需了解详情,请参阅重试请求。

针对架构中所有产品的可靠性建议

在 Google Cloud中部署工作负载后,通过应用 Active Assist 中的相关建议,进一步优化云资源的可靠性。

如需了解特定于 AI 和机器学习工作负载的可靠性原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:可靠性。

费用优化

本部分将指导您优化您使用此参考架构构建的 Google Cloud 拓扑的设置和操作费用。

Agent Platform 费用注意事项

为确保您的 Agent Platform 配置和用量符合您的费用要求,请考虑以下建议:

  • 费用分析和管理:如需分析和管理 Agent Platform 费用,我们建议您创建每秒查询次数 (QPS) 和每秒词元数 (TPS) 的基准,并在部署后监控这些指标。基准还有助于容量规划。例如,基准可帮助您确定何时需要预配吞吐量。
  • 模型选择:为生成式 AI 应用选择合适的模型是一项关键决策,会直接影响成本和性能。如需确定在性能和费用之间实现最佳平衡的模型,请针对您的特定应用场景反复测试模型。我们建议您从最具成本效益的模型开始,逐步过渡到更强大的选项。
  • 提示词工程:提示词(输入)和生成的回答(输出)的长度会直接影响性能和费用。撰写简短、直接且提供足够上下文的提示。 设计提示,以便从模型中获得简洁的回答。例如,包含“用 2 句话总结”或“列出 3 个要点”等短语。 如需了解详情,请参阅提示设计最佳实践。
  • 上下文缓存:如需降低包含重复内容且输入 token 数量较高的请求的费用,请使用上下文缓存。
  • 批量请求:对于可以异步执行的大规模处理任务(例如内容生成和离线分析),请考虑使用批量推理。批量请求的结算价格低于标准请求。

Spanner Graph 费用注意事项

为确保您的 Spanner Graph 配置符合您的费用要求,请考虑以下建议:

  • 计算容量自动扩缩:为了帮助控制费用,您可以使用代管式自动扩缩器,根据 CPU 利用率和存储需求动态调整 Spanner Graph 数据库的计算容量。即使对于小型工作负载,通常也需要最低容量。
  • 费率优化:对于可预测、稳定或基准计算容量,请购买承诺使用折扣 (CUD)。CUD 提供大幅折扣,以换取承诺在计算容量上达到一定的每小时支出。
  • 备份复制:出于灾难恢复或合规性目的将备份复制到不同区域时,请考虑网络出站流量费用。为帮助降低费用,请仅复制必要的备份。

Cloud Run functions 费用注意事项

为确保您的 Cloud Run functions 实现满足您的费用要求,请考虑以下建议:

  • 资源分配:创建 Cloud Run functions 函数时,您可以指定要分配的内存量和 CPU 量。如需控制费用,请从默认(最小)CPU 和内存分配开始。如需提升性能,您可以通过配置 CPU 限制和内存限制来增加分配量。如需了解详情,请参阅以下文档:

  • 费率优化:如果您可以预测 CPU 和内存要求,则可以通过 CUD 节省资金。

Cloud Storage 存储类别和生命周期管理

对于数据注入子系统中的 Cloud Storage 存储桶,请根据工作负载对数据保留和访问频率的要求,选择适当的存储类别。例如,如需控制存储费用,您可以选择 Standard 类别并使用对象生命周期管理。这样,系统就会根据指定条件将对象自动降级为费用较低的存储类别或自动删除对象。

Cloud Logging 费用注意事项

如需控制存储日志的费用,请考虑以下建议:

  • 通过排除或过滤不必要的日志条目来减少日志量。 如需了解详情,请参阅排除过滤器。
  • 优化日志保留期限。如需了解详情,请参阅配置自定义保留。

针对架构中所有产品的费用优化建议

为帮助确保您的架构满足费用要求,请考虑以下一般建议:

如需了解特定于 AI 和机器学习工作负载的费用优化原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:费用优化。

性能优化

本部分介绍了在 Google Cloud 中设计满足工作负载性能要求的拓扑的设计注意事项和建议。

Agent Platform 性能注意事项

为确保您的 Agent Platform 配置和使用情况符合性能要求,请考虑以下建议:

  • 模型选择:为生成式 AI 应用选择合适的模型是一项关键决策,会直接影响成本和性能。如需确定在性能和费用之间实现最佳平衡的模型,请针对您的特定应用场景反复测试模型。我们建议您从最具成本效益的模型开始,逐步过渡到更强大的选项。
  • 提示词工程:提示词(输入)和生成的回答(输出)的长度会直接影响性能和费用。撰写简短、直接且提供足够上下文的提示。 设计提示,以便从模型中获得简洁的回答。例如,包含“用 2 句话总结”或“列出 3 个要点”等短语。 如需了解详情,请参阅提示设计最佳实践。
  • 提示优化:智能体平台提示优化器可让您大规模快速改进和优化提示性能,而无需手动重写。优化器可帮助您高效地 在不同模型之间调整提示。

Spanner Graph 架构设计和查询调优

如需了解优化 Spanner Graph 性能的相关建议,请参阅以下文档:

Cloud Run functions 资源分配

默认情况下,系统会为每个 Cloud Run functions 实例分配一个 CPU 和 256 MiB 的内存。您可以根据性能要求配置 CPU 和内存限制。如需了解详情,请参阅以下文档:

如需更多性能优化指南,请参阅常规 Cloud Run 开发技巧。

Cloud Storage 并行复合上传

如需上传大型文件,您可以使用并行复合上传。使用此策略时,大文件会拆分为各个块。这些块会并行上传到 Cloud Storage,然后数据会在云中重新组合。如果网络带宽和磁盘速度不是限制因素,则并行复合上传可能比常规上传操作更快。但是,此策略存在一些限制和费用影响。如需了解详情,请参阅并行复合上传。

针对架构中所有产品的性能优化建议

在 Google Cloud中部署工作负载后,应用 Active Assist 的相关建议,进一步优化云资源的性能。

如需了解特定于 AI 和机器学习工作负载的性能优化原则和建议,请参阅 Well-Architected Framework 中的 AI 和机器学习视角:性能优化。

部署

如需探索 GraphRAG 在 Google Cloud中的运作方式,请从 GitHub 下载并运行以下 Jupyter 笔记本:在 Google Cloud 上使用 Spanner Graph 和 Agent Runtime on Gemini Enterprise Agent Platform 的 GraphRAG。

后续步骤

贡献者

作者:

其他贡献者: