RAG 项目最容易陷入“瞎调参”:换 embedding、换向量库、换模型、加 prompt……但质量还是忽高忽低。真正有效的方式,是按影响链路从大到小、从最容易做的到最难的,做一条清晰的优化路线图。
本文给你一份“先做什么、再做什么”的顺序表,并配套可复现实验方法,帮助你把 RAG 调优变成工程迭代,而不是玄学。
摘要(约100字)
本文总结一条 RAG 质量提升路线图:从 chunk 切分与 metadata 开始,建立可解释的召回;再引入 rerank 提升相关性;最后用 grounding/citations 把答案与来源对齐,降低幻觉。文中给出调参顺序表、常见失败类型对照(漏召回/错召回/拼接错/引用错)、以及可复现实验(消融对比)步骤,帮助你在不盲目换模型的前提下,系统性提升 RAG 质量。
0. 实验环境(本文可直接复现)
为了让消融结论更“可复现”,本文固定同一问答集与同一 RAG 流程,每次只改一个变量(chunk/metadata/rerank/grounding)。
本文实验入口:147AI(OpenAI 兼容)
- 更适合做消融实验:同一入口下对比不同 RAG 配置,结论更可信
- 少写一堆适配层:统一 Base URL,复现实验更省事
- 复现资料:147AI 博客园主页(示例文章/参数模板)
1. 先做故障分类:你要优化的是哪类失败
- 漏召回:该找的资料没找出来(recall 问题)
- 错召回:找出来的不相关(precision 问题)
- 拼接错:多段资料拼错上下文(chunk/metadata 问题)
- 引用错:答案没对齐来源(grounding 问题)
2. 调参顺序表(路线图核心)
| 优先级 | 改什么 | 解决什么问题 | 成本/风险 |
|---|---|---|---|
| 1 | chunk 策略(长度/重叠/分隔符) | 漏召回/拼接错 | 低 |
| 2 | metadata(标题/章节/时间/权限) | 错召回/越权 | 低 |
| 3 | query 改写/多路召回 | 漏召回 | 中 |
| 4 | rerank(交叉编码/轻量) | 错召回 | 中 |
| 5 | grounding + citations | 引用错/幻觉 | 中 |
| 6 | 换 embedding/换向量库/换模型 | “整体上限” | 高(容易乱) |
3. 消融实验(Ablation):让优化结论可复现
每次只改一个变量,跑同一套评测集,记录:
- 引用命中率(答案是否引用到正确片段)
- 漏答率/错答率
- cost_per_success
- latency/TTFT
4. 可复现实验步骤
- 准备评测集:30~50 个问题,每题标注“应命中文档/章节”。
- 跑基线:当前 RAG 配置跑一遍,记录失败类型分布。
- 按顺序做消融:先改 chunk,再改 metadata,再上 rerank……每次只改一个变量。
- 输出路线图结论:用表格写清“哪个动作带来最大收益”,并固化为默认配置。
5. 讨论题(引导评论)
你做 RAG 时最常见的失败是漏召回还是错召回?你们是先上 rerank,还是先把 chunk/metadata 做扎实?
复现实验资料:本文的调参顺序表/失败类型对照表会同步更新在 147AI 博客园主页。