这道题其实问的是,当你有好几条召回策略时,怎么能科学地判断哪条好、怎么组合,最终要服务[[RAG]]的生成效果。我一般会从定量、定性、还有RAG特有的分层评估这几个角度来说,但核心思路是:指标只是工具,业务场景才是裁判。
先说定量指标。像Recall@K和Precision@K是基础,但怎么取舍要看场景。比如客服退款场景,用户说“我上个月买的鞋开胶了”,如果召回没把退款政策文档拿回来,LLM就编不出答案,所以Recall是底线,我通常会设个阈值比如95%,低于这个的直接淘汰。但Precision也重要,不然一堆不相关文档喂进去,LLM容易[[Hallucination]]。具体来说,NDCG@K适合那种需要综合多份文档的复杂Query,比如“对比这两款保险”,因为它能区分文档的不同相关程度;而MRR就适合单文档就能回答的事实性问题,比如“订单号123的状态”。还有一个多路召回特有的指标叫互补性,理想状态是各路召回结果重叠度低、互补性强,这样融合后覆盖率高。
定性评估很多人会忽略,但我觉得特别关键。人工标注黄金测试集是少不了的,定义好“相关”“部分相关”“不相关”,然后跑一遍bad case分析。比如漏召了,是[[BM25]]分词没对上,还是[[Embedding]]向量离得远?误召了,是关键词膨胀还是语义偏了?这种归因能直接指导策略优化。另外,用LLM辅助评估可以降成本,比如用GPT-4给文档-Query对打分,但要注意它本身有偏差,只能当参考。
到了RAG这个场景,我习惯搭一个分层评估体系。离线阶段先独立测每条路的Recall和Precision,比如[[稀疏检索]]的BM25和[[稠密检索]]的向量召回,各自跑一遍,筛掉明显不行的。融合阶段再看NDCG和覆盖率,比如用[[重排]]模型把结果混在一起排序。最后端到端阶段,直接看生成答案的准确率,这才是北极星指标。举个例子,企业SOP合规文档检索,用户问“离职流程是什么”,如果召回没抓到最新的离职政策文档,生成答案就错了,所以离线Recall再高,端到端答不对也是白搭。
这里有个坑:离线指标提升不一定等于端到端效果提升。比如Recall从90%提到95%,但引入的噪声让LLM答得更差了,那就不值得。所以上线前一定要A/B测试,用真实用户反馈验证。另外,不同Query类型要配不同权重,事实性Query重点看Recall,推理型Query重点看NDCG。
还有一个点值得注意,就是评估时怎么处理Query本身的歧义性。比如用户说“退货”,可能指“退货政策”也可能指“退货流程”,如果召回策略没做Query理解,直接搜关键词,容易偏。所以我现在倾向在评估时加入Query改写后的对比,看能不能提升召回质量。
所以总的来说,我会把评估看成一套组合拳:先用定量指标快速筛选,再用定性分析定位问题,最后用端到端指标兜底。核心是始终盯着业务目标,不盲目追求单一指标的最优。