一、RAG 评估指标

1、RAG 评估的两种方法

评估 RAG(Retrieval-Augmented Generation)系统主要有两种方法:独立评估(分别评估检索器和生成器)和端到端评估(整体评估)。两者从不同维度检验 RAG 系统的效能,确保各组件和整体均表现良好

┌─────────────────────────────────────────────────────┐
│                  RAG 评估体系                         │
│                                                      │
│   ┌──────────────┐  ┌──────────────┐                 │
│   │  检索器评估   │  │  生成器评估   │  ← 独立评估     │
│   │  Hit Rate    │  │  BLEU/ROUGE  │                 │
│   │  MRR/NDCG    │  │              │                 │
│   └──────┬───────┘  └──────┬───────┘                 │
│          └────────┬────────┘                         │
│                   ▼                                  │
│          ┌──────────────┐                            │
│          │  端到端评估   │  ← 整体评估                │
│          │ 生成质量+检索 │                            │
│          │ 效果+响应时间 │                            │
│          └──────────────┘                            │
└─────────────────────────────────────────────────────┘

2、检索器评估(Retriever Evaluation)

检索模块的评估借鉴了搜索引擎、推荐系统等领域的经典指标,用于衡量系统在给定查询下的排名质量

指标 英文全称 中文名 核心关注点
Hit Rate Hit Rate 命中率 是否找到了相关文档
MRR Mean Reciprocal Rank 平均排名倒数 第一个相关文档排在第几
DCG Discounted Cumulative Gain 折扣累积增益 排名+相关性得分的综合
NDCG Normalized Discounted Cumulative Gain 归一化折扣累积增益 DCG 的归一化版本,可跨查询比较

2.1 命中率(Hit Rate)

核心思想:检索系统是否至少返回了一个相关结果?

  • 命中率是最直观的检索评估指标,衡量"检索到相关文档的查询次数"占总查询次数的比例
  • 命中率高 → 用户在首次查询时更有可能获得相关结果

公式:
$$
\text{Hit Rate} = \frac{\text{检索到相关文档的查询次数}}{\text{总查询次数}}
$$

示例:

  • 共 10 次查询,其中 7 次检索到了至少 1 个相关文档
  • $\text{Hit Rate} = \dfrac{7}{10} = 0.7 = 70%$

解读:70% 的查询至少返回了一个相关文档,说明检索系统具备较好的基础响应能力。

2.2 平均排名倒数(MRR)

核心思想:第一个相关文档出现的位置越靠前越好。

  • MRR 关注的是第一个正确答案的排名位置,排名越靠前,贡献越大
  • 常用于信息检索和问答系统

公式:

$$
\text{MRR} = \frac{1}{N} \sum_{i=1}^{N} \frac{1}{\text{rank}_i}
$$

其中 $N$ = 查询总数,$\text{rank}_i$ = 第 $i$ 个查询中第一个相关文档的排名。

示例:

查询 第一个相关文档排名 倒数(1/rank)
查询1 第 1 位 1/1 = 1.000
查询2 第 3 位 1/3 ≈ 0.333
查询3 第 2 位 1/2 = 0.500

$$
\text{MRR} = \frac{1.000 + 0.333 + 0.500}{3} \approx 0.611
$$

解读:MRR 越高,说明系统越倾向于将相关文档排在靠前位置。

2.3 折扣累积增益(DCG)

核心思想:排名越靠前的结果,其相关性得分权重越大。

  • DCG 对每个位置的相关性得分施加对数折扣——排名越靠后,贡献被"打折"越多
  • 相关性得分通常为人工标注(如 3=高度相关, 2=相关, 1=弱相关, 0=不相关)

公式:
$$
\text{DCG@k} = \sum_{i=1}^{k} \frac{\text{rel}_i}{\log_2(i + 1)}
$$

  • $\text{rel}_i$:第 $i$ 个位置文档的相关性得分
  • $\log_2(i+1)$:位置折扣因子(位置越靠后,分母越大,得分越小)

示例:假设一次查询返回 4 个文档,相关性得分如下:

排名 $i$ 文档 相关性 $\text{rel}_i$ $\log_2(i+1)$ $\dfrac{\text{rel}_i}{\log_2(i+1)}$
1 Doc A 3 $\log_2(2)=1.000$ 3.000
2 Doc B 2 $\log_2(3)\approx 1.585$ 1.262
3 Doc C 1 $\log_2(4)=2.000$ 0.500
4 Doc D 3 $\log_2(5)\approx 2.322$ 1.292

$$
\text{DCG@4} = 3.000 + 1.262 + 0.500 + 1.292 = \mathbf{6.054}
$$

⚠️ DCG 的致命缺陷:DCG 的值取决于测试集中相关文档的数量和分布,不能直接跨查询比较。

  • 查询 A 有 5 个 3 分文档 → DCG 上限 ≈ 12.8
  • 查询 B 只有 1 个 3 分文档 → DCG 上限 ≈ 3.0

因此 DCG = 6.0 对查询 A 可能是差结果,对查询 B 却是完美结果。解决方案 → NDCG

2.4 归一化折扣累积增益(NDCG)

核心思想:用"理想排序"的 DCG 做归一化,使不同查询之间可比较。

公式:
$$
\text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}}
$$

  • IDCG(Ideal DCG):将同一组文档按相关性降序排列后算出的 DCG,代表理论最优得分

示例(接上例):将相关性得分降序排列 → [3, 3, 2, 1]

理想排名 理想 $\text{rel}_i$ $\log_2(i+1)$ $\dfrac{\text{rel}_i}{\log_2(i+1)}$
1 3 1.000 3.000
2 3 1.585 1.893
3 2 2.000 1.000
4 1 2.322 0.431

$$
\text{IDCG@4} = 3.000 + 1.893 + 1.000 + 0.431 = \mathbf{6.324}
$$

$$
\text{NDCG@4} = \frac{\text{DCG@4}}{\text{IDCG@4}} = \frac{6.054}{6.324} \approx \mathbf{0.957}
$$

解读:NDCG = 0.957 表示当前排序达到了理想排序的 95.7%,非常接近最优。NDCG ∈ [0, 1],越接近 1 越好。

2.5 检索器指标速记

指标 一句话记忆 范围
Hit Rate 找到没? [0,1]
MRR 第一个排第几? [0,1]
DCG 排名越靠前权重越大 无上限
NDCG DCG ÷ 理想DCG,可跨查询 [0,1]

3、生成器评估(Generator Evaluation)

生成模块的评估关注生成文本的质量——与参考文本的相似度、流畅度和一致性。核心指标:BLEU 和 ROUGE。

指标 英文全称 侧重点 核心思想
BLEU Bilingual Evaluation Understudy 精度 n-gram 匹配了多少
ROUGE Recall-Oriented Understudy for Gisting Evaluation 召回率 参考文本被覆盖了多少

3.1 BLEU

BLEU 源自机器翻译领域,核心是衡量生成文本与参考文本的 n-gram 重叠精度。

3.1.1 核心公式

$$
\text{BLEU} = \text{BP} \times \exp\left( \sum_{n=1}^{N} w_n \log p_n \right)
$$

三个关键要素:

要素 含义 说明
$p_n$ n-gram 精度 $p_n = \dfrac{\text{匹配的 n-gram 个数}}{\text{生成文本中的 n-gram 总数}}$
BP 长度惩罚(Brevity Penalty) 防止生成文本过短
$w_n$ n-gram 权重 通常取均等权重 $1/N$

3.1.2 评估三步骤

步骤1:n-gram 精度计算 → 统计各阶 n-gram 的匹配度
步骤2:长度惩罚       → 若生成文本过短则施加惩罚
步骤3:加权平均       → 对各阶精度取对数加权,得到最终 BLEU 值

3.1.3 案例详解

问题:巴黎的埃菲尔铁塔有多高?
参考答案:埃菲尔铁塔的高度为 330 米
生成答案:埃菲尔铁塔的高度是 330 米

1-gram 精度:

类型 分词结果 数量
参考 ["埃菲尔铁塔", "的", "高度", "为", "330", "米"] 6
生成 ["埃菲尔铁塔", "的", "高度", "是", "330", "米"] 6
匹配 ["埃菲尔铁塔", "的", "高度", "330", "米"] 5

$$
p_1 = \frac{5}{6} \approx 0.8333
$$

2-gram 精度:

类型 2-gram 列表 数量
参考 ["埃菲尔铁塔 的", "的 高度", "高度 为", "为 330", "330 米"] 5
生成 ["埃菲尔铁塔 的", "的 高度", "高度 是", "是 330", "330 米"] 5
匹配 ["埃菲尔铁塔 的", "的 高度", "330 米"] 3

$$
p_2 = \frac{3}{5} = 0.6
$$

长度惩罚:生成文本长度 = 6 ≥ 参考文本长度 = 6 → BP = 1

最终 BLEU(假设 1-gram 和 2-gram 各占 0.5 权重):
$$
\begin{aligned}
\text{BLEU} &= 1 \times \exp\left(0.5 \times \log 0.8333 + 0.5 \times \log 0.6\right) \
&= \exp\left(0.5 \times (-0.1823) + 0.5 \times (-0.2218)\right) \
&= \exp(-0.20205) \approx \mathbf{0.817}
\end{aligned}
$$

解读:BLEU = 0.817,说明生成答案与参考答案在 n-gram 层面有较高相似度,生成质量较好。

3.1.4 局限性

局限 说明
忽略词语顺序 对顺序变化不敏感,语序不同但语义相似的文本可能被评低分
忽略语义 仅关注表面 n-gram 匹配,无法评估语义准确性
对短文本不稳定 短文本的 n-gram 太少,BLEU 值波动大

3.1.5 长度惩罚(Brevity Penalty, BP)

BP 的初衷:防止模型通过生成极短文本"作弊"——短文本更容易在 n-gram 精度上得高分。

公式:
$$
\text{BP} =
\begin{cases}
1 & \text{若 } c \geq r \[8pt]
\exp\left(1 - \dfrac{r}{c}\right) & \text{若 } c < r
\end{cases}
$$

其中 $c$ = 生成文本长度,$r$ = 参考文本长度。

示例:

生成长度 $c$ 参考长度 $r$ BP 值 说明
6 6 1.000 长度相等,无惩罚
5 6 0.819 生成偏短,受到惩罚
7 6 1.000 生成偏长,不惩罚

3.2 ROUGE

ROUGE 与 BLEU 互补——BLEU 侧重精度,ROUGE 侧重召回率。

核心对比:

BLEU  → 问:生成文本中的 n-gram 有多少在参考文本中出现了?(精度视角)---找的对不?
ROUGE → 问:参考文本中的 n-gram 有多少被生成文本覆盖了?(召回视角)---找的到不?

3.2.1 ROUGE-N

ROUGE-N 衡量生成文本与参考文本的 n-gram 召回率。

公式:
$$
\text{ROUGE-N} = \frac{\sum \text{重叠的 n-gram 数量}}{\sum \text{参考文本中的 n-gram 数量}}
$$

  • ROUGE-1:单字词重叠召回率
  • ROUGE-2:连续双词重叠召回率

3.2.2 ROUGE-L

ROUGE-L 基于最长公共子序列(LCS, Longest Common Subsequence)——在不打乱顺序的前提下,两段文本能匹配的最长词序列。

三个指标:

指标 公式 含义
Precision $\dfrac{\text{LCS 长度}}{\text{生成文本长度}}$ 生成文本中有多少在参考中出现
Recall $\dfrac{\text{LCS 长度}}{\text{参考文本长度}}$ 参考文本中有多少被生成覆盖
F1-score $\dfrac{2 \times P \times R}{P + R}$ 精度和召回率的调和平均

ROUGE-L 考虑了词语顺序,适合评估长文本的连贯性和流畅性。

3.2.3 案例详解

参考摘要:埃菲尔铁塔高 330 米,是法国巴黎的标志性建筑
生成摘要:巴黎的埃菲尔铁塔有 330 米高,是著名的旅游景点

ROUGE-1 计算:

项目 内容 数量
参考 unigram ["埃菲尔铁塔", "高", "330", "米", "是", "法国", "巴黎", "的", "标志性", "建筑"] 10
生成 unigram ["巴黎", "的", "埃菲尔铁塔", "有", "330", "米", "高", "是", "著名", "的", "旅游", "景点"] 12
重叠 unigram ["巴黎", "埃菲尔铁塔", "高", "330", "米", "是"] 6

$$
\text{ROUGE-1} = \frac{6}{10} = \mathbf{0.60}
$$

ROUGE-2 计算:

项目 2-gram 列表 数量
参考 ["埃菲尔铁塔 高", "高 330", "330 米", "米 是", "是 法国", "法国 巴黎", "巴黎 的", "的 标志性", "标志性 建筑"] 9
生成 ["巴黎 的", "的 埃菲尔铁塔", "埃菲尔铁塔 有", "有 330", "330 米", "米 高", "高 是", "是 著名", "著名 的", "的 旅游", "旅游 景点"] 11
重叠 ["330 米", "巴黎 的"] 2

$$
\text{ROUGE-2} = \frac{2}{9} \approx \mathbf{0.222}
$$

ROUGE-L 计算:

  • LCS(最长公共子序列):["埃菲尔铁塔", "330", "米", "是", "的"],长度 = 5
指标 计算 结果
Precision $5 / 12$ 0.417
Recall $5 / 10$ 0.500
F1-score $\dfrac{2 \times 0.417 \times 0.500}{0.417 + 0.500}$ 0.455

对比分析:ROUGE-1 = 0.60(词级别覆盖不错)、ROUGE-2 = 0.22(连续词对覆盖较差)、ROUGE-L F1 = 0.455(顺序和连贯性一般)。ROUGE-2 低说明生成文本在词语顺序上与原参考有较大差异。

4、端到端评估(End-to-End Evaluation)

端到端评估从整体视角衡量 RAG 系统在实际应用中的综合表现,而不仅仅是各组件的独立指标。

4.1 评估维度总览

维度 评估内容 常用方法
生成质量 文本流畅性、准确性、相关性 BLEU, ROUGE, METEOR, 人工评估
检索效果 检索准确性和召回率 Hit Rate, NDCG, Precision@K, Recall@K
检索-生成融合 生成文本是否有效利用了检索到的信息 忠实度(Faithfulness)评估、人工评审
响应时间 检索和生成的延迟 延迟测量(P50/P95/P99)
人工测评 综合用户体验 A/B 测试、人工打分

4.2 各维度详解

  1. 生成质量:评估输出的文本是否流畅、准确、与问题相关。除了自动化指标,还需要考虑事实一致性和幻觉(Hallucination)检测。

  2. 检索效果:验证检索模块是否从知识库中提取到了相关且有价值的信息。

  3. 检索-生成融合:检查生成结果是否真正使用了检索到的信息,而非忽略或曲解。常见做法是评估"忠实度"——生成内容是否忠实于检索到的上下文。

  4. 响应时间:对实时场景(如对话系统),检索和生成的延迟直接影响用户体验。通常关注 P50/P95/P99 延迟。

  5. 人工测评:自动化指标有局限,人工评估仍是"金标准"——尤其对开放性问答、创意写作等场景。

5、指标对比总结

5.1 检索器指标对比

指标 公式记忆 核心问题 优点 缺点
Hit Rate 命中次数 / 总次数 找到没? 直观简单 不考虑排名质量
MRR $\frac{1}{N}\sum \frac{1}{\text{rank}_i}$ 第一个排第几? 关注首个相关文档 只关注第一个
DCG $\sum \frac{\text{rel}_i}{\log_2(i+1)}$ 排名+相关性? 同时考虑位置和相关性 不可跨查询比较
NDCG DCG / IDCG 达到最优的多少? 可跨查询比较,归一化 需要理想排序参考

5.2 生成器指标对比

指标 视角 核心公式 优点 缺点
BLEU 精度 $\text{BP} \times \exp(\sum w_n \log p_n)$ 经典,广泛应用 忽略语义和语序
ROUGE-N 召回率 重叠 n-gram / 参考 n-gram 关注覆盖率 不考虑连贯性
ROUGE-L LCS 基于最长公共子序列的 F1 考虑词语顺序 对长文本计算复杂

5.3 选用建议

检索系统 → Hit Rate(快速筛查)+ NDCG(精确评估)
生成文本 → BLEU(精度)+ ROUGE(召回率)配合使用
整体系统 → 自动化指标 + 人工评估(金标准)
线上部署 → 以上 + 响应时间(P95延迟 < 目标阈值)

📌 核心要点回顾

  • 检索评估:Hit Rate(找没找到)→ MRR(排第几)→ NDCG(排序有多好)
  • 生成评估:BLEU(精度,生成文本对了多少)vs ROUGE(召回,参考文本覆盖了多少)
  • 端到端评估:不只关注单一指标,而是从生成质量、检索效果、融合程度、响应时间、人工体验五个维度综合衡量
  • 最佳实践:自动化指标用于快速迭代,人工评估用于最终把关——两者互补,不可偏废