用 Gemini 3.1 Pro 构建 RAG 应用的 CloudFormation 全套模板从网络到检索与评估的可交付架构在 2026 年企业落地 RAGRetrieval-Augmented Generation最难的往往不是“能不能答”而是能不能规模化部署、能不能安全合规、能不能持续评估、能不能低成本运维。因此“整套 CloudFormation 模板”这种交付方式反而比零散脚本更接近真实生产需求。这篇文章会给你一套工程化思路把 Gemini 3.1 Pro 的 RAG 应用拆成可部署模块并提供CloudFormation 模板的结构化清单与关键片段含网络、对象存储、索引/向量检索、检索服务、调用链路与评估接口。你可以直接把模板拆分为多个 Stack在团队里复用与维护。如果你在前期要对比不同检索与评估策略的效果也可以借助聚合入口先做 PoC 验证KULAAIdl.877ai.cn但本文重点仍是“如何用 CloudFormation 把系统做成可交付资产”。一、参考架构RAG 系统需要哪些组件一个可生产化的 RAG 通常包含文档入口与数据存储S3原始文档、清洗后的文本、分块结果向量化与索引向量数据库可用托管向量检索/或通过检索服务实现检索服务Retriever接收问题 → embedding或查询向量→ 检索 TopK → 返回上下文片段生成服务Generator把检索片段 用户问题组织成提示词 → 调用 Gemini 3.1 Pro 生成答案对话/问答 API提供统一 HTTP 接口便于前端与工单系统接入安全与审计IAM 最小权限、KMS 加密、日志CloudWatch评估与监控强烈建议离线评估命中率、拒答、幻觉倾向等在线监控延迟、成本、失败率CloudFormation 的目标就是把这些资源一次性、可重复地部署出来。二、CloudFormation 模板如何组织推荐拆 Stack建议拆为 4 个 Stack避免单模板过大难维护Stack A基础网络与安全VPC / 子网 / 安全组如需要KMS KeyCloudWatch Log GroupsStack B数据存储S3 bucket文档、分块、索引数据Stack C检索与向量索引向量索引/检索服务资源embedding/索引写入所需角色Stack DRAG 应用服务API Gemini 调用API Gateway LambdaRetriever/Generator 或组合访问权限、环境变量、提示词模板配置你也可以合并但团队维护成本会变高。三、全套 CloudFormation 模板交付清单你应该包含的“关键模板文件”下面给出“文件级别”的交付清单便于你落地到仓库01-network.yml02-storage.yml03-vector-and-retrieval.yml04-rag-api.yml05-pipeline-ingest.yml可选自动文档入库/分块/索引06-eval-and-monitor.yml可选评估与告警接下来我给出每个模板应该包含的关键资源与示例片段。由于不同组织对向量检索与 Gemini 调用的实现方式可能不同我会把“可替换点”标注出来你只要对照你的选择把参数填上即可。四、Stack A网络与安全01-network.yml 核心片段1KMS 与日志KMSS3 加密与敏感配置加密CloudWatchLambda/推理调用日志示例KMS LogGroupyamlResources: RagKmsKey: Type: AWS::KMS::Key Properties: EnableKeyRotation: true KeyPolicy: Version: 2012-10-17 Statement: - Sid: AllowAccountRoot Effect: Allow Principal: AWS: !Sub arn:aws:iam::${AWS::AccountId}:root Action: kms:* Resource: * RagLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Sub /rag/${AWS::StackName} RetentionInDays: 30五、Stack B数据存储02-storage.yml 核心片段1S3文档/分块/中间产物建议按前缀分区s3://bucket/raw/s3://bucket/chunked/s3://bucket/index/可选示例加密 S3 bucketyamlResources: RagBucket: Type: AWS::S3::Bucket Properties: BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: aws:kms KMSMasterKeyID: !Ref RagKmsKey VersioningConfiguration: Status: Enabled六、Stack C向量索引与检索03-vector-and-retrieval.yml这里是“可替换点”。你需要根据你采用的向量检索方案托管向量库/搜索服务/自建索引来决定资源类型。文章重点放在“模板结构与接口契约”你只要把对应资源段替换即可。你需要在模板中明确三件事索引创建/管理资源写入索引所需 IAMembedding 写入向量Retriever 查询接口的权限例如你要给 Lambda 分配权限读取chunked/数据写入向量索引查询 TopK 并返回上下文七、Stack DRAG API04-rag-api.yml 核心片段推荐实现方式一体式 Lambda同时负责检索 生成简单分离式 LambdaRetriever 独立、Generator 独立更灵活可扩展本文以分离式为模板结构示例更符合“整套模板”的工程化交付。1API Gateway/ask输入问题与会话参数输出答案 引用片段yamlResources: RagApi: Type: AWS::ApiGateway::RestApi Properties: Name: !Sub rag-${AWS::StackName}2Retriever Lambda接收问题 → TopK 文档片段关键点环境变量索引名称、TopK、embedding 参数权限查询向量检索资源返回片段文本 来源元数据docId、chunkId、score3Generator Lambda将片段拼提示词 → 调 Gemini 3.1 Pro关键点环境变量Gemini API endpoint/凭证注意不要直接写死密钥Prompt 拼接把 TopK 片段与问题组织成结构化输入安全过滤敏感内容、控制输出格式例如要求附引用示例Lambda 环境变量与权限骨架yamlResources: GeneratorFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: python3.11 Role: !GetAtt GeneratorRole.Arn Environment: Variables: GEMINI_MODEL: gemini-3.1-pro TOP_K: 5 INDEX_SOURCE: !Sub ${AWS::StackName}-vectorGemini 3.1 Pro 的调用细节取决于你使用的 Gemini 接入方式官方 SDK、企业网关或中间层。模板应保证“凭证由 KMS/Secrets 管理”而不是明文硬编码。八、可选但强烈建议数据摄取与索引流水线05-pipeline-ingest.ymlRAG 真正可用的条件是文档入库后自动触发分块、向量化、写入索引。建议S3 Put 事件触发或定时扫描Step Functions 串流程清洗 → 分块 → embedding → 写索引这样你的 CloudFormation 不只是“部署应用”还部署“让应用更新数据的能力”。九、评估与监控06-eval-and-monitor.yml建议至少包含离线评估任务使用一批标注题问题、期望答案或要点输出检索召回、生成可引用性、答案一致性告警API 5xx/延迟突增成本异常可用日志估算检索命中率下降模板层面做法EventBridge 定时触发评估 LambdaCloudWatch Alarm 触发 SNS/Slack webhook十、把模板“做成可交付资产”的工程规范为了让你的 CloudFormation 真正能在企业中复用建议加上参数化S3 bucket 名、索引名、TopK、环境dev/stage/prod输出OutputsAPI 入口地址、S3 路径、索引状态最小权限 IAM按模块分角色不要一把梭可审计日志、请求ID、追踪字段traceId结语落地建议“用 Gemini 3.1 Pro 构建 RAG 应用的整套 CloudFormation 模板”要真正有价值核心不是把所有资源堆进一份 YAML而是把 RAG 系统拆成可维护模块并为数据摄取、检索、生成、评估与监控都提供对应资源与接口契约。