SECTOR 09 / KNOWLEDGE EXPEDITION

大模型应用实战

综合实战:构建 RAG 应用、AI Agent 开发、多工具编排、评估驱动开发(EDD)、Prompt 缓存优化和生产级部署架构

01

构建 RAG 问答系统

EXPLORE +

完整 RAG 系统设计

系统架构:
用户输入
→ Query Understanding(查询理解:改写、扩展)
→ Retriever(检索器:稠密检索 + BM25 混合)
→ Reranker(重排序:cross-encoder 精排)
→ Prompt Constructor(提示词构造:上下文注入+引用标记)
→ LLM Generator(生成器:基于上下文回答)
→ Output Validator(输出验证:引用检查+格式校验)

文档处理策略

  • 文档切分:固定长度(512 chars)、语义切分(按段落)、递归切分(按层级)
  • 重叠策略:相邻块重叠 10-20% 保证上下文连贯
  • 元数据标注:记录来源、章节、时间戳便于溯源

检索策略

策略方法适用场景
稠密检索embedding 模型向量化 + ANN 搜索语义匹配
稀疏检索BM25 关键词匹配精确关键词匹配
混合检索稠密+稀疏结果加权融合通用(推荐)
多路召回多种检索策略并行,结果融合高精度要求
02

AI Agent 开发

EXPLORE +

Agent 核心架构

Agent 核心循环:
用户请求
→ Plan(规划:分解任务为子步骤)
→ Execute(执行:调用工具处理每个子步骤)
→ Observe(观察:收集执行结果)
→ Reflect(反思:是否需要调整计划?)
→ Repeat / Final Answer

Agent 组件详解

  • LLM 大脑:推理和决策的核心
  • 工具集:Search, Calculator, Code Executor, File I/O, API 调用
  • 记忆系统
    • 短期记忆(对话历史)
    • 长期记忆(向量数据库)
    • 工作记忆(当前任务状态)
  • 规划器:任务分解和依赖管理

Agent 设计原则

  • 工具接口标准化:每个工具一致的方法签名
  • 错误隔离:一个工具失败不影响其他工具
  • 安全边界:限制工具权限,沙箱执行
  • 可观测性:每个步骤可记录和审计
03

多工具编排

EXPLORE +

编排模式

# 顺序执行(Pipeline)
A → B → C → D
适用:有明确依赖的数据处理流程

# 并行执行(Parallel)
A → B → Done
→ C →
适用:相互独立的子任务(如同时搜索+计算)

# 条件分支(Condition)
A → if X: B → Done
→ else: C → Done
适用:结果依赖前一步输出

# 映射-归约(Map-Reduce)
A → [B1, B2, B3] → C → Done
适用:大规模数据处理

工具编排引擎设计

实现一个支持 DAG(有向无环图)的工具编排引擎,支持:

  • 依赖管理:自动识别工具间的依赖关系
  • 并行调度:无依赖的工具并行执行
  • 结果传递:工具间通过上下文对象传递数据
  • 错误处理:支持重试、降级和熔断
  • 超时控制:每个工具可配置超时时间
04

评估驱动开发(EDD)

EXPLORE +

什么是 EDD?

评估驱动开发(Evaluation-Driven Development)借鉴了 TDD(测试驱动开发)的思路:先定义评估指标,再开发模型应用,确保每次改动都有可量化的效果验证。

EDD 工作流

1. 定义评估集
- 收集 100-1000 个代表性用例
- 人工标注标准答案
- 覆盖正常场景和边界 Case

2. 建立评估 Pipeline
- 自动化运行评估
- 计算核心指标(准确率、F1、BLEU 等)
- 生成对比报告

3. 迭代开发
- 每次 Prompt/策略变更后运行评估
- 关注指标变化(改进 vs 回归)
- 回归测试确保旧问题不重现

评估集设计原则

类型比例说明
黄金用例20%核心场景,每次必须通过
常规用例60%典型使用场景
边界用例15%边缘情况和异常输入
对抗用例5%安全测试和注入测试
05

Prompt 缓存与成本优化

EXPLORE +

Prompt Caching 原理

对于重复使用的长前缀(如系统提示词、Few-shot 示例、工具定义),API 会缓存计算结果。后续请求只需计算增量部分,显著降低成本。

# 缓存策略
[系统角色设定 + 规则说明] ← 缓存命中区域(几千 tokens)
[Few-shot 示例] ← 缓存命中区域
[用户动态输入] ← 每次不同(只有这里需要全量计算)
[模型输出] ← 每次生成

成本优化策略

  • 利用 Prompt Caching:可节省 50-80% 输入 Token 成本
  • 不同任务路由不同模型:简单任务用小模型(Turbo),复杂任务用大模型(Max)
  • Batch 处理:非实时请求使用 Batch API,费用减半
  • 输出长度控制:max_tokens 设置合理上限,减少浪费
  • 缓存高频问答:常见问题直接返回缓存结果
06

生产级部署架构

EXPLORE +

典型生产架构

用户客户端

CDN(静态资源加速)

API Gateway(流量控制、认证、限流、日志)

应用服务层(业务逻辑、Prompt 管理、会话管理)
↓ ↗
模型推理层 缓存层
(PAI-EAS/vLLM) (Redis/Memcached)
↓ ↗
向量检索层(检索增强生成 RAG)

数据处理层(ETL、文档更新、索引重建)

关键组件设计

  • API Gateway:限流(Token Bucket)、认证(JWT)、负载均衡
  • 推理集群:多副本部署,HPA 自动伸缩,蓝绿部署
  • 缓存:热点问题 Redis 缓存,TTL 策略
  • 监控告警:Prometheus + Grafana,关注延迟、吞吐、错误率
  • 日志:结构化日志(JSON),ELK 收集分析

高可用设计

  • 多 AZ(可用区)部署
  • 优雅降级:模型服务不可用时返回缓存或默认回复
  • 熔断机制:超时超过阈值时快速失败
  • 数据备份:定期备份配置、知识库和日志