Skip to content

RAG 出现召回不准、引用错误或回答幻觉时怎么排查?

题型:问题排查 · 按查询、召回、融合、上下文、生成、引用逐层定位。

排查顺序

  1. 保存原始问题、改写结果和会话上下文,确认改写是否改变了用户意图。
  2. 分别查看 Milvus 与 PostgreSQL 的候选、过滤条件、rank 和原始分数。
  3. 检查 chunkId 去重、RRF 结果、文档版本与权限是否一致。
  4. 查看最终送入模型的上下文是否被截断、顺序错误或缺少标题层级。
  5. 对照模型答案中的每个引用,确认引用 ID 来自实际上下文而非模型自由生成。

常见根因与修复

  • 新文档只写入一套存储:修复 Ingestion 状态机并重建缺失索引。
  • 文档更新后旧 chunk 未失效:引入 documentVersion 和原子切换。
  • 关键词查询分词不合适:调整词典、语言配置和查询构造。
  • 相似 chunk 太多挤占上下文:去重、MMR 或 Reranker。
  • 上下文没有答案:明确无答案策略,不允许模型猜测。

闭环

把线上失败样本加入评估集,补充召回轨迹和引用一致性监控,并记录修复前后的 Recall@K、引用正确率和幻觉率。

易错点

  • 不要一看到幻觉就只改 Prompt。
  • 引用链接正确不代表引用内容真的支持答案。

知识关系

从当前问题继续深入,或者回到提出这个问题的知识入口。