2025年12月17日

指标体系

评测指标体系涵盖**语言建模指标**(PPL)、**分类指标**(Accuracy/Precision/Recall/F1)、**检索指标**(MRR/nDCG)、**代码生成指标**(pass@k)和**对话质量指标**(LLM 打分),...

知识库大模型评测evaluationmetrics

评测指标体系

先说结论

评测指标体系涵盖语言建模指标(PPL)、分类指标(Accuracy/Precision/Recall/F1)、检索指标(MRR/nDCG)、代码生成指标(pass@k)和对话质量指标(LLM 打分),每个指标都有其适用场景和盲区。

QUESTION 面试高频:评测大模型常用的指标有哪些? 按任务类型分:语言建模用 PPL(困惑度),分类用 Accuracy/F1,检索用 MRR/nDCG/Hit Rate,代码生成用 pass@k,对话质量用 LLM 打分/人类偏好。关键是理解每个指标衡量什么、看不见什么——没有万能指标。

基础指标

PPL(困惑度)

PPL(W)=P(W)1/N=exp(1Ni=1NlogP(wiw<i))\text{PPL}(W) = P(W)^{-1/N} = \exp\left(-\frac{1}{N}\sum_{i=1}^{N}\log P(w_i \mid w_{<i})\right)

直觉:PPL = 10 意味着模型在每个位置上"平均在 10 个等概率候选词之间犹豫"。

PPL=eH(p,q)\text{PPL} = e^{H(p, q)}

其中 H(p,q)H(p, q) 是真实分布 pp 与模型分布 qq 之间的交叉熵。

模型 数据集 大致 PPL
GPT-2 WikiText-103 ~37
GPT-3 Penn Treebank ~20
LLaMA-2 WikiText-2 ~5-8

PPL 的局限:低 PPL 不等于高质量输出。PPL 只衡量预测概率,不衡量语义正确性、信息量或风格。

Accuracy / Precision / Recall / F1

混淆矩阵

预测为正 预测为负
实际为正 TP FN
实际为负 FP TN

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}

Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

F1=2PrecisionRecallPrecision+RecallF1 = \frac{2 \cdot \text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}

QUESTION 面试高频:F1 为什么用调和平均而不用算术平均? 调和平均确保只要 Precision 或 Recall 中有一个很低,F1 就会被大幅拉低。算术平均允许一个指标很低但另一个很高时"掩盖"问题。F1 的设计保证了模型必须在精确率和召回率之间取得平衡。

Accuracy 的局限

类别不平衡时 Accuracy 会产生误导。假设 95% 为负例,全部预测为负即得 95% 准确率但毫无意义。此时用 macro-F1weighted-F1

F1 的变体

变体 公式 适用场景
Macro-F1 各类 F1 的简单平均 每类同等重要
Micro-F1 全局 TP/FP/FN 计算 被大类主导
Weighted-F1 按各类样本数加权平均 类别不平衡
F-beta (1+β2)PRβ2P+R(1+\beta^2) \cdot \frac{P \cdot R}{\beta^2 \cdot P + R} 需要调节 P/R 权重

检索评测指标

QUESTION 面试高频:MRR 和 nDCG 的区别是什么?

MRR(Mean Reciprocal Rank)

MRR=1Qi=1Q1ranki\text{MRR} = \frac{1}{|Q|} \sum_{i=1}^{|Q|} \frac{1}{\text{rank}_i}

衡量第一个相关文档的排名倒数的均值。只关注第一个正确结果的排名。

nDCG(Normalized Discounted Cumulative Gain)

DCG@k=i=1k2reli1log2(i+1)\text{DCG@k} = \sum_{i=1}^{k} \frac{2^{\text{rel}_i} - 1}{\log_2(i+1)}

nDCG@k=DCG@kIDCG@k\text{nDCG@k} = \frac{\text{DCG@k}}{\text{IDCG@k}}

  • 考虑文档的相关性等级(而非仅二元的"相关/不相关")
  • 考虑位置衰减——排名越靠前权重越高
  • 归一化到 [0, 1],便于跨查询比较
指标 关注点 适用场景
MRR 第一个正确结果的排名 只需要一个正确答案的场景
Precision@K Top-K 中有多少相关 关注检索的精确度
Recall@K 相关文档被找到了多少 关注检索的召回率
nDCG@K 考虑位置的加权排序质量 需要多级相关性的场景
Hit Rate 有多少查询至少命中一个 最基础的检索指标

RAGAS 指标体系(RAG 专用)

指标 衡量内容 公式
Faithfulness 回答忠实度 被支持的声明数 / 总声明数
Answer Relevancy 答案相关性 反向生成问题的语义相似度
Context Precision 检索精确度 相关 chunk 的位置加权
Context Recall 检索召回率 回答信息在上下文中的覆盖

代码生成指标

pass@k

pass@k=1(nck)(nk)\text{pass@k} = 1 - \frac{\binom{n-c}{k}}{\binom{n}{k}}

变体 含义 用途
pass@1 一次通过率 实际部署体验
pass@10 10 次至少一次通过 模型潜力
pass@100 100 次至少一次通过 理论上限

对话质量指标

LLM-as-a-Judge 评分

评分方式 说明 注意事项
1-10 分 单点评分 定义清晰的评分标准
成对比较 A vs B 选择更好 注意位置偏差
参考对比 与 golden answer 对比 需要高质量参考答案

人类偏好评测

方式 说明 成本
Chatbot Arena 盲测对比,Elo 排名 中(众包)
Likert 量表 1-5 分或 1-7 分
专家评审 领域专家评估

指标选择指南

任务类型 推荐指标 备选
多项选择(MMLU) Accuracy -
分类任务 macro-F1 Accuracy(平衡数据集)
检索 nDCG@10 + Recall@100 MRR, Hit Rate
RAG 评测 Faithfulness + Context Recall RAGAS 全套
代码生成 pass@1 pass@10
对话质量 MT-Bench + Chatbot Arena LLM 打分
语言建模 PPL 交叉熵

如果要对外讲,可以怎么概括

"评测指标的选择取决于任务类型。我的经验是:语言建模用 PPL(但要记住低 PPL 不等于好输出),分类任务用 F1(特别是类别不平衡时 macro-F1),检索评测用 nDCG(比 MRR 更细粒度),代码生成用 pass@1(反映真实部署体验),RAG 系统用 RAGAS 的 Faithfulness + Context Recall。关键是理解每个指标的盲区——PPL 看不见语义正确性,Accuracy 看不见类别不平衡,nDCG 看不见未检索到的文档。多维度组合才能全面评估。"

最后记几条

  1. PPL = e^(交叉熵):越低越好,但低 PPL 不等于高质量
  2. F1 用调和平均:确保 P 和 R 不能互相掩盖
  3. nDCG > MRR:考虑多级相关性和位置衰减
  4. pass@1 反映部署体验:pass@10 反映潜力上限
  5. 没有万能指标:每个指标都有盲区,必须多维组合

参考资料

  • Jurafsky & Martin, Speech and Language Processing, Chapter 3
  • Manning, Raghavan & Schutze, Introduction to Information Retrieval
  • Chen, M. et al. "Evaluating Large Language Models Trained on Code" (2021)
  • Es, S. et al. "RAGAS: Automated Evaluation of RAG" (2024)

延伸阅读