RAG 评测怎么做?大多数人只测了『召回』就以为完事了
RAG 效果差,很多人第一反应是换向量模型。其实你该先测清楚问题出在检索还是生成。本文给出一套可落地的 RAG 评测框架与指标。
先诊断,再开药
RAG 系统效果差,最常见的错误反应是”换个更强的 embedding 模型”或”调调 chunk size”。这是在没有诊断的情况下乱开药。
RAG 是一条流水线:切分 → 嵌入 → 检索 → 重排 → 生成。任何一环出问题,最终答案都是错的。你必须先知道坏在哪一环。
拆成两个独立维度
正确的做法是把评测拆成两件事:
- 检索质量:正确的内容有没有被找出来?
- 生成质量:找出来的内容有没有被正确使用?
这两件事必须分开测,因为解决方案完全不同。检索不好的要动切分和检索策略;生成不好的要动提示词和模型。
检索层:三个核心指标
1. 命中率(Hit Rate / Recall@K)
在 top-K 结果里,是否包含能回答问题的文档块。
- 测法:准备一批问题,人工标注每条问题的标准答案所在块
- 看 top-5、top-10 的命中率,而不是只看 top-1
命中率低 → 问题在检索,先别碰生成。
2. MRR(平均倒数排名)
正确答案排得越靠前越好。排名第 1 得 1 分,第 2 得 1/2,以此类推。
MRR 低但命中率高,说明内容找得到了,但排序不对——这时该上 reranker(重排模型)。
3. 上下文精度 / 召回
- 精度:检索到的块里,有多少是真正相关的?(太多噪声会干扰生成)
- 召回:相关问题里,有多少被覆盖到了?
这两个是一对矛盾。加大 top-K 提高召回,但会拉低精度。找到平衡点,是工程的关键。
生成层:忠实度是生命线
生成层最重要的指标不是”像不像标准答案”,而是忠实度(Faithfulness)——答案是否完全基于检索到的上下文,而不是模型自己编的。
测法:
- 用强模型做裁判,逐句判断答案里的每个论断能否在上下文中找到依据
- 统计”无依据句子”的比例,就是幻觉率
忠实度低 = 幻觉,这是 RAG 最大的信任杀手。 再高的检索命中率,也救不了张嘴就编的生成。
从零搭一套评测的最小流程
- 造评测集:从真实用户问题里抽 50–100 条,人工标注标准答案和来源块。不要用 AI 生成的问题,那是自欺欺人。
- 跑检索指标:算 Hit Rate、MRR,定位检索是否达标。
- 跑生成指标:算忠实度、答案相关性,定位生成是否达标。
- 建立回归基线:把当前分数记下来,每次改动都对比。
第 4 步常被跳过,却最关键。没有基线,你永远不知道自己是不是在进步。
工具层面
不必从零造轮子。RAGAS、TruLens、DeepEval 都提供了现成的检索与生成指标,能直接接入你的流水线。但记住:工具给的是分数,判断问题在哪一环,还得靠你自己的评测集。
排查决策树
- 检索命中率低 → 查切分粒度、embedding 模型、是否该上混合检索(BM25 + 向量)
- 命中高但排序差 → 上 reranker
- 检索和排序都好,答案还是错 → 问题在生成,查提示词、上下文长度、模型能力
- 答案流畅但总编造 → 忠实度问题,收紧提示词,强制”无依据就说不确定”
一句话总结
RAG 评测的核心是把检索和生成拆开测:检索看命中率与排序,生成看忠实度。先诊断坏在哪一环,再对症下药。盲目换模型的代价,远比先做好评测高得多。