跳到主要内容
约 11 分钟5 张卡

RAG 评估

RAG 评估把一次问答拆成检索和生成两段,分别衡量,再检查最终回答质量。只看答案是否正确,很难知道错误发生在哪一段。比如,系统可能没有找到证据,也可能找到了证据,却在生成时遗漏了关键条件。

本文先介绍分层指标和证据标注,再说明怎样构造评测集。最后沿检索链路定位失败,并用对照实验比较方案。

1. 面试核心​

先记住这几条,再读正文
  • 检索指标。 Recall@K 衡量前 K 项覆盖了多少相关证据,MRR 衡量首个相关结果排名倒数的均值。卡 · 分层指标
  • 生成质量。 忠实度衡量回答中的陈述是否得到检索文档支持,答案正确率衡量结论是否符合事实。卡 · 分层指标
  • 故障归因。 无检索、实际检索和理想证据三组对照,可以帮助区分检索缺证据与生成误用证据。卡 · 无检索与理想证据对照
  • 证据标注。 评测样本关联问题、原文证据和文档版本,并按问题类型分层。这样才能判断回答缺少依据,还是依据已过期。卡 · 评测集
  • 对照条件。 方案对比固定数据快照、生成配置和测量预算,再分别比较各类问题的效果、延迟与费用。卡 · 综合题

2. 分层指标​

检索层检查证据是否找全、排序是否靠前,生成层检查模型怎样使用这些证据。端到端评估则从用户角度检查答案是否正确,以及引用能否支持结论。

层次指标含义
检索Recall@K已召回相关项占全部相关项的比例。
检索Precision@K前 K 项中相关项的比例。
检索MRR各问题首个相关项排名倒数的均值。
检索NDCG@K按位置折扣累计相关性,再归一化。
生成忠实度陈述受到检索文档支持的程度。
生成答案相关性回答对问题的针对程度。
端到端正确率结论满足参考答案或验收标准的比例。
端到端引用正确率引用确实支持对应结论的比例。

2.1 检索指标与标注单位​

计算检索指标前,要先约定什么算一个“相关项”。它可以是一篇文档、一个文本块,也可以是原文中支持答案的一段文字。

设人工标注的相关项集合为 R,检索结果去重后的前 K 项为 T。下列公式分别衡量覆盖率、相关项占比和排序质量:

Recall@K = |R ∩ T| / |R|
Precision@K = |R ∩ T| / K
RR = 1 / 第一个相关项的排名
MRR = 所有问题 RR 的平均值
DCG@K = Σ(i=1..K) (2^rel_i - 1) / log2(i + 1)
NDCG@K = DCG@K / IDCG@K

Recall@K 检查相关证据找全了多少,Precision@K 检查返回结果中有多少是相关的。RR 只关注第一个相关项,MRR 再对所有问题的 RR 取平均。如果前 K 项里没有相关项,该问题的 RR 记为零。

NDCG 还考虑不同结果的相关程度。公式中的 rel_i 是第 i 项的相关性等级,位置越靠后,它贡献的分数就越小。IDCG 是把全部已标注结果按相关性理想排序后,前 K 项的 DCG。用它归一化后,便于比较不同问题。

上式用 2^rel_i - 1 表示相关性带来的收益,称为指数增益。也可以直接使用 rel_i 作为线性增益,但比较方案时要固定定义。

例如,R 有 4 项,前 5 项命中其中 2 项。这时 Recall@5 为 0.5,Precision@5 为 0.4。若首个相关项排第 2,RR 就是 0.5。另一个指标 Hit@K 只检查是否命中任意一个相关项,所以它无法说明证据是否已经找全。

切分策略变化后,同一段证据会落入不同的块,甚至分散到多个块。因此,比较切分方案时,应按原文证据区间对齐,并将重复块去重,避免重复计分。

计算时还要明确两个边界。返回结果少于 K 时,上式中的 Precision@K 仍以 K 为分母。没有相关证据的问题则单独评估拒答,因为这时 Recall@K 的分母为零。

2.2 生成指标与证据条件​

检索找到了相关文档,还要判断回答是否正确使用了文档。这里需要区分忠实度、答案相关性和事实正确性:

  • 忠实度检查回答中的每条陈述是否得到检索文档支持。可以将受支持的陈述数除以回答中的陈述总数,得到一个比例。
  • 答案相关性检查回答是否针对用户的问题。即使每句话都有依据,答非所问仍然需要扣分。
  • 事实正确性检查结论是否符合真实情况。文档过期或有误时,忠实复述也会给出错误答案。

Ragas 是提供评估指标实现的框架。它的 Faithfulness 使用回答与检索上下文,将回答拆成陈述后逐条判断支持关系。这样能定位具体哪句话缺少依据,比笼统打一个总分更容易复查。

Ragas 的 Answer Relevancy 则从回答反向生成问题,再比较这些问题与原问题的向量相似度。也就是说,它检查的是回答与问题是否相关,和逐条核对事实依据的目的不同。模型评审结果还要用人工标注抽样校准。

不同指标需要不同输入。比如,按相关项 ID 计算 Recall,需要人工标注相关项;部分正确性或上下文召回指标则需要参考答案。因此,选指标时先确认具体实现的输入要求,再准备标注。

2.3 拒答与引用​

资料中没有答案时,系统应说明无法回答;资料足够时,则应正常作答。因此,评测要同时检查无答案问题的正确拒答率,以及有答案问题的误拒率。只看前者,会让总是拒答的系统得到过高评价。

引用需要同时检查正确率和覆盖率。正确率衡量已给出的引用是否支持对应结论,覆盖率衡量需要证据的结论是否附有支持引用。空回答或没有引用的样本应单独标记,避免将缺少可检查内容当成检查通过。

3. 评测集​

评测集需要同时支持“证据找对了吗”和“答案答对了吗”这两类判断。因此,每个样本除了问题,还要记录知识库版本、相关文档或块的 ID,以及原文证据位置。要判断事实正确性时,再加入参考答案。

样本优先来自真实用户问题,也可以请领域专家编写。用模型根据文档生成问题和参考答案后,要由人工审核,并确认哪些原文支持答案。覆盖范围按以下三个维度检查:

  • 文档类型要包含业务实际使用的正文、表格或扫描件等格式。
  • 问题类型要覆盖事实查询、比较、多跳和无答案问题。多跳问题需要结合多处证据才能得出答案。
  • 难度要覆盖简单查询、带多个条件的问题和业务边界场景。

生成问题时记录来源块,真实问题则由人工寻找并标注相关来源。标注应包含所有合理的证据,避免把生成问题的原块当成唯一答案。否则,系统找到另一段同样有效的证据,也会被误判为检索失败。

公开文档中的事实可能已被模型在训练中记住,所以系统即使没有检索,也能答对。这样会高估检索效果,掩盖证据缺失的问题。应加入可控的私有或新事实,并设置仅给问题的无检索基线。较新日期本身无法证明模型从未见过内容,评测仍需核对引用和证据使用情况。

开发与留出数据按来源文档分组,相似问法也放在同一组。文档更新后,同步更新参考答案、相关 ID 和证据位置,保证评测依据与知识库版本一致。

4. 召回失败的排查​

文档中有答案,只说明原始文件包含证据。证据还要经过解析、切分和排序,才能进入模型的最终输入。因此,排查时要沿着证据处理链路找到它在哪一步丢失:

  1. 入库与权限:按文档 ID 或关键词查询索引,确认文档已处理完成。再核对版本和用户权限,检查是否被错误过滤。
  2. 文档解析:将块中的文字与原文件对照,重点检查表格、扫描件和特殊格式。确认目标内容没有乱码、缺行或丢失列名。
  3. 文本切分:检查答案是否跨块,标题和例外条件是否完整。块过大时,多个主题混在一起,也会影响检索匹配。
  4. 查询表达:对照用户问题与文档用词,检查口语、缩写和正式术语的差异。可用查询改写或同义词扩展补足表达,再核对实体、时间和条件是否被改错。
  5. 检索范围:检查 Top-K 是否过小、相似度阈值是否过高,以及元数据过滤是否误伤。ANN 是只搜索部分候选的近似最近邻检索。可与精确向量检索比较,判断是否因近似搜索遗漏了结果。
  6. 融合与重排:若粗召回中已有证据,就查看融合、重排和截断的记录。核对重排分数与截断阈值,定位证据被淘汰的位置。
  7. 领域适配:用领域问题集检查嵌入与重排模型是否能识别专业术语。确认模型不适配后,再比较更换模型或用领域数据微调的效果。

BM25 根据词项匹配给文档打分,可以补充向量检索对专有名称或关键词的匹配。混合检索与重排的具体方法见混合检索与重排序。

修复时先用同一条失败样例确认原因,再检查完整回归集,并把新样例纳入其中。检索指标低时优先查检索链路;检索指标高而答案差时,重点查上下文组装和生成。后者仍需核对证据时效、标注是否完整,以及多跳问题所需的证据是否齐全。

4.1 无检索与理想证据对照​

要进一步区分检索和生成问题,可以固定生成模型、提示与输出预算,只改变提供的证据。运行以下三组对照:

  1. 无检索组仅给问题,观察模型依靠已有知识能否回答。
  2. 实际检索组提供系统检索结果,反映当前系统的表现。
  3. 理想证据组提供人工确认的完整证据,观察证据齐全时模型能否答对。

实际组较差、理想组较好时,重点检查证据获取和组装链路。如果两组都差,就继续检查生成、问题定义与评分标准。无检索组也能答对时,则要核对模型是否使用了提供的证据。

这些对照提供的是诊断线索,单次结果不足以证明全部原因。可以重复运行,再去掉关键证据或替换无关文档。观察答案与引用怎样变化,才能进一步判断模型是否依赖对应证据。

比较两套系统时,固定知识快照、测试问题和生成配置,并统一测量预算。除了检索、答案质量和拒答表现,还要记录延迟、费用与维护成本:

  • 比较 P95 延迟,检查较慢请求的等待时间是否可接受。
  • 比较单次查询费用,以及索引构建和更新成本。
  • 检查系统对文档格式的适应性、代码可维护性和监控能力。

效果接近时,优先选择更简单、成本更低的方案。两套系统各有优势时,可以按问题类型组合,但组合后仍要用同一评测集重新验收。

5 · 面试题卡片​

本页题目与参考回答

5.1 RAG 系统如何评测?有哪些评测维度?​

考察重点:能说明检索、生成与端到端指标分别衡量什么,并解释它们需要哪些标注。

相关内容:分层指标、评测集。

参考回答

RAG 要分别评估检索、生成和端到端结果,再结合延迟与成本判断效果。

检索层用 Recall@K 看证据覆盖,用 Precision@K 看返回结果中相关项的占比。MRR 关注第一个相关结果的排名,NDCG 则同时考虑相关程度与位置。生成层用忠实度检查陈述是否有证据支持,用答案相关性检查是否切题。

端到端还要看答案正确率、引用正确率和覆盖率,并同时统计正确拒答与误拒。样本记录知识库版本和证据位置,具体标注取决于指标的输入要求。LLM 评审要用人工样本校准,避免把评审偏差当成系统差异。

检索指标低时优先检查检索链路,检索指标高而答案差时重点看上下文组装和生成。同时确认文档是否过期,以及多跳问题的证据是否完整。

5.2 文档中明明有目标内容,却召回失败,如何一步步排查?​

考察重点:能沿解析、切分、查询与排序链路定位证据丢失的位置,并给出验证方法。

相关内容:召回失败的排查、文档解析与切分、混合检索与重排序。

参考回答

应沿证据处理链路找到目标内容在哪一步丢失,再针对该环节修复。

  1. 按文档 ID 或关键词查索引,确认入库完成、版本有效且用户有权访问。
  2. 对照原文检查解析,尤其留意表格、扫描件和特殊格式是否丢失内容。
  3. 检查答案是否跨块、块是否过大,以及标题和例外条件是否保留。
  4. 比较口语、缩写与文档术语,用查询改写或同义词扩展补足表达。BM25 可补充关键词匹配,改写后再核对实体与条件。
  5. 检查 Top-K、相似度阈值和过滤条件,并对比精确向量检索与 ANN。
  6. 若粗召回已有证据,再核对融合、重排分数和截断阈值。
  7. 用领域样本确认模型是否适配,必要时比较更换或微调嵌入模型。

每次修改先验证该样例,再做全量回归,并把样例加入评测集。

5.3 RAG 评测集怎样构造?公开文档可能已进入模型预训练数据,这会怎样影响评测?​

考察重点:能构造问题与证据标注,并用无检索基线判断训练记忆是否掩盖检索问题。

相关内容:评测集。

参考回答

评测集要把问题与原文证据对应起来,并防止模型的训练记忆掩盖检索缺陷。

每条样本记录问题、知识库版本、相关文档或块的 ID,以及证据位置。检查事实正确性时再提供参考答案,问题覆盖事实、比较、多跳和无答案场景。优先采用真实用户问题,再由专家补充;模型生成的问题和答案要由人工审核。

公开文档中的事实可能已经进入预训练,导致无检索也能答对。因此,要加入可控的私有或新事实,并运行无检索基线。基线已经答对的题,仍需通过引用和证据依赖检查判断检索是否有效。开发与留出数据按来源及相似问题分组,文档变化后同步更新答案和证据标注。

5.4 两个同事各开发了一套 RAG,你作为负责人如何选择?​

题型:综合题

考察重点:能在统一条件下比较分场景效果,再结合延迟、费用和维护成本选择方案。

相关内容:分层指标、评测集。

参考回答

应在统一条件下比较分场景效果,再结合延迟、费用和维护成本选择方案。

使用同一知识快照、测试问题和生成配置,并重复运行关键任务。分别统计检索、忠实度、相关性、答案正确率、引用和拒答表现。按问题类型检查差异,才能发现总分掩盖的退化。

再比较 P95 延迟、单次查询费用,以及索引构建和更新成本。文档格式适配、代码可维护性和监控能力也会影响长期使用。效果接近时,优先选择简单、成本低的方案。若按场景组合两者的优势,组合后仍需用同一评测集重新验收。

5.5 理想证据对照怎样区分检索与生成问题?​

考察重点:能解释三组对照分别提供什么信息,以及为什么还需要重复验证和轨迹归因。

相关内容:无检索与理想证据对照。

参考回答

理想证据对照检查证据齐全时能否答对,再与实际检索结果比较,以定位问题所在。

固定生成配置,分别提供问题本身、实际检索结果和人工确认的完整证据。理想组正确、实际组错误时,重点检查证据获取和组装链路。理想组也错误时,则继续检查生成、问题定义和评分标准。

无检索组答对时,模型可能只是在复述训练知识,还需核对引用与证据依赖。重复运行,并通过移除关键证据观察答案变化,再结合轨迹归因,能让判断更可靠。

6. 参考资料​