主题
RAG 出现召回不准、引用错误或回答幻觉时怎么排查?
题型:问题排查 · 按查询、召回、融合、上下文、生成、引用逐层定位。
排查顺序
- 保存原始问题、改写结果和会话上下文,确认改写是否改变了用户意图。
- 分别查看 Milvus 与 PostgreSQL 的候选、过滤条件、rank 和原始分数。
- 检查 chunkId 去重、RRF 结果、文档版本与权限是否一致。
- 查看最终送入模型的上下文是否被截断、顺序错误或缺少标题层级。
- 对照模型答案中的每个引用,确认引用 ID 来自实际上下文而非模型自由生成。
常见根因与修复
- 新文档只写入一套存储:修复 Ingestion 状态机并重建缺失索引。
- 文档更新后旧 chunk 未失效:引入 documentVersion 和原子切换。
- 关键词查询分词不合适:调整词典、语言配置和查询构造。
- 相似 chunk 太多挤占上下文:去重、MMR 或 Reranker。
- 上下文没有答案:明确无答案策略,不允许模型猜测。
闭环
把线上失败样本加入评估集,补充召回轨迹和引用一致性监控,并记录修复前后的 Recall@K、引用正确率和幻觉率。
易错点
- 不要一看到幻觉就只改 Prompt。
- 引用链接正确不代表引用内容真的支持答案。