跳转至

如何分层评估 RAG 的检索、生成与端到端效果?

  • ID:Q026
  • 难度:进阶 / 系统设计
  • 标签:RAG Evaluation、Recall、NDCG、Faithfulness、Golden Set、Online Eval

同义问法

  • RAGAS、DeepEval、TruLens 解决什么?
  • Faithfulness、Answer Relevance、Context Relevance 有什么区别?
  • 检索指标很好但答案仍然错,为什么?
  • 没有标准答案时怎么评测 RAG?
  • RAG 的线上指标怎么设计?

来源

  • 用户提供的二手题库:3.143.159.4

可视化图解

flowchart TD
  Q[评测问题集] --> I[检索评估]
  I --> M1[Recall@K MRR nDCG]
  Q --> G[生成评估]
  G --> M2[Faithfulness 完整性 引用准确]
  I --> E[端到端评估]
  G --> E
  E --> M3[任务成功率 延迟 成本]
  M1 --> R[回归门禁]
  M2 --> R
  M3 --> R

核心结论

RAG 必须分层评估,因为“最终答案错”可能来自数据、解析、召回、排序、上下文构造或生成中的任意一层。 只用一个 LLM Judge 给最终回答打分,无法定位根因,也无法指导工程修复。

一、先定义评测对象

一条完整链路可以拆成:

对应流程使用 Mermaid 图解展示。

每层都要有独立输入、输出和指标,并保存 Trace。否则调参后即使总分变化,也不知道收益来自哪里。

二、检索层评估

需要标注每个 Query 的相关文档或支持答案所需的证据集合。

Hit@K

Top-K 中是否至少出现一个相关结果。适合单证据问答,但无法衡量多证据是否完整。

Recall@K

所有相关证据中召回了多少。多跳问题尤其重要。

Precision@K

Top-K 中相关结果的比例,用于观察噪音。

MRR

关注第一个相关结果的位置,适合希望首条就命中的场景。

NDCG

考虑多级相关性和排名折损,适合一个 Query 有“直接证据、背景材料、弱相关材料”等不同等级。

Context Sufficiency

即使文档被标为相关,也要判断当前召回片段是否足以回答。例如命中了财报文档,但只召回标题,没有数字所在表格,仍然不充分。

三、上下文层评估

Context Builder 需要单独检查:

  • 证据覆盖率;
  • 无关内容比例;
  • 重复 Chunk 比例;
  • Token 占用;
  • 来源和版本是否正确;
  • 权限过滤是否正确;
  • 多个证据之间是否存在冲突。

检索命中不等于最终上下文命中,因为结果还可能被重排、裁剪或预算策略丢弃。

四、生成层评估

Faithfulness / Groundedness

回答中的可验证断言是否被提供的上下文支持。它回答的是“有没有脱离证据编造”。

Answer Relevance

是否直接回应用户问题,避免答非所问或大量无关扩展。

Correctness

与标准答案或事实真值是否一致。一个回答可能忠实于错误文档,却仍然不正确,所以 Faithfulness 不等于 Correctness。

Completeness

是否覆盖完成任务所需的关键点。

Citation Correctness

引用是否真实存在、是否指向正确版本、是否真正支撑相邻结论。

五、Agentic RAG 还要评轨迹

若系统会多轮搜索,需要增加:

  • 查询改写保持率;
  • 路由准确率;
  • 无效检索次数;
  • 停止是否合理;
  • 总工具调用数;
  • 证据收敛速度;
  • 是否重复搜索相同内容。

只评最终文本会掩盖一个“偶然答对但过程浪费且危险”的 Agent。

六、评测集如何构建

Golden Set 不应只包含简单 FAQ。至少分桶:

  • 事实定位;
  • 多跳综合;
  • 专有名词和错误码;
  • 否定条件;
  • 时间版本;
  • 文档冲突;
  • 无答案、应拒答;
  • 权限隔离;
  • 表格、图片、代码和复杂 PDF;
  • 历史 Badcase。

每条样本保存:Query、相关证据、标准答案或关键事实点、允许的答案变体、拒答预期和风险等级。

七、LLM-as-Judge 如何可靠使用

LLM Judge 适合规模化评估语义质量,但不能作为唯一真值。

降低偏差的方法:

  • 使用清晰 Rubric,不要求一个模糊总分;
  • 把答案拆成原子断言;
  • Judge 只看需要判断的证据;
  • 对顺序、长度和模型自偏好做校准;
  • 用人工标注集测 Judge 与人的一致性;
  • 高风险样本人工复核;
  • 模型或 Prompt 变化时版本化 Judge。

八、线上评估

线上指标分三类:

质量信号

点赞、点踩、复制、追问、转人工和人工 Review,但这些都是带噪信号,不能直接等同于答案正确性。

业务指标

一次解决率、任务完成率、平均处理时长、工单减少量和人工接管率。

系统指标

P50/P95/P99 延迟、检索与重排耗时、错误率、Token、每请求成本和索引新鲜度。

上线采用离线回归 + 小流量灰度 + 在线 A/B。平均分提高不能掩盖红线样本退化,因此高风险用例必须设硬门槛。

九、根因定位矩阵

常见错误回答

用 RAGAS 跑一个分数就可以。

框架只能自动化指标,不能替你定义业务真值、风险分桶和根因链路。

用户点踩就是 Badcase。

点踩可能来自格式、延迟、预期不符或用户误操作,需要二次归因。

面试口述版

我会把 RAG 评测拆成检索、上下文、生成和端到端四层。检索看 Recall@K、MRR、NDCG 和多证据覆盖;上下文看充分性、噪音、重复、版本与权限;生成看 Faithfulness、Correctness、Completeness 和 Citation Correctness;Agentic RAG 再评路由、改写、无效调用和停止。Golden Set 会覆盖无答案、时间冲突、权限和复杂文档,LLM Judge 用 Rubric 并通过人工集校准。线上再结合任务完成率、转人工率、延迟和成本,依靠 Trace 把错误定位到具体层,而不是只看一个总分。

结合个人项目

故障诊断 Agent 的标准答案不应只是“一段文字”,而应包含:直接根因、关键证据日志、排除过的替代原因、修复动作和置信度。这样才能分别评估证据召回、因果判断和修复建议。