这道题问的是[[RAG]]里怎么评估召回方法,本质上是在问:你选的检索策略到底能不能把正确答案送到生成器面前,并且以多高的效率送过去。对,不是单纯比谁分数高,而是要跟后面的生成环节联动着看。
核心指标我主要看三个。先看 Recall@k,这是底线指标,比如Recall@5或者Recall@10,它决定你漏没漏掉关键信息。如果Recall不够,生成器拿到的上下文里压根没有正确答案,那后面[[Rerank]]也好、LLM推理也好,全是白费。所以任何RAG系统上线,我最先盯的就是Recall,这是保底的。
然后看 MRR,它关心的是第一个正确答案出现在第几位。你想想,如果正确答案排在第十位,前面全是噪声,LLM得从十段不相关文本里硬找,不仅慢而且容易产生[[Hallucination]]。所以MRR高,意味着系统能快速把最相关的东西顶到前面,减轻生成器的筛选负担。
另外还要看 NDCG,它比MRR更细,它考虑相关度分级和位置折扣。打个比方,有些场景下文档不止一个相关,有的特别关键,有的只是沾边,NDCG能区分谁更重要,适合那种多篇文档贡献不同、需要权衡排序的场景。
具体到业务,差别很大。举个例子,客服退款场景,用户问“我昨天买的订单为什么还没退款”,这时候正确答案可能就一句话,而且用户等不了太长时间,所以我会更看重 MRR,希望第一段就命中。反过来,如果是研报分析场景,分析师要写行业报告,需要尽可能全地搜集信息,哪怕翻到二十位才发现一篇有用的也行,这时候 Recall@20 就是核心指标,漏了信息比排得靠后更致命。
落地时有个常见坑:Recall高但Precision低,也就是召回了一堆不相关的。这时候如果直接喂给LLM,上下文塞满噪声,生成质量反而下降。所以我一般会搭配一个强力的 Rerank 环节,或者用压缩策略把不相关的滤掉。另外,如果用了多路召回,比如[[Hybrid Search]]同时跑了向量检索和[[BM25]],我会分别评估每条路的Recall,再测融合后的Recall,单独一路差可能拖累整体。
这里有个延伸点:其实指标选完了,真正上线前我还会做一轮query回放,拿一批真实用户问题回测,对比新旧策略的Recall和MRR变化,如果新方案Recall涨了但MRR掉了,我得掂量一下是否值得,因为MRR掉意味着用户等得久,业务上可能更敏感。
所以总结一下,我更倾向把 Recall@k 看作是系统质量的底线,先保证不漏,然后用Rerank和精排去提MRR和NDCG。不同业务场景下权重不一样,但上线前一定要做query回放校验,否则指标好看但真实体验可能翻车。