RAG 排错主题抽象图

问题现场

用户问“试用期报销标准是多少”,日志显示向量检索确实命中了最新制度,模型却回答了旧标准。先别急着换更大的模型。把送进生成模型的最终提示完整保存下来,确认正确段落是否真的在里面、是否被截断、排在第几条。

从检索到答案分段查

第一步看召回:top-k 里有没有正确版本。第二步看重排:正确片段是否被旧页面挤到后面。第三步看切块:标题、适用日期、例外条件是否与金额分离。第四步看生成:要求模型列出依据的文档 ID 与原文位置,再核对答案是否与引用一致。某些系统检索日志显示“命中”,但最终拼接 prompt 时又因长度限制删掉了它。

旧版本是常见陷阱

制度文档若保留了历史版,同一个问题会出现两个都像答案的数字。元数据应包含版本、发布日期和生效日期;检索时可先过滤有效版本,再做语义排序。如果用户明确问历史标准,则需要允许检索旧版。单纯提高相似度分数,解决不了时间条件。

正确证据也可能没被使用

近期研究关注一个现象:即便检索材料包含答案,较小模型也可能忽略它或沿用已有记忆。工程上可做对照实验:只提供正确片段,观察是否仍回答错误;再加入干扰片段,判断模型是否受噪声影响。若第一种都不行,应重新设计抽取步骤或换模型;若只在第二种失败,应优化重排与上下文组织。

最后把错误案例存入回归集,至少覆盖旧版冲突、片段截断、无答案、多个相似实体和跨段条件。一次修好提示词不算完成,下一次更新文档后仍能答对才算。讨论 RAG 时,贴出“检索命中率”不如贴出可核对的最终答案与证据。

别把检索分数当成可靠性保证

相似度分数高,只说明文本在某种表示空间里接近。问题里的“今年”需要时间过滤,“谁批准”需要关系判断,“不适用哪些情况”需要否定条件。向量检索可以找候选段落,但这些逻辑仍要在重排与生成阶段检查。若业务文档含表格,抽取时丢失表头也会让正确数字变成错误答案。

排查时可以关掉生成模型,只观察检索前五条,并请熟悉文档的人标记每条是否足以作答。若候选段落正确,再看生成步骤;若候选不足,先调整文档处理。把“检索正确”和“回答正确”分成两个指标,团队才知道下一轮改进应花在哪里。

如果文档更新频繁,索引更新时间也应进入日志。正确答案已经写在新文档里,但索引仍指向旧版本,同样会造成看似神秘的回答错误。

资料参考

以下公开资料用于核对技术背景;文中判断与表述由本站独立整理。

END OF ARTICLE返回老哥网开发者论坛 ↗