先这样答
处理 RAG 召回错误必须先定位再处理。定位排查需要依赖分层指标。工程师首先观察 Hit@K 指标。如果 Hit@K 指标发生掉点,问题通常出在早期召回阶段。工程师要优先排查文档切分环节。工程师还要同步排查 Embedding 环节。如果 Hit@K 指标显示命中,但最终排序效果差。这说明文档找回来了但没排在前面。工程师去查重排环节。
定位完成后,工程师把召回错误分为三类。第一类错误是切分切断语义。文档切分破坏了原有的上下文逻辑。工程师需要换用基于语义边界的切分方法。系统同时要增加相邻切片之间的重叠内容。第二类错误是查询与文档表述不一致。用户的提问方式与文档原文对不上。工程师引入查询改写机制。系统把用户查询改写成贴合文档的表述。第三类错误是专有名词匹配失败。单一的向量检索难以精准命中专有名词。工程师给系统补充关键词检索分支。系统利用关键词检索来兜底专有名词。
错误处理完毕不代表工作结束。工程师必须建立长效的监控机制。工程师把前面处理过的 bad case 收集起来。系统把这些坏案回收进固定的评测集。团队每次更新切分策略或检索模型前,都要重新跑一遍这个评测集。工程师通过评测集观察分层指标的变化。这种做法能有效防止旧问题发生回归。
面试官会怎么追问
-
「如果 Hit@K 命中率达标,但最终效果还是不好,查哪里?」 工程师直接去查重排环节。Hit@K 命中说明系统已经把正确文档拉取回来了。排序差会导致正确文档沉底。重排模型没有把最相关的文档排到最前面。工程师需要针对重排策略进行专项优化。
-
「切分切断语义的具体表现是什么?怎么解决?」 表现是核心信息被强行截断在两个不同的切片里。这会导致单个切片丢失完整的语义上下文。工程师换用语义边界切分来保持句子完整。系统还要在切分时加入重叠字符来衔接相邻切片。
-
「为什么要把 bad case 回收进评测集?」 系统迭代很容易引发旧错误复发。工程师把坏案回收进评测集来固化测试标准。团队每次修改改写策略或补充关键词检索后都要跑测。这能通过分层指标对比来防止模型能力回归。
回答的坑
回答时一头扎进具体的改写算法,忘记先讲利用分层指标定位问题的整体思路。
只讲了如何修复语义切断和表述不一致,漏掉了回收坏案防回归的工程步骤。
同系列的题