逐段调试的思路
RAG 出问题时按「解析、切分、检索、重排、生成」逐段验证,而不是整体试错。先确认切片是否干净完整,再单独测检索命中,接着看重排是否改变顺序,最后把最好的片段人工拼给模型判断生成环节的忠实度。这样能把问题定位到具体环节,避免在无关的地方改参数。
基本信息
| 调试顺序 | 解析、切分、检索、重排、生成 |
|---|---|
| 必备材料 | 固定问题集与对应的标准答案位置 |
| 关键动作 | 每步留存输入输出,便于复现与对比 |
| 常见结论 | 多数问题出在解析与切分,而非生成模型 |
逐段检查
- 从向量库取回某文档的全部切片,检查是否乱码、断句异常或缺表格
- 用已知答案的问题测检索:正确切片是否在候选里、排名第几
- 对比加重排与不加时的命中变化,确认重排带来的是增益还是噪声
- 把最优片段人工拼给模型,判断生成环节是否会把正确材料答错
- 检查上下文是否被 token 预算截断,数字与条款类答案最容易被切掉
定位口诀
定位口诀
切片乱 → 修复解析与清洗
切片对但没召回 → 查 embedding 模型、查询改写、过滤条件
召回对但答案错 → 查重排顺序、上下文拼接、生成提示词留档与复现
- 记录原始问题、改写后的问题、命中片段与最终答案四件套
- 把当时的参数与模型版本一并记录,否则改动后无法回溯
- 失败样本单独归档,作为评测集的补充来源
- 每修复一类问题就把样本加进回归集,防止同类问题复发
- 用脚本固化上述流程,排查不依赖个人经验
症状与定位
| 症状 | 先查哪里 | 常见结论 |
|---|---|---|
| 答案缺关键条款 | 切片完整性 | 解析或切分丢内容 |
| 明显有答案却检索不到 | 召回与改写 | 模型不匹配或过滤条件过严 |
| 命中正确但答案偏 | 重排与上下文顺序 | 排序被高分噪声片段挤占 |
| 答案与原文表述不符 | 生成约束 | 提示词缺少引用与拒答要求 |
把每一步的输入输出存下来才能复现与对比;凭印象排查效率低,也容易把已经排除的环节反复重查。