RAG 召回评估指标对比
关键指标如 Recall@k 如何影响系统性能
原题:在检索增强生成(RAG)系统中,评估和选择不同召回方法时,主要依赖哪些关键指标(例如Recall@k)?这些指标如何影响整体系统性能?
评估与监控 · 字节真题
回答与解析
核心召回指标
基础指标
- Recall@k:前k个结果中包含正确答案的比例,最常用。RAG中通常关注Recall@5/10/20
- Precision@k:前k个结果的精确率,适用于答案明确的场景
- F1@k:Recall和Precision的调和平均
排序质量指标
- MRR(Mean Reciprocal Rank):正确答案排名的倒数均值,关注"第一个正确答案出现的位置"
- NDCG@k:考虑相关度分级和位置折扣,适合有多个相关文档且重要性不同的场景
- MAP(Mean Average Precision):PR曲线下面积,适合多查询平均评估
指标如何影响系统性能
| 指标侧重 | 系统影响 |
|---|---|
| Recall@k高 | 保证相关信息被召回,降低"幻觉"风险,但可能引入噪声 |
| MRR高 | 正确答案排在前面,减轻LLM筛选负担,提升生成效率 |
| NDCG高 | 高质量文档优先,直接提升生成质量 |
实际评估要点
- 与生成环节联动:高Recall但低Precision时,需增强重排序或压缩上下文
- 多路召回评估:分别评估向量检索、关键词检索、图谱检索,再测融合后的Recall
- 业务定制:客服场景重MRR(要快准),研报场景重Recall@20(要全)
学习建议
建议系统学习该知识点
口语版讲法(约4分钟)
- 一句话定位:本质是衡量检索能否把正确答案送到生成器面前
- 核心指标:Recall@k是底线,MRR看排位,NDCG看质量
- 业务场景:客服退款场景下MRR优先,研报场景下Recall@20优先
- 落地风险:高Recall低Precision需要重排兜底,多路召回要单独评估再融合
- 工程师取舍:我倾向保Recall兜底,用Rerank提精排,上线前做query回放
这道题问的是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回放校验,否则指标好看但真实体验可能翻车。
关键一句:上线前做query回放,对比新旧策略的Recall和MRR变化,权衡召回率与响应速度的取舍
面试官还可能这样问
- 问法 1 · 场景切入
我看你做过知识库问答。假设用户问了一个产品问题,你召回了几段文档,但答案在第三段才出现,你觉得这个召回结果算不算好?你会用什么指标来量化这个‘好’?
- 问法 2 · 层层追问
RAG系统里召回结果怎么评估?……你一般用什么指标?……那如果正确答案排在很后面,只靠Recall够不够?……你觉得MRR和Recall分别侧重什么?
- 问法 3 · 直球架构
评估RAG召回阶段,你选哪些关键指标?比如Recall@k、MRR、NDCG,它们分别影响系统什么性能?你怎么根据业务场景取舍?