Files
my-vault/01_Projects/Personal-Tech/LLM_Evaluation/00-Foundations/04-Concepts-and-Theory.md
T

2558 lines
40 KiB
Markdown
Raw Normal View History

---
type: guide
tags:
- llm-evaluation
- foundations
status: active
created: 2026-08-24
updated: 2026-08-24
---
# LLM 评测基础概念与理论:系统讲解
**定位:** 本文是 [[01-What-Is-LLM-Evaluation]]、[[02-Annotation-Human-Data-and-Evaluation]]、[[03-Core-Concept-Map]] 的教学整合版。重点不是堆术语,而是建立一套可以继续承载 RAG Eval、Agent Eval、LLM-as-a-Judge、Benchmark Design 等主题的基础框架。
> [[03-Core-Concept-Map]] 负责术语速查;本文负责解释:**为什么要这样测、结果为什么可信、结果又能支持什么结论。**
---
## 0. 先建立总框架:评测是一条“构念 → 测量 → 决策”的链
假设产品需求是:
> “这个客服 Agent 要可靠、合规,而且真的能把事情办成。”
这里的“可靠”“合规”“办成”都不是可以直接观测的数字。评测首先要把这些抽象目标转成可执行条件,再通过测试取得证据。
```text
Product Requirement
Construct(想测的抽象属性)
Operationalization(操作化)
Success Criteria / Rubric
Eval Cases / Dataset
System Execution
Output / Trace / Outcome
Grader / Measurement
Metrics + Uncertainty
Diagnosis
Decision
```
因此,LLM 评测不是单纯“给模型打分”,而是在做三件事:
1. **定义正确**:什么行为才算满足需求?
2. **测量正确**:我们怎样稳定、有效地观察这种行为?
3. **使用正确**:这个结果足以支持选模型、上线、回滚或修复吗?
可以进一步压缩成六个动词:
```text
Define → Sample → Execute → Measure → Validate → Improve
```
---
## 一、什么是 LLM Evaluation
一个实用定义是:
> **LLM Evaluation 是针对模型或 AI 系统设计可重复测试,通过明确的成功标准和评分方法取得行为证据,并据此判断系统是否满足目标要求的过程。**
最小结构:
```text
Task / Case
System Under Test
Observed Behavior
Grader
Result
```
如果是 Agent,还要把“Observed Behavior”拆开:
```text
Output 最终输出
Trace 执行过程
Outcome 最终环境状态
```
用传统软件测试语言类比:
```text
Requirement
→ Test Case
→ System Under Test
→ Actual Behavior
→ Test Oracle / Assertion
→ Test Result
```
这里有一个特别重要、但经常被 LLM 教程省略的概念:
### Test Oracle(测试判据)
**Oracle 是“我们凭什么知道结果对不对”的依据。**
它可能是:
- 唯一正确答案;
- 数据库最终状态;
- 单元测试;
- 业务规则;
- Rubric
- 人类专家判断;
- 经过校准的 LLM Judge。
`Grader` 是执行判断的组件;`Oracle` 是判断成立所依赖的正确性依据。
因此:
```text
Oracle = 正确性的依据
Grader = 执行判断的机制
```
这个区分很重要,因为**代码 grader 也可能错**:代码本身可以完全确定地执行一个错误的 specification。
---
## 二、为什么 LLM 评测比普通单元测试困难
### 2.1 开放任务没有唯一正确答案
例如:
```text
add(1, 2)
```
只有一个正确结果:
```text
3
```
但:
> “向初学者解释什么是缓存。”
可能存在很多合格答案。
于是问题从:
> 输出是否等于 reference
变成:
> 输出是否属于“可接受行为集合”?
可以把它想成:
```text
所有可能输出
├── 不可接受
└── 可接受集合
├── 合格答案 A
├── 合格答案 B
└── 合格答案 C
```
因此开放任务中:
- **Rubric** 更像集合边界;
- **Reference Answer** 更像集合里的一个实例。
但不能绝对化。
在以下任务中,reference 本身就可能是最好的 oracle:
- 数值答案;
- 分类标签;
- JSON 结构;
- SQL 执行结果;
- 文件状态;
- 单元测试结果。
所以准确的原则是:
> **开放任务优先定义行为标准;确定性任务优先使用可验证结果。**
---
### 2.2 系统行为具有随机性
同一个 case 重复执行:
```text
Trial 1 → PASS
Trial 2 → FAIL
Trial 3 → PASS
```
所以“这个 case 是否通过”有时只是一次采样。
更完整的问题是:
> **这个系统在这个任务上的成功概率和稳定性如何?**
这就是 `trial` 和重复测量存在的工程原因。
但这里必须区分两个不同概念:
#### 被测系统的行为稳定性
例如 Agent 同一任务十次成功八次。
这是:
```text
system behavior variability
```
它反映系统本身的随机性和可靠性。
#### 测量工具的稳定性
例如同一份回答:
```text
Judge Run 1 → PASS
Judge Run 2 → FAIL
```
这是:
```text
measurement reliability
```
它反映 grader / annotator 是否稳定。
**不要把这两类波动都笼统叫“信度”。**
---
### 2.3 Grader 本身也会错
Human grader 可能:
- 对 rubric 理解不同;
- 疲劳;
- 标准漂移;
- 缺少领域知识。
LLM Judge 可能:
- 受位置影响;
- 偏好某种表达风格;
- 对冗长回答评分偏高;
- 对模糊标准判断不稳定;
- 被待评内容中的指令干扰。
Code grader 也可能:
- assertion 写错;
- 环境假设错误;
- reference solution 错;
- 只验证了一个过窄实现路径。
所以评测存在一个元问题:
> **我们怎样验证测量工具本身?**
这才是 Calibration、IAA、Human Reference Set、Confusion Matrix、Eval QA 存在的原因。
---
### 2.4 产品目标往往是多维的
一个 Agent 可能同时要求:
```text
Task Success
Safety
Policy Compliance
Groundedness
Latency
Cost
User Experience
```
这些维度可能互相冲突。
例如:
```text
更积极调用工具
→ 任务成功率可能提高
→ 成本和风险也可能提高
```
因此一个单一总分经常不足以表达真实产品质量。
成熟做法通常是:
```text
多个独立指标
+
必要的聚合
+
关键风险 Hard Gate
```
而不是把所有东西压成一个 0–100 分。
---
### 2.5 评测结果依赖测试分布和执行环境
一个模型得到:
```text
Benchmark A = 92%
```
只说明它在:
```text
Benchmark A 的任务分布
+
对应 prompt / harness / grader / environment
```
下取得了这个结果。
不能自动推出:
> “它在所有真实业务上都有 92% 的能力。”
这就是后面 Coverage、Product Eval、Holdout、Production Monitoring 都必须存在的原因。
---
## 三、操作化定义:把“好”变成“可测”
### 3.1 Construct(构念)
Construct 是我们真正想讨论、但不能直接观测的属性。
例如:
```text
有用
可靠
安全
忠实
专业
```
这些词不能直接作为 grader。
---
### 3.2 Operationalization(操作化)
操作化是把抽象构念转换成可观察条件。
例如:
```text
“回答忠实”
```
改写成:
> 回答中所有可外部核验的事实性陈述,都必须得到给定证据支持;否则 groundedness = FAIL。
于是:
```text
Construct
Operational Definition
Observable Criteria
```
评测设计最核心的工作,往往就在这里。
---
## 四、测量学视角:Reliability 与 Validity
### 4.1 Reliability:测量结果稳定吗?
这里的 Reliability 指的是**测量过程的可靠性**。
典型问题:
> 不同标注者依据同一 rubric,会得到相近判断吗?
> 同一个 Judge 对同一输入重复评分,会稳定吗?
常见证据:
- raw agreement
- Cohen's Kappa
- Krippendorff's Alpha
- 重复 Judge 运行;
- 双人独立标注。
需要注意:
> **IAA 衡量的是评分者间一致性,不是模型本身的生产可靠性。**
---
### 4.2 Validity:这个测量支持我们想做的解释吗?
Validity 更深一层。
假设产品真正关心:
> “退款有没有成功。”
但 grader 只检查最终回答有没有说:
```text
退款成功。
```
这个 grader 可以做到 100% 稳定,却仍然测错东西。
所以:
```text
Reliability 高
Validity 高
```
---
### 4.3 三个常用的效度视角
下面采用经典测量学中常见的三个学习视角。它们不是唯一分类,但对 LLM Eval 很有帮助。
#### Content Validity:内容覆盖够吗?
问:
> 测试内容有没有覆盖目标能力的重要部分?
例如客服 Eval 全部都是正常退款,却完全没有:
```text
越权退款
身份验证失败
恶意用户
边界金额
重复请求
```
那么即使通过率很高,也可能存在 coverage 缺口。
---
#### Construct Validity:真的测到目标构念了吗?
例如声称测:
```text
Groundedness
```
但 Judge 实际上主要因为:
```text
答案长
语言正式
引用很多
```
而给高分。
这说明测量可能混入了别的因素。
---
#### Criterion-related Validity:与外部标准或真实结果有关吗?
例如:
```text
Offline Eval Score ↑
```
是否对应:
```text
真实任务成功率 ↑
用户投诉 ↓
生产故障 ↓
```
如果完全脱节,就要重新检查 eval 是否代表真实业务。
---
### 4.4 一个重要提醒:效度不是“某个 rubric 天生拥有的属性”
更准确地说:
> **我们为某个测量结果及其用途提供多少有效证据。**
同一个 benchmark
- 用于比较某类数学题能力,可能合理;
- 用来证明“通用智能”,就可能过度外推。
因此:
```text
Score
+
Evaluation Context
+
Intended Interpretation
```
必须一起看。
---
## 五、核心对象:Task、Case、Dataset、Suite
不同框架术语并不完全统一。
Anthropic 把:
```text
task ≈ problem ≈ test case
```
作为近义词。
为了自己的 Obsidian 知识库更清晰,可以采用以下**本地约定**:
### Task
一个抽象测试意图。
例如:
> 测试 Agent 是否会拒绝越权删除。
---
### Eval Case
Task 的具体实例。
例如:
```yaml
task: unauthorized_delete
input:
user_id: U1
request: "删除 U2 的文件"
expected_behavior:
- refuse
- explain_permission_boundary
metadata:
risk: high
```
于是:
```text
Task = 测什么类型的能力
Case = 用什么具体实例来测
```
这是教学约定,不是行业强制标准。
---
### Dataset / Eval Set
一组 cases。
真正好的 Eval Set 不是“很多问题”,而是一个经过设计的测试分布。
---
### Eval Suite
围绕某个能力或产品目标组织的一组 tasks / cases / datasets。
例如:
```text
Customer Support Suite
├── Refund
├── Cancellation
├── Authentication
├── Escalation
└── Policy Compliance
```
---
## 六、规格侧对象:Rubric、Reference、Oracle、Grader
这是最值得严格区分的一组概念。
### Rubric
**Rubric = 判定规则。**
例如:
```text
Groundedness = FAIL
if at least one externally verifiable factual claim
is unsupported by the supplied evidence.
```
Rubric 是 specification 的一部分。
---
### Reference Answer / Reference Solution
**Reference = 已知合格实例。**
它可以用于:
- 给 human / judge 提供 anchor
- 做相似度判断;
- 验证 task 是否可解;
- 验证 grader 是否配置正确。
对于 Agent / coding eval`reference solution` 还有很重要的 Eval QA 作用:
> 如果一个已知正确方案都不能通过 grader,那么首先应该修 eval。
---
### Test Oracle
**Oracle = 判断正确性的依据。**
例如:
```text
expected database state
unit tests
business rules
rubric
expert consensus
```
Reference 可以是 oracle 的一部分,但二者不等价。
---
### Grader
**Grader = 实际执行判断的组件。**
可以记成:
```text
Rubric = 规则
Reference = 合格实例
Oracle = 正确性依据
Grader = 执行判断
```
类比:
```text
法律条文 → Rubric
判例 → Reference
法律标准 → Oracle
法官 → Grader
```
这个类比只是帮助记忆,不要把它当严格定义。
---
## 七、Grader 的三种基本类型
### 7.1 Code-based
适用于存在明确、可程序验证条件的任务。
例如:
- exact match
- regex
- JSON Schema
- SQL execution
- unit tests
- static analysis
- database state
- file existence
- tool arguments
- latency / token count。
优点:
```text
便宜
稳定
易调试
```
缺点:
```text
可能过度刚性
容易漏掉有效变体
实现错误时会稳定地判错
```
---
### 7.2 Human
适用于:
- rubric 开发;
- 专业领域判断;
- 主观质量;
- 高风险仲裁;
- Judge 校准;
- ambiguous case 分析。
Human grader 最重要的作用不是“大规模生产标签”,而是:
> **帮助建立可信的 reference standard。**
主观任务里应该叫 `reference standard`,而不是轻易叫 `ground truth`
---
### 7.3 Model-based / LLM-as-a-Judge
适用于难以硬编码的语义条件:
- completeness
- relevance
- style
- groundedness
- instruction following
- policy compliance。
原则:
> **LLM Judge 是 measurement instrument,不是天然真值。**
使用前要验证:
- 与 human reference 的一致性;
- 关键失败的 recall
- 对 prompt / position / wording 的敏感性;
- 重复运行稳定性。
---
### 7.4 Composite Grading
复杂任务通常需要多个 grader。
例如退款 Agent
```text
Task Success
├── State Grader
│ └── refund.status == processed
├── Policy Grader
│ └── refund_amount <= allowed_limit
├── Trace Grader
│ └── identity_verified == true
└── Communication Grader
└── explanation satisfies rubric
```
注意:
> 多 grader 不等于一定要平均。
常见组合方式:
```text
binary gate
weighted score
partial credit
hybrid
```
高风险条件更适合作为:
```text
Hard Gate
```
---
## 八、执行侧对象:Run、Trial、Trace、Outcome、Harness
### Trial
同一个 task / case 的一次尝试。
```text
Case A
├── Trial 1
├── Trial 2
└── Trial 3
```
---
### Run
`Run` 更常表示一次版本化的评测执行。
它可能包含:
```text
很多 cases
×
每个 case 的一个或多个 trials
```
建议保存:
```text
system version
model version
prompt version
dataset version
rubric version
grader version
sampling parameters
environment version
timestamp
```
否则:
```text
Run A = 82%
Run B = 87%
```
无法判断变化来自哪里。
> `run` 是框架相关术语,不同平台粒度可能不同;知识库中最好明确自己的约定。
---
### Trace / Transcript / Trajectory
Agent 执行过程的记录,例如:
```text
User
Model
Tool Call
Tool Result
Model
...
Final Response
```
它回答:
> **系统是怎么完成任务的?**
---
### Outcome
执行结束后环境中的真实结果。
例如:
```text
Output:
"会议已经取消。"
Trace:
calendar.cancel(event_id)
Outcome:
event.status == cancelled
```
因此:
```text
Output ≠ Trace ≠ Outcome
```
---
## 九、Agent Eval:结果与过程分别什么时候重要
一个实用原则是:
> **如果任务目标是改变外部世界,优先验证可观察的最终状态;如果路径本身属于安全、合规或资源约束,则同时验证 Trace。**
例如删除文件:
```text
最终文件不存在
```
通常比:
```text
必须调用 rm
```
更重要。
过度规定工具调用顺序会产生 brittle eval。
但以下过程不能忽略:
- authentication
- authorization
- policy checks
- prohibited tools
- secret access
- irreversible actions
- cost budget
- turn limit
- mandatory confirmation。
所以可以记:
```text
Outcome:
事情做成了吗?
Trace:
事情是以允许的方式做成的吗?
```
---
## 十、一个教学用的四层评测视图
下面的四层是**本文的教学框架,不是行业统一标准**:
```text
Level 1 — Output
Level 2 — Component
Level 3 — Trace
Level 4 — Outcome
```
### Level 1Output
检查:
```text
文本正确性
格式
风格
回答质量
```
### Level 2Component
检查:
```text
retrieval
reranking
routing
tool selection
SQL generation
```
### Level 3Trace
检查:
```text
步骤
工具调用
权限
循环
成本
```
### Level 4Outcome
检查:
```text
数据库状态
文件
订单
日历
真实执行结果
```
并不是所有系统都必须“做到 Level 4”。
例如:
- 纯问答任务的 outcome 可能就是答案本身;
- research agent 的主要产物可能就是报告;
- 只有真正改变外部状态的 Agent,Outcome 才特别关键。
所以不要记成:
> “越高层越专业。”
应该记成:
> **选择最接近产品真实成功条件的观测层。**
---
## 十一、Agent Harness 与 Eval Harness
### Agent Harness / Scaffold
负责让模型能够作为 Agent 行动:
```text
context management
agent loop
tool orchestration
state handling
```
可以粗略写成:
```text
Model + Agent Harness = Agent System
```
---
### Eval Harness
负责测试 Agent System
```text
Load Cases
Initialize Environment
Run Agent
Capture Trace
Inspect Outcome
Run Graders
Aggregate Results
```
因此:
```text
Agent Harness ≠ Eval Harness
```
而且:
> Agent Eval 测到的通常是 `model + prompt + harness + tools + environment` 的组合,而不只是模型。
---
## 十二、Dataset DesignCoverage 比 case 数量更重要
### 12.1 Coverage
Eval 不可能覆盖整个输入空间。
所以要问:
> **测试集覆盖了哪些重要行为区域?**
常见维度:
```text
task type
difficulty
risk
user type
language
tool
edge case
failure mode
environment condition
```
因此:
> **Eval score 永远是特定测试分布上的表现。**
---
### 12.2 Positive 与 Negative Case
只测试:
```text
应该搜索
```
可能把系统优化成:
```text
什么都搜索
```
所以还要测试:
```text
不应该搜索
```
同理:
```text
应该拒绝 / 不应该拒绝
应该升级 / 不应该升级
应该调用工具 / 不应该调用工具
```
这可以防止:
```text
one-sided optimization
```
---
### 12.3 Capability Eval 与 Regression Eval
#### Capability Eval
问:
> 目前能力边界在哪里?
通常应该包含不少难题和失败。
它提供:
```text
hill to climb
```
---
#### Regression Eval
问:
> 以前已经可靠通过的能力有没有退化?
目标通常接近:
```text
100% pass
```
所以成熟体系会同时有:
```text
Capability Suite
+
Regression Suite
```
当 capability eval 接近饱和时,其中稳定通过的部分可以逐渐转入 regression suite。
---
### 12.4 Eval Saturation
如果:
```text
Pass Rate ≈ 100%
```
可能意味着:
1. 系统确实很好;
2. 测试已经失去区分能力。
饱和后的 suite 仍可以发现 regression,却很难继续测 capability improvement。
---
## 十三、Dev / Eval / Holdout 与 Contamination
### Dev Set
允许开发期频繁查看,用于:
```text
debug
prompt iteration
rubric development
```
### Eval Set
用于正式比较和 release decision。
在一次正式比较窗口中:
```text
dataset version
grader version
rubric version
```
应该固定。
### Holdout
更严格隐藏,用于检查:
```text
是否对已知 eval 过拟合
```
---
### Evaluation Contamination
当系统开发过程反复针对正式测试样本优化时:
```text
score ↑
```
可能只是:
```text
overfitting to eval
```
而不是:
```text
general capability ↑
```
公开 benchmark 还存在额外问题:
> 模型预训练过程中可能已经见过题目或高度相似的数据。
因此关键产品决策通常更值得依赖:
```text
private
recent
representative
versioned
```
的产品 eval。
---
### 关于“冻结”的正确说法
不要记成:
> Eval Set 永远不能改。
应该记成:
> **一次比较所使用的版本必须冻结;长期 Eval Suite 则需要持续维护和版本化。**
这同时服务于:
```text
reproducibility
+
continued relevance
```
---
## 十四、非确定性指标:pass@1、pass@k、pass^k
假设某任务每次独立尝试成功概率都是 `p`
### pass@1
就是单次成功概率。
对于:
> 用户通常只有一次真实交互机会
首先应该关注:
```text
pass@1
```
---
### pass@k
k 次尝试至少成功一次:
```text
1 - (1-p)^k
```
适合:
> 系统允许生成多个候选,只要一个成功即可。
例如某些代码生成、搜索、候选方案场景。
---
### pass^k
k 次尝试全部成功:
```text
p^k
```
它是一个更严格的**连续成功压力指标**。
适合回答:
> 如果重复执行很多次,这个行为能否持续稳定?
---
### 重要限制
上面的简式公式假设:
```text
每次 trial 独立
+
成功概率相同
```
实际 Agent 中可能不成立:
- shared cache
- shared environment
- rate limit
- correlated tool failure
- task 难度不同。
所以这些公式主要帮助理解概念。
真实 benchmark 统计时,应区分:
```text
per-task empirical trials
```
与:
```text
across-task aggregate estimator
```
不要把一个简单的 `p` 当成所有 case 的共同成功率。
---
## 十五、结果是估计,不是真值
假设:
```text
100 cases
83 pass
```
我们观察到:
```text
83%
```
但这不是一个无限精确的“真实能力值”。
可以用一个概念式理解:
```text
Observed Result
=
System Performance
+
Sampling Variation
+
Measurement Error
+
Environment Noise
```
所以:
```text
A = 83%
B = 84%
```
并不足以自动证明 B 更好。
还要考虑:
- sample size
- paired cases
- confidence interval
- bootstrap
- trial variability
- grader variability。
---
### 15.1 为什么 Paired Comparison 很重要
比较两个系统时,最好让:
```text
System A
System B
```
跑同一批 cases。
这样可以直接观察:
```text
哪些 case 从 fail → pass
哪些 case 从 pass → fail
```
比比较两个完全不同样本的平均分更容易归因。
---
### 15.2 Slice Analysis
总分:
```text
Overall = 90%
```
可能隐藏:
```text
Normal = 99%
Edge = 88%
Safety = 45%
```
所以必须按 metadata 切分:
```text
risk
task
difficulty
language
tool
failure type
```
---
### 15.3 Micro / Macro / Weighted
#### Micro
所有 case 放在一起计算。
大类别自然占更大权重。
#### Macro
先按类别算,再对类别平均。
适合:
> 各类别业务意义接近,但样本数量不平衡。
#### Weighted
按产品价值人为赋权。
例如:
```text
Task Success × 3
Quality × 2
Style × 1
```
但高风险指标通常不应该只靠加权:
```text
Safety Critical Failure = 0
```
往往比:
```text
Safety × 5
```
更符合真实发布决策。
---
## 十六、Human Data、Annotation 与 Evaluation
### Annotation
人按照规则对数据做结构化判断。
例如:
```text
Answer A vs B → A better
Trace → wrong_tool
Response → pass / fail
```
---
### Human Data
范围更广,包括:
#### Demonstration
```text
Instruction
Human Ideal Response
```
常用于 SFT。
#### Preference
```text
A > B
```
#### Critique
指出:
```text
哪里错
为什么错
怎么改
```
#### Evaluation Labels
例如:
```text
pass/fail
severity
failure_type
score
```
---
### Evaluation
Evaluation 使用数据和规则衡量系统表现。
所以:
```text
Annotation ≠ Evaluation
```
也不能简单说:
```text
Annotation ⊂ Evaluation
```
因为 annotation 还可以服务于训练、研究和数据治理。
更准确的是:
> **Annotation 是生产结构化 human judgment 的一种过程;Evaluation 可以使用这些判断。**
---
## 十七、Training Data 与 Evaluation Data
同一条:
```text
Prompt + Ideal Answer
```
既可能用于训练,也可能用于评测。
区别首先在用途:
| | Training Data | Evaluation Data |
|---|---|---|
| 目的 | 改变系统行为 | 测量系统行为 |
| 是否用于学习 | 是 | 正式评测原则上避免 |
| 版本管理 | 同样需要版本化 | 比较窗口必须冻结 |
| 泄漏问题 | 影响训练质量或泛化 | 直接损害评测解释 |
所以不要把二者说成:
> “训练集可以随便变,评测集必须永远不变。”
它们都需要严谨的数据治理,只是目标不同。
---
## 十八、Calibration、Blind Review、IAA、Adjudication
这几个词解决不同问题。
### Blind Review
尽量隐藏与任务无关但可能影响评分的信息,例如:
```text
模型品牌
系统名称
实验组身份
```
它主要用于:
```text
reduce bias
```
并不等于“自动提高信度”。
---
### Calibration
多个评审者先独立判断同一批样本:
```text
Annotator A
Annotator B
Annotator C
```
然后分析分歧:
```text
rubric ambiguous?
example missing?
domain knowledge missing?
case genuinely ambiguous?
```
所以 Calibration 的重要价值是:
> **发现 specification 和 measurement 的问题。**
---
### IAA
Inter-Annotator Agreement 衡量评分者的一致程度。
#### Raw Agreement
```text
一致样本数 / 总样本数
```
直观,但不考虑类别分布和随机一致。
#### Cohen's Kappa
核心思想:
```text
(observed agreement - expected agreement)
/
(1 - expected agreement)
```
它尝试扣除按边际分布产生的 chance agreement。
但不要记成:
> “Kappa 永远比 raw agreement 更诚实。”
Kappa 会受到类别 prevalence 和边际分布影响,并存在著名的 **kappa paradox**
```text
raw agreement 很高
但 kappa 可能很低
```
因此实践中应该同时查看:
```text
raw agreement
class prevalence
confusion pattern
kappa / alpha 等指标
```
而不是迷信一个数字。
---
### Adjudication
当分歧无法直接通过 rubric 修订解决时:
```text
Reviewer A
Expert
Reviewer B
```
由更高权限或领域专家仲裁。
真正没有明确答案的样本应该允许:
```text
ambiguous
```
而不是强行创造假“ground truth”。
---
## 十九、LLM-as-a-Judge:怎样校准
假设 Human Reference Label
```text
PASS / FAIL
```
并把 `FAIL` 定义成正类:
| | Human FAIL | Human PASS |
|---|---:|---:|
| Judge FAIL | TP | FP |
| Judge PASS | FN | TN |
### Failure Recall
```text
TP / (TP + FN)
```
含义:
> 所有真实 failure 中,有多少被 Judge 检出。
### Failure Precision
```text
TP / (TP + FP)
```
含义:
> Judge 判 failure 的样本中,有多少真的 failure。
### False Negative Rate
```text
FN / (TP + FN)
```
所以:
```text
FNR = 1 - Failure Recall
```
安全场景常常更重视:
```text
high failure recall
low false negative rate
```
因为真正危险的是:
```text
危险输出
→ Judge PASS
```
注意正确表述:
> **Failure Recall 不是“漏放行比例”;漏放行比例是 False Negative Rate。**
---
### 不要只看 Agreement
如果:
```text
95% PASS
5% FAIL
```
一个 Judge 永远预测:
```text
PASS
```
仍然可能得到:
```text
95% raw agreement
```
但:
```text
failure recall = 0%
```
所以 Judge 校准至少要看:
```text
confusion matrix
precision / recall
class distribution
agreement
```
---
### Multi-Judge Consensus 的边界
多个 Judge 可以减少部分单模型随机性,但:
> **多个相关模型可能共享同样的系统性偏差。**
所以:
```text
3 个 Judge 同意
```
不等于:
```text
Human Validity 已证明
```
multi-judge 是工具,不是 human calibration 的替代品。
---
## 二十、Benchmark、Product Eval、Monitoring
### Benchmark
问:
> 模型在一个标准化任务分布上的表现怎样?
适合:
- 横向比较;
- 通用能力研究;
- 筛选候选模型。
---
### Product Eval
问:
> 对我的产品和真实成功标准,它是否够好?
例如客服系统真正可能关心:
```text
refund success
unauthorized action rate
false refusal rate
escalation quality
latency
cost
```
因此:
```text
Benchmark 高
Product Fit 高
```
---
### Production Monitoring
问:
> 真实环境现在发生了什么?
例如:
- user feedback
- tool errors
- task completion
- repeated questions
- manual transcript review
- support escalation
- production incidents。
---
## 二十一、Offline Eval 与 Online Evidence
### Offline
优势:
```text
controlled
repeatable
fast
safe
```
适合:
```text
CI
model comparison
prompt changes
release gate
```
### Online
优势:
```text
real users
real distribution
unexpected failure modes
```
但:
```text
noise high
ground truth sparse
user impact real
```
两者应该形成闭环:
```text
Offline Eval
Deploy
Monitoring / Feedback
New Failure
Curated Eval Case
Regression Suite
```
---
## 二十二、Goodhart's Law:作为警告,而不是绝对定律
常见表述:
> When a measure becomes a target, it ceases to be a good measure.
它提醒我们:
> 团队如果长期只优化一个公开指标,就可能逐渐优化“指标本身”,而不是原本真正关心的目标。
但不要推导成:
> “指标只有不当目标时才有意义。”
工程团队当然可以围绕指标优化。
更合理的防护是:
```text
多维指标
private holdout
真实生产信号
定期更新 cases
anti-gaming checks
```
所以 Goodhart 在 Eval 中更像:
> **不要让 proxy metric 取代原始产品目标。**
---
## 二十三、Failure Taxonomy、Severity、Root Cause
### Failure Taxonomy
回答:
> **发生了什么?**
例如 RAG
```text
retrieval_miss
wrong_document
unsupported_claim
citation_error
```
Agent
```text
wrong_tool
wrong_arguments
permission_failure
planning_loop
state_mismatch
false_success_claim
```
---
### Severity
回答:
> **有多严重?**
例如:
```text
S0 Cosmetic
S1 Minor
S2 Major
S3 Critical
```
这样:
```text
格式错误
```
和:
```text
越权删除数据
```
不会被当成同一种 fail。
---
### Root Cause Analysis
回答:
> **为什么发生?应该在哪一层修?**
例如:
```text
Unsupported Answer
```
可能来自:
```text
retrieval miss
context truncation
prompt
generation
post-processing
grader bug
```
所以:
```text
Observed Failure
Model Failure
```
---
### 一个重要修正:“根因是模型”并非永远错误
如果已经排除了:
```text
data
prompt
retrieval
tool
environment
grader
```
而模型在清晰、可解、稳定的任务上仍持续失败,那么:
```text
model capability limitation
```
完全可以是有效结论。
根因分析的目标不是“永远不要怪模型”,而是:
> **避免在没有证据时把系统失败直接归给模型。**
---
## 二十四、Eval Failure 也是 Failure
成熟的 Eval 系统应该允许:
```text
eval_bug
```
例如:
```text
bad rubric
broken grader
incorrect reference
unsolvable task
environment issue
harness issue
```
特别是:
```text
frontier model
+
大量 trials
+
始终 0%
```
首先应该检查:
```text
task 是否可解
grader 是否公平
environment 是否正常
reference solution 是否能过
```
而不是马上断言:
```text
model incapable
```
---
## 二十五、真正的 Eval Flywheel
评测的价值不止是产生分数。
完整工程闭环应该是:
```text
Production Failure
Reproduce
Create Eval Case
Classify Failure
Root Cause
Fix
Verify
Add Regression Case
```
这件事的本质是:
> **把一次偶然发现的失败,转成永久可执行的质量知识。**
---
## 二十六、十个常见错误心智模型
### 1. Benchmark 高 = 产品一定好
错误。
正确:
```text
performance is distribution- and setup-dependent
```
---
### 2. Reference Answer = 唯一正确答案
只适用于部分确定性任务。
---
### 3. Code Grader = Ground Truth
错误。
代码可以稳定执行一个错误 oracle。
---
### 4. Judge 模型越强 = Judge 越可信
错误。
Judge 仍然需要 calibration。
---
### 5. IAA 高 = Eval 一定有效
错误。
所有评分者可以非常一致地测错东西。
---
### 6. 多次 Trial = 在测 grader 信度
不一定。
Trial 首先用于观察被测系统本身的行为随机性。
---
### 7. 用户只有一次机会,所以应该看 pass^k
不准确。
一次真实机会首先看:
```text
pass@1
```
`pass^k` 是更严格的连续成功指标。
---
### 8. Agent Eval 必须做到 Level 4
错误。
应该选择与真实任务成功条件最接近的观测层。
---
### 9. Eval Set 应该永久冻结
错误。
```text
comparison version 要冻结
suite 生命周期要维护
```
---
### 10. Score 提高 = 系统一定提高
不一定。
还可能来自:
```text
sampling noise
dataset change
grader drift
environment change
eval overfitting
```
---
## 二十七、用五个问题审查任何 Eval
以后看到任何评测体系,先问:
### 1. What are we trying to measure?
```text
真正的 construct 是什么?
```
### 2. What evidence represents it?
```text
哪些 cases / outcomes 能代表这个 construct
```
### 3. What makes an answer correct?
```text
oracle / rubric / reference 是什么?
```
### 4. Can we trust the measurement?
```text
grader 稳定吗?
和 human reference 对齐吗?
样本量够吗?
```
### 5. What decision does the result support?
```text
选模型?
上线?
回滚?
诊断?
```
如果这五个问题答不清楚:
> **一个精确到小数点后三位的分数,也可能没有实际意义。**
---
## 二十八、最终概念图
```text
Product Requirement
Construct
Operationalization
Success Criteria / Rubric
Task / Eval Case
Dataset / Suite
System Under Test
Run
Trial
├───────────────┐
↓ ↓
Trace Outcome
└───────┬───────┘
Grader
Score / Label / Metrics
Reliability + Validity Check
Statistical Analysis
Failure Taxonomy + Severity
Root Cause
Fix
Regression Suite
Production Monitoring
└────────→ New Cases
```
---
## 二十九、术语速查
| 概念对 | 核心区别 |
|---|---|
| Construct vs Operationalization | 想测的抽象属性 vs 把它变成可观察条件 |
| Rubric vs Reference | 判定规则 vs 合格实例 |
| Oracle vs Grader | 正确性的依据 vs 执行判断的机制 |
| Task vs Case | 本文约定:抽象测试意图 vs 具体实例 |
| Run vs Trial | 一次版本化评测执行 vs 某个 task/case 的一次尝试 |
| Output vs Trace vs Outcome | 最终输出 vs 执行过程 vs 最终环境状态 |
| Agent Harness vs Eval Harness | Agent 运行脚手架 vs 测试基础设施 |
| System Variability vs Measurement Reliability | 被测系统自己波动 vs 测量工具是否稳定 |
| Blind Review vs Calibration vs IAA | 降低偏差 vs 对齐/发现分歧 vs 量化一致性 |
| Capability vs Regression | 探索能力边界 vs 防止已知能力回退 |
| pass@1 vs pass@k vs pass^k | 单次成功 vs 多次至少一次成功 vs 多次全部成功 |
| Benchmark vs Product Eval vs Monitoring | 标准化能力比较 vs 产品适配性 vs 生产真实表现 |
| Failure Type vs Severity vs Root Cause | 发生什么 vs 多严重 vs 为什么发生 |
---
## 三十、自测
1. Construct 与 operationalization 分别是什么?
2. 为什么开放任务通常更依赖 rubric,而确定性任务可以直接使用 reference / state oracle
3. Oracle 和 grader 有什么区别?为什么 code grader 也可能稳定地判错?
4. 被测系统的随机性与 measurement reliability 有什么区别?
5. Reliability 高为什么不能证明 Validity 高?
6. Content validity、construct validity、criterion-related validity 分别在问什么?
7. Task、Case、Run、Trial 的层级关系是什么?哪些只是本文的本地术语约定?
8. Output、Trace、Outcome 分别回答什么问题?
9. 哪些 Agent 任务应该重点看 Outcome?哪些情况必须同时检查 Trace?
10. 为什么“Agent Eval 必须 Level 4”是不准确的?
11. Capability Eval 和 Regression Eval 为什么要分开?
12. Eval Saturation 是什么?
13. 为什么 positive / negative cases 应该成对设计?
14. 为什么一次正式比较要冻结版本,而 Eval Suite 长期又必须维护?
15. pass@1、pass@k、pass^k 分别回答什么问题?它们的简单公式依赖什么假设?
16. 为什么 A=83%、B=84% 不能自动证明 B 更好?
17. Blind review、Calibration、IAA、Adjudication 分别解决什么问题?
18. Cohen's Kappa 为什么不能简单理解成“永远比 raw agreement 更好”?
19. Failure Recall 和 False Negative Rate 是什么关系?
20. 为什么 multi-judge consensus 不能代替 human calibration
21. Benchmark 高为什么不代表 Product Eval 高?
22. Goodhart's Law 在 Eval 中真正提醒我们什么?
23. Failure Taxonomy、Severity、Root Cause 各回答什么?
24. 为什么 `eval_bug` 应该进入 failure taxonomy
25. 为什么一个好的 Eval 最终应该产生 Regression Case,而不只是一个 score
---
## 参考资料
### 官方与工程实践
- [Anthropic, *Demystifying evals for AI agents*](https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents)
- task / trial / grader / transcript / outcome / evaluation harness / agent harness
- capability vs regression eval
- pass@k / pass^k
- reference solution
- balanced problem sets
- eval saturation
- production monitoring
- [OpenAI, *Introducing AgentKit*](https://openai.com/index/introducing-agentkit/)
- datasets
- trace grading
- evaluation workflows
- **时效说明:OpenAI 已于 2026-06-03 更新公告,表示 Agent Builder 与 Evals 产品将在 2026-11-30 后不再提供。本文只借用其中的评测对象与方法论,不依赖该产品长期存在。**
### 测量学与 AI Measurement
- [NIST CAISI, *Accelerating AI Innovation Through Measurement Science*](https://www.nist.gov/blogs/caisi-research-blog/accelerating-ai-innovation-through-measurement-science)
- construct validity
- uncertainty
- benchmark design
- generalization
- LLM-as-a-Judge validation
- NIST AI Risk Management Framework / TEVV 相关资料
- validity
- reliability
- documentation
- operating context
### LLM-as-a-Judge
- Chehbouni et al., *Neither Valid nor Reliable? Investigating the Use of LLMs as Judges*, 2025
- 从 measurement theory 角度讨论 LLM Judge 的 validity 与 reliability 风险
- [arXiv:2508.18076](https://arxiv.org/abs/2508.18076)
### Agent Evaluation Survey
- Yehudai et al., *A Survey on Evaluation of LLM-based Agents*, Findings of ACL 2026[arXiv:2503.16416](https://arxiv.org/abs/2503.16416)
- IBM Research / Yale / Hebrew University
- Agent evaluation 的能力、应用 benchmark、generalist agent、benchmark dimensions 与 evaluation frameworks 综述
### Agreement Statistics
- Cohen's Kappa、Krippendorff's Alpha 等属于 inter-rater agreement 工具。
- 使用 Kappa 时需要注意 prevalence / marginal distribution 导致的 kappa paradox(经典讨论见 Feinstein & Cicchetti, 1990);因此应与 raw agreement、类别分布和具体 confusion pattern 一起解释。
---
> **最后只记一句话:**
>
> **LLM Evaluation 的本质,是把“希望 AI 做什么”转成可观测、可重复的测试,用经过验证的测量方法取得证据,再把证据转化为可解释的工程决策和永久的回归知识。**
---
返回 [[01_Projects/Personal-Tech/LLM_Evaluation/00-Foundations/README|Foundations 首页]]。