一个团队用"模型打分"做回归:每次改提示词,跑 200 条用例,让评审模型打 1–5 分。某次改动"机评从 88 涨到 92",于是上线;一周后人工抽检 50 条,满意度从 4.0 掉到 3.1——因为"机评"学会了"喜欢'看起来周全'的回答",而那恰好是"啰嗦".
人评与机评不是"谁更准"的问题,而是"各自擅长测什么":机评擅长"一致性、覆盖、可批量",人评擅长"得体、有用、能落地"。而"只用一个"必然"在某一边失真".
"人评贵"这个前提,值得"算一笔账":"一条人评 3 分钟"、"200 条 = 10 小时"——于是"每次改提示词都人评一遍"在"工程上不可行"。而"机评"的成本是"200 条几分钱"——于是"分工"不是"偏好问题",而是"钱的约束"决定的:人评只能"抽查".
1. 两种评价的"能力边界"
| 维度 | 机评 | 人评 |
|---|---|---|
| 与标准答案的一致性 | 强 | 弱(累) |
| 格式/必含要素 | 强 | 中 |
| 事实正确性 | 中(会"自洽地错") | 强(可查) |
| 语气/得体 | 弱(偏好"周全") | 强 |
| 成本 | 低 | 高 |
第五项决定"分工":人评"贵",所以它该"只测机评测不了的"——**而"测机评能测的",是"浪费人".
"同源偏差"可以用"一次实验"看见,而它"很值得做":
// 三步"同源检验"
1 准备 10 条"已知有错"的回答(如"引用不存在的条款")
2 分别用"同族模型"与"异族模型"打分
3 若"同族"给 4 分以上 → 它"看不出自家错"
// 判据:同族均分 - 异族均分 > 0.8 → 换评审模型
"偏好长而全"这件事,其实有"可观测"的来源:评审模型"训练语料里'得高分答案'普遍更详细"——于是它"把'详细'当成了'好'",而"用户的感受"里"啰嗦"是减分的。这个偏差"不是 bug",是"数据里的统计关系"——**所以"用提示词要求它'客观'"没用,只能"改测法"(A/B 比较、加长度惩罚).
2. "机评通胀"的三种机制
| 机制 | 说明 |
|---|---|
| 偏好"长而全" | 越啰嗦分越高 |
| 同一模型"同源偏差" | 与被测模型"同族"时"看不出错" |
| 缺"负面样例" | 没有"该扣分"的锚 |
第二项最隐蔽:"评审模型"与"生成模型"同族时,它们"共享同一套偏好"——**于是"错的也一起觉得对".
"硬断言"是"最便宜、最稳"的一层,而它"根本不需要模型":
// 三条"硬断言"(纯代码,零成本)
assert "资料中没有" in out or "参考" in out # 必须给"依据"
assert len(out) <= 400 # 字数上限
assert re.search(r"\[\d+\]", out) # 引用格式
// 判据:这三条"跑一万次结果一致",而"模型打分不会"
"二元判断"比"五级打分"稳,理由和 A/B 一样:"是/否"的"锚"更硬——"是否引用了给定资料"只有"两种答案",而"几分"要"在脑子里对齐一把尺子"。而"尺子"会"随上下文漂移":同一份回答"放在'好答案堆'里"可能"3 分","放在'差答案堆'里"可能"4 分"。
3. "机评"该测什么(三种)
| 类型 | 例子 |
|---|---|
| 硬断言(可编程) | 必含字段、字数上限、引用格式 |
| 二元判断(是/否) | "是否引用了给定资料" |
| 相对比较(A/B) | "两版哪个更简洁" |
第三项比"打绝对分"稳:"哪个更好"比"几分"更少"尺子漂移"——**而"绝对分"会"随提示词/模型版本"整体漂移.
"分歧抽样"的操作只有"两次排序",而它"把人力用在刀口":
// 三步"找分歧"
1 机评给"5 分"的,按"长度"排序,取"最长的 10 条"(可疑的"周全")
2 机评给"1–2 分"的,随机取 10 条("可能是冤枉"的)
3 两批混在一起,人工"只判'能不能用'"(不判分数)
// 判据:20 条里"能看出系统性问题"的概率,远高于随机 50 条
4. "人评"该怎么抽样(三种)
| 抽样 | 适合 |
|---|---|
| 随机 50 条 | 看"整体水位" |
| 机评"分歧最大"的 | 最省(找"尺子错的地方") |
| 新出现的类型(长尾) | 防"覆盖漏洞" |
第二项是"性价比之王":"机评给 5 分而'可疑'、给 1 分而'看起来还行'的",人工看一遍——**于是"人评"用在"最可能出错的地方".
"校准机评"的实质是"定两条线",而不是"拟合一个公式":
// 两条"线"(人评定)
红线:人评 <= 2 的样例,机评也必须 <= 3(否则"尺子坏了")
目标:人评 >= 4 的比例 >= 70%
// 判据:每次改提示词,先看"红线有没有破",再看"目标有没有涨"
"并列上报"有个"组织前提":评审会上"两套数字"要"一起看"——而现实里"机评"常常"单独进了周报","人评"留在"某个人的表格里"。于是"机评涨、人评跌"这件事"没人同时看到",直到"用户投诉"才被发现——**而"把它放进同一张图",成本只是"两列并排".
5. "两套分数怎么合"的三种做法
| 做法 | 说明 |
|---|---|
| 人评"校准"机评(定阈值) | 常用 |
| 两套"并列上报" | 透明(推荐) |
| 只用一套 | 必然失真 |
第二项是"最诚实"的:"机评 92、人评 3.1"这种"并列"本身"就是结论"——**它说明"机评的尺子"与"用户感受"脱钩了.
"用例太简单"是最常见的"回归失效",而它有"一个信号":
// 三步"看用例是否太简单"
1 统计"当前模型 100% 通过"的用例比例
2 若 > 60% → 这批用例"已经饱和"(测不出差异)
3 补"难例":线上真实差评、边界输入、历史事故复现
// 判据:难例集的"通过率"应稳定在 60–80%(太低无意义)
6. 排错:五种"评价体系问题"
| 现象 | 成因 | 处理方向 |
|---|---|---|
| 机评涨、人评跌 | 偏好"长而全" | 加长度惩罚/换 A/B |
| 机评"全 5 分" | 无负面锚 | 加"该扣分"的样例 |
| 人评"看出机评看不出" | 机评同源 | 换不同族评审模型 |
| 两套分数"没人看" | 无阈值约定 | 定"红线 + 目标" |
| 回归"看不出差异" | 用例太简单 | 加"难例集" |
"格式类任务"之所以"机评就够",因为"对错"能"写成断言":
// 三种"可编程"的对错
1 JSON 能否解析、字段是否齐全
2 抽取的"金额"是否等于"原文里的数"
3 引用编号"是否存在于给定资料"
// 判据:能"写成 assert"的,就不要"让模型打分"
7. 边界:什么情况"只用机评"就够
| 场景 | 为什么 | 做法 |
|---|---|---|
| 格式类任务(JSON/表格) | 可编程校验 | 只用硬断言 |
| 抽取类(字段值) | 有"标准答案" | 机评即可 |
| 高频回归(每天多次) | 人评跟不上 | 机评 + 周抽检 |
| 内部工具(用户少) | 出错影响小 | 机评即可 |
判断口径一句话:"这个维度,能不能"用一句话说清'对错'""。能(格式、字段、引用),机评(最好是"硬断言");不能(得体、有用、是否"像人写的"),必须"人评"——**而"用机评测'得体'",等于"用'长度'测'礼貌'".
8. 自测
- 机评与人评各擅长什么?为什么"人评该只测机评测不了的"?
- "机评通胀"的三种机制里,哪一种"最隐蔽"?它为什么"看不出错"?
- 为什么"A/B 比较"比"打绝对分"更稳?
- "人评抽样"里哪一种"性价比最高"?它把人力用在哪?
- "两套分数并列上报"为什么"本身就是结论"?
- 判断"能否只用机评"的那个问题是什么?
补一句"长期"建议:"每季度做一次'人评校准'"——"随机 30 条 + 分歧 20 条",重算"机评与人的相关性";若相关性下降(如从 0.7 掉到 0.4),说明"尺子漂了",此时"调提示词"是"错的方向",该"换评审模型或换测法"。这一步"成本半天",却能"避免半年的'优化了个寂寞'".
9. 一句话总结
机评是"尺子",人评是"校准尺子的人"——而"尺子"会漂移(偏好长而全、同源偏差),所以"只用机评"必然"在某一边失真"。可行的分工是:硬断言(能编程的)→ A/B 比较(能相对判断的)→ 人评(只测'分歧最大'与'长尾');而"机评 92 / 人评 3.1"这种"并列"不是"矛盾",是"提示你该换尺子了"。