一个多月前,有个做客服产品的朋友来找我。他根据某个榜单把线上客服机器人换成了“排名更好”的对话模型,结果用户一句口语化的追问,机器人就开始答非所问。他第一反应是提示词写得不够好,反复改了好几版,问题依然存在。后来他翻出原始对话记录,发现单轮回答看着都通顺,但只要用户使用指代、省略或者话题切换,模型就完全跟不上了。他问我:是不是我的评测方法有问题?
我说,更准确地说,是你最开始用的那把“尺子”有问题。
这段经历不是个例。现在几乎每个接触对话智能体的人,都在和 Benchmark 打交道:模型发布方给出分数,社区里流传各种榜单,开源仓库挂着 leaderboard 徽章。大家习惯性地用 Benchmark 数字来回答“哪个模型更好”,却很少有人反过来问一句:这些用来评测对话智能体的 Benchmark,本身靠谱吗?
这正是 Benchmarking the Benchmarks 这个题目要讨论的事情——给基准测试做基准测试。我的核心判断很短:先检查尺子,再测量物体。在对话智能体这个领域,这一点尤其重要,因为这是一把误差很大、又最容易被人无脑信任的尺子。
1. 榜单分数不是承诺,而是“某种考试能力”的证明
1.1 分数反映的是“考试能力”,不是“工作能力”
一个 Benchmark,本质上是一份考卷。它把“模型好不好”这个开放问题,压缩成“模型在这批题目、这套评分规则下能拿多少分”。任何考卷都只是能力的一个有损投影。一个人考试分数高,只能说明他擅长这套考卷的题型,不能直接推导出他在真实工作里一定表现好。
对话智能体里的“失真”尤其严重。真实用户不会按照标准化模板说话。一个用户可能说“你们这个套餐能不能便宜点,我朋友上次好像用的不是这个价”,这句话里有口语省略、有指代、有隐含的比较逻辑,还带着情绪。一份静态考卷很难覆盖这种输入。更麻烦的是,对话是多轮展开的,用户上一轮说过的话、模型给过的承诺、中间跑偏的话题,都会影响下一轮怎么回答。所以,把一份测“单轮知识问答”的 Benchmark 分数,当成你整个对话产品的质量预测,本质上是用高考数学成绩判断一个人的厨艺——有关系,但关系非常有限。
1.2 对话评测难,难在三个“无限”
对话智能体的评测为什么比普通分类任务难?我一般会这样解释:
- 表达空间是无限的。同一个意图,可以有几十种口语化、错别字、语序颠倒、表情符号混排的表达方式。评测集只能采样,采样就有偏差。
- 上下文是无限延伸的。多轮对话里,指代、省略、记忆、纠错、话题漂移都会累加。单轮题目根本测不到这些。
- 质量判断是主观的。“有用”和“没用”、“耐心”和“啰嗦”,不同人打分会不一样,同一个人今天和明天打分也可能不一样。
这三个“无限”,决定了对话评测的分数天然带有很大的噪声。一份基准的分差如果只有零点几,这个差异很可能根本没有实际意义。
1.3 不是基准没用,而是我们读基准的方式错了
我并不是说 Benchmark 没有价值。它有一个非常实在的用途:在模型选型初期快速做筛选,把十多个候选模型缩小到三四个,然后再用更贴近自己场景的方式做第二轮验证。问题是,很多人把第一步的筛选工具,当成了最后的决策依据。
打个比方。U盘测速也是一种 benchmark,它的变量很少:接口、文件大小、缓存策略、操作系统。控制了这些,跑出来的数字基本稳定,也基本能预测你拷贝文件时的真实体感。但对话智能体的 benchmark 做不到这种稳定性和可预测性。同样是叫 “benchmark”,这两者的可信度完全不是一个量级。
所以问题不是“要不要看 benchmark”,而是“怎么看、看到什么程度、什么时候信、什么时候必须亲自验证”。
注意:别拿“榜单第一”直接替代场景验证。榜单适合做初筛,不适合做最终决策。