welclaiAI·TREND·DIGEST
教程

衡量质量:如何搭一套基础评测

"感觉"无法规模化。一套小而诚实的评测,能把"这好像更好了"变成一个你可以信赖的数字——本文教你从零搭一套。

tutorials2026-05-01 11:01 KST·主编·7 分钟

大多数用语言模型做开发的人,衡量质量的方式都一样:改一处、看一两个输出,然后判定它"感觉更好了"。这管用,直到它不再管用——直到你手里有两个提示却没法说清哪个真的更好,或者你交付了一处微调,修好了一个案例却悄悄弄坏了另外五个。解法是评测(eval):一套小而可重复的测试,把对质量的模糊感受变成一个你能拿来比较的数字。你不需要框架或平台就能起步。你需要的是几个例子,以及把它们用同一种方式打两遍分的纪律。这篇教程会从零把这套东西搭起来。

为什么"感觉更好了"会失灵

凭单个输出来评判一个模型有三个问题,每一个单独拿出来都是致命的。它无法泛化——那个亮眼的演示,对接下来的一百个输入什么都说明不了。它不可重复——你的印象取决于你恰好看到了哪个例子、以及你当时的心情。它也无法察觉回退——当一处改动改善了一个案例、又恶化了另一个时,一次看一个输出的肉眼审视永远显不出这笔取舍。评测把这三者一并解决:固定输入、固定打分,并着眼于整个集合而非一个幸运的样本。

目标不是一个完美的、科学的基准。它是某种比"感觉"更好的东西:一个足够诚实的测量,以至于当它说 B 版胜过 A 版时,你信。

第 1 步:一组真实例子构成的数据集

评测始于一组能代表你系统实际所做工作的输入。这是最重要的一步,也是人们最想跳过的一步。二十到五十个例子起步绰绰有余——质量远比数量重要。要紧的是它们要有代表性:取自真实或贴近真实的使用场景,覆盖简单案例、常见案例,尤其是那些困难和古怪的案例。

刻意纳入那些棘手的输入。空输入、含糊的问题、本该被拒绝的请求、上周崩掉的那个案例。一套只由简单例子搭起来的评测,会一路报告"一切正常",直到某个真实用户发来某个困难的东西。你的数据集是一座小小的博物馆,陈列着你在意要做对的那些情形,而且它应当过度地代表那些你害怕的情形。

第 2 步:定义"好"是什么意思

在你能给任何东西打分之前,你得说清对你这个任务而言一个好输出什么——这比听上去更难、也更有价值,因为它逼你把标准摆到明面上。不同任务要求不同的定义:

  • 精确匹配类任务只有一个正确答案:一个分类标签、一个抽取出的字段、一个是/否。好,就意味着输出等于预期答案。
  • 结构化任务在意形态:合法的 JSON、必需字段齐备、形状正确。好,就意味着它能被解析并符合规范。
  • 开放式任务——摘要、解释、草稿——没有单一的正确答案。好由准则来定义:它准确吗,它有没有跑题,它有没有避免编造事实,它的长度和语气合适吗?

在你看任何结果之前,先把你的定义写下来。在看过输出之后才决定"好"是什么意思,正是你把自己说服到你想要的结论上去的方式。这个定义是你那把固定的标尺,而一把会弯过去迎合答案的标尺,什么也量不出来。

第 3 步:选择如何打分

有了定义在手,你需要一种方法把它一致地应用到每一个例子上。有三个诚实的选项,大致按它们让你付出多少代价排序。

程序化检查在适用时是最好的。如果存在一个正确答案或一种必需格式,几行代码就能把输出和预期结果做比对,或者检查 JSON 能否解析、字段是否齐备。这很快、免费、完美可重复,且不受任何人心情影响。任务允许的地方都用它。

人工判断是面向那些抗拒自动检查的开放式工作的退路。你逐个读输出,对照你写下的准则给它打分。要保持诚实,就用一个简单的、有定义的量表打分,而非凭模糊印象——哪怕只是"通过/边界/不通过",每一档配一行规则,也胜过一种直觉。陷阱在于不一致:同一个人在一个疲惫的下午给同一个输出打出不同的分。把准则写下来,正是让打分在整场评测中保持稳定的东西。

模型即评委用第二个语言模型对照你的准则给输出打分,这能廉价地把"人类式判断"扩展到许多例子上。它既确实有用、也确实会出错——评委有它自己的偏见,会被自信、流畅、错误的答案蒙骗。如果你用它,就验证它:让一个人给一个样本打分,核对评委是否认同。一个你从未核对过的评委,是一个你不该信任的数字。

第 4 步:跑起来,读那些失败

现在你凑齐了各块拼图:一个数据集、一个对"好"的定义、一种打分方法。让每一个例子跑过你的系统,给每个打分,并算出一个简单的汇总——多少比例通过了、平均分多少、随你的方法怎么聚合。那个单一的数字就是你的基线。它本身意义不大;它的价值在你改动某样东西、再跑一遍的那一刻才显现,因为现在"感觉更好了"变成了"从 71% 升到了 78%",这是一个你能站得住脚的主张。

但那个数字是这份回报里较小的一半。较大的一半是阅读那些失败。把每一个得分糟糕的例子拉出来,找规律:某一类系统会处理不当的输入、某个反复出现的错误、某种它一贯搞砸的问题。聚合分数告诉你事情是否在正常运转;那些失败告诉你要修什么。一个掩盖自身失败的基线,是一支没有诊断的温度计。永远去读分布的底部,而不只是平均值。

第 5 步:一次只改一样东西

评测在你用它来比较时才回本。做一处单一的改动——一个不同的提示、一条新指令、另一个模型——再用同一个数据集、同一套打分重跑一遍。如果数字上升了、且没有哪一类失败变得更糟,就保留这处改动。如果数字下降了,你刚刚就在用户之前抓住了一次回退,而这正是整件事的意义所在。

纪律在于每次只改一个变量。一次改三样东西,分数变好也无法告诉你是哪一样帮上了忙、又或者两样有帮助而第三样起了反作用。一处改动、一次重跑、一次比较。它比你以为应有的速度要慢,而它是让那个数字保持有意义的唯一办法。

总结

一套基础评测由四块诚实的拼图组成:一小组有代表性的例子、一份对"好"的成文定义、一种一致的打分方式,以及一次只改一样东西并重跑的习惯。你用一张电子表格、一个下午就能把它搭起来。它不会是一个完美的基准,它也不需要是——它只需要比"感觉"更好、可重复到足以信赖、并揭示到足以让你看出失败聚集在哪里。一旦"感觉更好了"变成了一个你能为之辩护的数字,往后的每一个决定都会变得更轻松、也更诚实。

#evaluation#testing#quality#tutorial