AI 应用工程完整交付包样板¶
样板项目:企业技术知识库 RAG + AI 学习助手
用途:给你一份能直接照着改成自己项目交付包的完整参考。
一、需求文档¶
1.1 背景¶
当前教程内容多、主题广,用户在查资料时主要有三类问题:
- 找不到正确章节
- 找到章节但答案不够聚焦
- 回答质量不稳定,缺少引用和错误兜底
1.2 目标用户¶
- 主用户:你自己
- 使用场景:学习检索、概念讲解、章节跳转、错题定位、复习问答
1.3 范围¶
本期只做:
- 文档检索
- 引用返回
- 对章节内容的讲解与总结
- bad case 标记与人工复核入口
本期不做:
- 多用户权限系统
- 长期会话记忆
- 自动改写教程正文
1.4 验收标准¶
| 维度 | 指标 |
|---|---|
| 检索正确性 | Top-5 命中人工标注答案片段的比例 >= 85% |
| 回答可引用 | 90% 以上回答包含明确章节引用 |
| 响应速度 | P95 首字返回 <= 3.5s |
| 成本 | 单次问答平均成本可追踪,且缓存命中率 >= 25% |
| 稳定性 | 整体可用性 >= 99.5% |
二、架构图与技术设计¶
flowchart TD
U[浏览器用户] --> W[Docs 前端页面]
W --> A[AI 助手 API]
A --> G[Query Rewrite]
G --> R[检索层]
R --> V[向量索引]
R --> K[关键词索引]
A --> C[上下文组装器]
C --> M[LLM]
M --> P[答案后处理]
P --> Q[引用与来源]
P --> S[安全与格式检查]
S --> W
A --> O[观测与评测]
O --> L[日志 / Tracing / Bad Case] 2.1 关键设计决策¶
- 检索采用“关键词 + 向量”双路召回,避免只靠 embedding 导致章节标题检索不稳。
- 响应必须附引用,优先返回站内文档路径和章节名。
- 对高风险问题增加“只基于文档回答”的提示,降低幻觉。
2.2 关键异常路径¶
- 检索空结果:回退到关键词搜索 + 提示用户缩小问题范围
- LLM 超时:回退到“仅返回最相关文档与摘要”
- 引用缺失:答案不直接放行,转为“候选文档列表”
三、SLO 与核心指标¶
| 类型 | 指标 | 目标 |
|---|---|---|
| 用户体验 | 有引用回答占比 | >= 90% |
| 质量 | 人工抽检通过率 | >= 85% |
| 质量 | Faithfulness 抽检通过率 | >= 90% |
| 系统 | 可用性 | >= 99.5% |
| 系统 | P95 首字返回 | <= 3.5s |
| 系统 | 错误率 | <= 1% |
| 成本 | 平均单问答成本 | 持续跟踪并月度复盘 |
| 运营 | bad case 修复闭环时长 | <= 7 天 |
3.1 错误预算¶
- 月度可用性按 99.5% 计算,错误预算约 216 分钟 / 月。
- 若连续 3 天 P95 超标,暂停新功能,优先处理稳定性。
四、压测与 Benchmark 报告¶
4.1 基线口径¶
- 基线 A:仅关键词检索
- 基线 B:单路向量检索
- 当前方案:混合召回 + 重排 + 引用约束
4.2 评测集设计¶
- 100 条学习问答集
- 30 条跨章节问题
- 20 条故意模糊问题
- 20 条 bad case 回归问题
4.3 记录模板¶
| 方案 | Top-5 命中率 | 引用完整率 | P95 首字返回 | 备注 |
|---|---|---|---|---|
| 基线 A | 待填 | 待填 | 待填 | |
| 基线 B | 待填 | 待填 | 待填 | |
| 当前方案 | 待填 | 待填 | 待填 |
4.4 面试可讲点¶
- 为什么要做混合召回
- 为什么要把“引用完整率”单独拉成硬指标
- 为什么 bad case 回归集不能省
五、成本报告¶
| 成本项 | 口径 |
|---|---|
| 模型调用 | 按输入输出 token 拆开统计 |
| 检索成本 | 向量库 / 索引更新 / 缓存占用 |
| 缓存收益 | 命中率、节省 token、节省延迟 |
| 降本手段 | 查询改写、摘要缓存、模型路由 |
5.1 结论模板¶
- 哪部分成本最高
- 哪个优化手段性价比最好
- 哪个优化虽然降成本,但明显伤害质量,不能上线
六、发布记录¶
| 版本 | 变更 | 灰度范围 | 观察指标 | 回滚条件 |
|---|---|---|---|---|
| v1 | 基础检索问答 | 自用 | P95、错误率、引用完整率 | 引用完整率 < 80% |
| v2 | 混合召回 + 重排 | 自用 | 命中率、延迟、成本 | P95 恶化 30% |
| v3 | 缓存 + bad case 回归 | 自用 | 缓存命中率、错误率 | 错答率显著上升 |
七、事故复盘¶
7.1 事故标题¶
某次索引同步后,AI 助手大量返回过期章节引用。
7.2 现象¶
- 问题能答出来,但引用路径指向旧目录
- 用户点击后跳到错误文档或旧锚点
7.3 根因¶
- 文档重命名后,索引增量更新未清理旧路径
- 发布前缺少“引用可点击性”回归
7.4 处置¶
- 全量重建索引
- 增加引用跳转校验脚本
- 把“文档改名”纳入发布 checklist
7.5 追踪动作¶
- 发布前强制跑引用校验
- bad case 集新增“重命名后检索”场景
- 增量同步改为带 tombstone 清理
八、简历条目¶
- 设计并实现企业知识库 RAG 学习助手,构建混合召回、引用约束与 bad case 回归闭环,形成可观测、可复盘的 AI 应用交付包。
- 建立检索质量、引用完整率、P95 延迟与缓存命中率指标体系,将项目从 Demo 推进到可灰度、可回滚、可持续优化的工程状态。
九、面试讲解结构¶
- 先讲业务问题:为什么单纯全文搜索不够
- 再讲架构:检索、组装、生成、引用、安全检查
- 再讲指标:命中率、引用完整率、P95、成本
- 再讲事故:索引过期导致引用失效,如何定位与修复
- 最后讲 trade-off:质量、速度、成本如何平衡