ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

RAG 三个核心指标你能分开算、组合归因吗?

RAG 三个核心指标你能分开算、组合归因吗?

行业公认的RAG三大核心效果指标为:检索召回率(Recall@K)、生成忠实度(Faithfulness)、端到端答案正确率(Answer Correctness),三者分别对应检索层、生成层、全链路层,通过「控制单一变量 + 分层独立测算 + 三维交叉归因」,可以彻底解决“效果差但不知道差在哪、优化没方向”的痛点,这也是分层解耦评测方法论的核心价值。


一、三大核心指标的独立计算方法

每个指标必须隔离单一变量、独立链路计算,确保指标结果只对应当前层级的能力,不受上下游环节干扰。

1. 检索召回率(Recall@K)——检索层专属指标

核心定义:在TopK个召回结果中,命中的相关片段数占全部相关片段总数的比例,衡量检索系统“有没有把该找的内容找出来”的能力,是RAG质量的底座。
控制变量原则:完全排除生成模型干扰,只跑检索链路,不经过大模型生成。

计算公式

Recall@K=召回结果中相关的片段数量知识库中所有相关的片段总数 Recall@K = \frac{召回结果中相关的片段数量}{知识库中所有相关的片段总数}Recall@K=知识库中所有相关的片段总数召回结果中相关的片段数量​

计算步骤
  1. 准备「查询-标准相关片段」黄金标注集:每条query人工标注所有必须命中的知识库片段ID。
  2. 固定索引库、检索参数、TopK值(K值必须和生产环境一致,通常为5/10)。
  3. 批量执行查询,仅输出召回的片段列表,不进入生成环节。
  4. 逐条比对召回片段与标注的相关片段,统计命中数量,计算整体召回率。
补充关联指标
  • Precision@K:召回片段中相关片段的占比,衡量噪音率
  • NDCG@K:综合衡量排序质量,不仅看有没有,还看排得好不好
  • MRR:平均倒数排名,衡量第一条相关结果的命中位置
注意事项
  • “相关”是语义相关,不是字符串完全匹配;
  • K值必须与生产环境使用的召回数量一致,否则指标无业务参考价值;
  • 必须固定索引版本与检索参数,否则结果不可复现、不可对比。

2. 生成忠实度(Faithfulness)——生成层专属指标

核心定义:回答中所有原子事实都能被召回上下文支撑的比例,衡量生成模型“有没有瞎编、有没有脱离上下文胡说”的能力,是幻觉控制的核心指标。
控制变量原则:完全排除检索质量干扰,固定输入同一批召回上下文,只跑生成环节。

计算公式

忠实度=回答中有上下文支撑的原子事实数量回答中总的原子事实数量 忠实度 = \frac{回答中有上下文支撑的原子事实数量}{回答中总的原子事实数量}忠实度=回答中总的原子事实数量回答中有上下文支撑的原子事实数量​
幻觉率=1−忠实度 幻觉率 = 1 - 忠实度幻觉率=1−忠实度

计算步骤(原子事实拆解法)
  1. 固定输入上下文:统一使用同一批标准召回片段,确保每次生成的输入完全一致。
  2. 原子事实拆解:把生成的回答拆解为不可再分的独立事实单元(如“2024年营收100亿,同比增15%”拆为2个原子事实)。
  3. 逐一校验:每个原子事实和召回上下文比对,判断是否有明确原文支撑。
  4. 统计计算:统计有支撑的原子事实占比,得到整体忠实度。
实现方式
  • 人工标注:准确率最高,作为校准基准
  • LLM-as-Judge自动评测:基于RAGAS/DeepEval框架,用更强的裁判模型批量校验
  • 规则校验:针对数字、专有名词等强事实字段做规则匹配
注意事项
  • 忠实度只校验“是否基于上下文”,不校验“事实本身是否正确”——如果知识库本身错误,忠实度可以很高但答案是错的;
  • 必须固定召回上下文,否则检索漏检会被误判为生成幻觉;
  • 原子事实粒度越细,评测结果越精准,整句比对误差极大。

3. 端到端答案正确率(Answer Correctness)——全链路综合指标

核心定义:最终回答符合业务事实、标准答案与要求的比例,衡量RAG系统整体解决问题的能力,是用户可感知的最终效果指标。
控制变量原则:全链路跑通,不隔离任何环节,模拟真实用户请求。

计算公式

答案正确率=回答完全正确的样本数量总测试样本数量 答案正确率 = \frac{回答完全正确的样本数量}{总测试样本数量}答案正确率=总测试样本数量回答完全正确的样本数量​

计算步骤
  1. 准备业务黄金测试集:每条query标注标准答案、业务验收标准。
  2. 全链路执行请求,输出最终回答。
  3. 从事实准确性、完整性、合规性三个维度对比回答与标准答案。
  4. 统计正确样本占比,得到整体正确率。
实现方式
  • 业务专家人工评审:准确率最高,适合核心场景验收
  • LLM-as-Judge批量评分:适合大批量回归、版本对比
  • 关键词+语义相似度结合:适合简单事实类场景
注意事项
  • 正确率是综合结果,可能受知识库错误、检索漏检、生成幻觉、推理不足等多种因素影响;
  • 必须和业务标准对齐,不能只看语义通顺;
  • 要区分“完全正确”“部分正确”“错误”三个等级,避免二分式判断过于粗糙。

二、三维组合归因模型

通过三个指标的高低组合,可以精准定位问题根因所在层级,给出明确的优化方向,避免盲目调参。

标准归因矩阵

检索召回率生成忠实度端到端正确率根因定位核心优化方向
低(<70%)高(≥85%)低检索层瓶颈:核心信息漏检,生成能力再强也没用优化分块策略、Embedding模型、混合检索、重排序
高(≥85%)低(<70%)低生成层瓶颈:内容都检索到了,但生成时瞎编、偏离上下文、指令遵循差优化系统Prompt、增加事实约束指令、更换生成模型、新增忠实度校验节点
高(≥85%)高(≥85%)低知识底座/推理瓶颈:检索和生成都没问题,但知识库本身错误,或需要跨文档多跳推理修正知识库内容、补充推理链路、优化答案整合策略、增加多片段融合能力
低低低全链路整体短板:底座能力全面不足从数据索引层开始逐层优化,先补召回再提生成
高高高质量优秀:全链路达到预期维持基线,持续监控长尾场景与边界问题
中(70%-85%)高中检索边际瓶颈:召回进入平台期,继续投入收益低评估投入产出比,优先优化生成或补充知识覆盖

进阶:量化贡献度归因

在分层数据基础上,可以进一步量化每个环节对最终正确率的贡献:

  1. 固定生成能力不变,提升召回率,观察正确率提升幅度,得到检索贡献度;
  2. 固定召回能力不变,提升忠实度,观察正确率提升幅度,得到生成贡献度;
  3. 剩余部分为知识底座与推理能力的贡献。

通过贡献度量化,可以明确优化的投入产出比,优先做贡献度高、成本低的优化项。


三、基于 EvalScope 1.8.0 + Langfuse v2.42.0 的工程化落地

结合你之前提到的工具栈,可以实现三个指标的自动分层计算与自动组合归因,无需人工统计。

1. EvalScope 侧:分层执行 + 指标自动计算

  • 分层任务配置:在EvalScope中配置三层独立评测任务
    1. 检索层任务:仅调用检索接口,输入黄金查询集,自动计算Recall@K、Precision@K、NDCG
    2. 生成层任务:传入固定上下文片段集,仅调用生成接口,自动计算忠实度、幻觉率、指令遵循率
    3. 端到端任务:全链路调用,自动计算答案正确率、业务解决率
  • 变量控制:每层任务固定输入集,确保单一变量
  • 基准对比:自动对比基线版本,输出各指标的提升/劣化幅度

2. Langfuse 侧:链路追踪 + 根因定位

  • 节点级埋点:检索节点、生成节点分别打独立Span标签,记录每个节点的输入输出、耗时、Token
  • 指标回写:通过API将EvalScope计算出的分层指标回写到对应Trace的元数据与评分中
  • 一键归因:失败用例直接跳转对应Trace,逐层回放节点输入输出,快速确认是检索漏了还是生成错了
  • Bad Case沉淀:不合格Trace一键导入数据集,标注根因类型,持续补充测试集

3. 自动归因实现

通过简单的规则配置即可实现自动归因:

  1. 设定三个指标的分级阈值(高/中/低)
  2. 每次评测完成后,自动匹配归因矩阵
  3. 输出根因层级、优化优先级、建议方向
  4. 关联对应Trace链接,方便直接复盘

四、常见误区避坑

  1. 变量不隔离,混着算:算忠实度时用真实检索结果,每次检索都不一样,导致忠实度波动大,无法判断是检索还是生成的问题。必须固定上下文。
  2. K值不匹配:评测用Recall@20,生产实际用Top5,指标好看但没有业务价值。K值必须和生产环境一致。
  3. 原子事实粒度过粗:整句比对忠实度,误差极大。必须拆解到不可再分的原子事实。
  4. 归因绝对化:非黑即白只找一个原因,实际很多问题是多层叠加的,需要逐层优化验证。
  5. 用正确率代替一切:只看端到端正确率,不做分层指标,出问题完全不知道优化方向。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进