RAG Production Checklist
这份清单用于检查一个 RAG 应用是否接近生产可用。它适合上线前 review,也适合面试和项目复盘。
文档导入
- [ ] 支持明确的文档来源记录
- [ ] 文档解析后保留标题、章节、页码等结构
- [ ] 清理页眉、页脚、导航、广告和重复内容
- [ ] 表格、代码块、列表没有被随意打散
- [ ] 文档更新后能重新索引
- [ ] 删除文档后能删除对应 chunk 和 embedding
- [ ] 文档导入失败有错误日志
Chunk 和 Metadata
- [ ] chunk 大小经过评测,而不是随便设置
- [ ] chunk 保留父级标题或章节路径
- [ ] 相邻 chunk 有合理重叠
- [ ] 每个 chunk 有稳定
chunk_id - [ ] 每个 chunk 有
source、title、section、page等 metadata - [ ] 权限信息在导入或索引阶段写入 metadata
- [ ] 可以根据文档类型使用不同 chunk 策略
Embedding 和索引
- [ ] 记录 embedding 模型名称和版本
- [ ] chunk 内容变化后会重新生成 embedding
- [ ] embedding 生成失败可以重试
- [ ] 索引构建过程有进度和错误记录
- [ ] 支持增量更新,而不是每次全量重建
- [ ] 有索引备份或回滚方案
检索
- [ ] 支持 top-k 配置
- [ ] 支持 metadata filter
- [ ] 权限过滤发生在生成回答之前
- [ ] 能打印或查看每次检索到的 chunk
- [ ] 有关键词检索、向量检索或混合检索策略说明
- [ ] 对多轮问题做 query rewrite 或问题补全
- [ ] 检索分数过低时进入拒答或降级逻辑
Rerank 和上下文组装
- [ ] rerank 前后结果可对比
- [ ] 上下文不会塞入过多无关 chunk
- [ ] 保留 chunk 来源,方便回答引用
- [ ] 对重复 chunk 做去重
- [ ] 对超长上下文有压缩或裁剪策略
- [ ] 重要 metadata 不会在组装 Prompt 时丢失
Prompt 和回答
- [ ] Prompt 明确要求只基于资料回答
- [ ] Prompt 明确信息不足时如何拒答
- [ ] 输出格式稳定,便于解析
- [ ] 回答中包含引用来源
- [ ] 引用能支持对应结论
- [ ] 不把系统规则、密钥或内部调试信息暴露给用户
评测
- [ ] 至少有 30 到 50 条评测问题
- [ ] 评测集包含成功、边界、拒答和 bad case
- [ ] 单独评测检索命中率
- [ ] 单独评测答案忠实度
- [ ] 单独评测引用准确性
- [ ] 每次修改 chunk、Prompt、模型或 top-k 后跑回归
- [ ] 评测结果可追踪版本
权限和安全
- [ ] 用户只能检索自己有权访问的文档
- [ ] 后端做权限校验,而不是只靠 Prompt
- [ ] 日志中敏感信息已脱敏
- [ ] 外部文档中的指令不会被当作系统指令执行
- [ ] 防范 prompt injection
- [ ] 高风险场景有人审或二次确认
观测和成本
- [ ] 记录用户问题、检索结果、模型回答和引用
- [ ] 记录模型名称、Prompt 版本、token、延迟和成本
- [ ] 记录检索耗时、rerank 耗时和模型耗时
- [ ] 有用户反馈入口
- [ ] bad case 能进入评测集
- [ ] 有速率限制和预算控制
上线前最终确认
- [ ] 本地和线上环境变量分离
- [ ] API Key 没有提交到 Git
- [ ] 有超时、重试和降级策略
- [ ] 有基础监控和告警
- [ ] 有回滚方案
- [ ] README 写清楚架构、运行方式和限制