跳到主要内容

那些你的真实用户永远不会表现出的合成评估

· 阅读需 11 分钟
Tian Pan
Software Engineer

有一类评估失败是任何仪表盘都捕捉不到的,因为它表现为成功。分数逐周攀升。评审模型认可答案。回归测试保持绿色。与此同时,支持团队记录到用户反馈的质量在缓慢下滑,销售团队听到“它不太明白我的意思”,而工程团队中没有人能复现这些投诉,因为在评估集上尝试的每个例子都能通过。评估集和用户生活在不同的分布中,而评估集是两者中更“完美”的那一个。

其中的机制很简单,而且就隐藏在显眼处:编写评估提示词的模型与受测模型是同胞关系,而同胞共享先验知识。它们磨平同样的棱角,偏好同样的措辞,遗漏同样类型的格式错误输入。评估集验证的是在一个生成器所构想的用户世界里的表现。你真实的用户住在别处。

2025 年的论文《解构 LLM 生成翻译基准中的自我偏见》(Deconstructing Self-Bias in LLM-generated Translation Benchmarks)直接衡量了这种效应并为其命名:当一个 LLM 生成基准测试,而另一个同胞 LLM 在其上评分时,同胞模型会胜出。这种偏见有两个复合来源——测试数据本身(LLM 作为测试集)和对答案评分的评估器(LLM 作为评估器)——两者的结合放大而非抵消了分数的虚高。随后的 SILENCER 研究表明,这种偏见足以改变翻译任务排行榜的排名,并提出了通过混合来自不同模型家族的生成器来进行缓解。对生产团队而言,其含义是令人不安的:如果你的评估是一个模型,而你的生产模型是同家族的另一个模型,那么你的分数在某种程度上衡量的是家族相似性。

生成器-判别器坍缩详解

合成评估数据的标准思维模型是“我需要 500 个例子,模型生成了 500 个例子,这些例子看起来没问题”。这种思维模型忽略了模型并没有从你用户产生的输入空间中进行均匀采样。它采样的是 生成器认为自然的 输入空间。这两者并非同一种分布,且它们之间的差距恰恰在关键之处扩大:

  • 表层形式 (Surface form)。 真实用户会输入 “u” 和 “ur” 以及 “pls”。生成器会写 “you” 和 “your” 以及 “please”。一个只见过完美形式的模型在缩写形式上会悄然退化,而评估集不会察觉,因为评估集中不包含缩写形式。
  • 语码转换和混合语言 (Code-switching and mixed languages)。 一个真实的西班牙语用户可能会写三个英文句子,插入一个西班牙语从句,然后再回到英文。生成器很少产生这种情况。模型处理这种情况的效果不如纯英文输入。评估显示模型处理西班牙语没问题。生产环境则显示它处理单语西班牙语没问题,而处理语码转换的西班牙语表现很差。
  • 未完成的想法 (Half-finished thoughts)。 真实用户会发送“等下,算了我没想好——那个另外的东西怎么样?”生成器则会产生格式良好、意图单一的提示词。评估并不测试模型是否能消除自我纠正输入的歧义。
  • 领域术语 (Domain jargon)。 一个询问“调大 JVM 堆内存后工作线程池出现的 OOM”的从业者会直接这样表述。而被要求提供“十个真实的 SRE 问题”的生成器会产生更圆滑的措辞,这与从业者的提问方式并不完全一致。
  • 错误的标签和错误的前提 (Wrong labels and false premises)。 真实用户会问“为什么当我把 NOT NULL 列的默认值设为 NULL 时迁移会失败”——这个问题包含一个用户未察觉的矛盾。生成器倾向于产生前提成立的提示词。评估并不衡量模型在前提失效时的行为。

总体的效应是,合成评估削减了输入分布的长尾。这与驱动训练数据中模型坍缩的机制相同——即 Shumailov 著名的研究结果:在合成数据上进行的连续几代训练会失去原始分布的长尾——但这里应用于评估而非训练。训练坍缩版本被广泛讨论,并且有公认的缓解措施。评估坍缩版本则讨论较少,因为其症状更具迷惑性:你的分数在上升。

为什么分数在上升,而用户却察觉到了问题

要使评估有用,必须对齐三个要素:输入分布必须匹配生产环境、标签必须正确、评分标准(rubric)必须反映用户的真实关注点。合成化一切的评估流水线以相关联的方式同时损害了这三者。

输入的损害就是我们刚才讨论的。接下来是标签的损害:当评估生成器同时也产生作为“标准答案”的参考答案时,评估奖励的是生成器原本会给出的答案,而不是能真正帮助用户的答案。2024 年的《通过可解释的核查清单发现评估器 LLM 中的盲点》(Finding Blind Spots in Evaluator LLMs with Interpretable Checklists)研究衡量了这一点——评估器 LLM 在平均超过 50% 的案例中未能识别出质量下降——这意味着“LLM 作为评审员”评估中的评审组件也是家族相似性循环的一部分。2025 年的《自我纠正盲点》(Self-Correction Blind Spot)论文进一步阐明了观点:在 14 个模型中,模型无法纠正自身错误、却能发现他人工作中相同错误的平均比例高达 64.5%。你的评审员不是中立的仲裁者,它是一个参与者。

评分标准的损害是最微妙的。当评估集由同胞模型生成时,评分标准最终会编码 生成器习语中“好回答”的样子。简洁度偏好。格式偏好。委婉表达与断言之间的权衡。受测模型学会了满足评分标准。而拥有自己习语偏好的真实用户可能想要不同的东西。在你从评估分数中看到差异之前,你会在 CSAT 中先看到这种背离,因为评估分数不再衡量 CSAT——它衡量的是家族内部的一致性。

实践中如何缩小差距

在生产环境中经受住考验的补救模式包含几个要素,并且它们是层层堆叠的。没有任何一个要素能单独解决问题;目标是将评估分布(eval distribution)向生产分布(prod distribution)拉近,直到评分再次成为可用的信号。

将真实提示词采样为基准真值(Ground Truth)。 杠杆率最高的一个动作是让评估集的一小部分来自匿名化的生产流量,而不是来自生成器。2026 年的行业模式是对 100% 的输出运行自动回归指标,使用 LLM 裁判持续对 10% 到 20% 的采样流量进行评分,并将人工审核保留给 5% 到 10% 的高风险部分。同样的采样可以喂给一个精选的“野外评估”(wild eval)子集——包含几百到几千个擦除了个人隐私信息(PII)的真实提示词——它与合成套件并行运行,并允许产生分歧。当合成套件显示新模型更好,而野外评估显示它更差时,你应该相信野外评估。

在合成不可避免时进行跨系列生成。 当你确实需要生成评估案例时——例如覆盖新功能、针对已知失败模式的对抗性提示词、生产中尚未见过的场景——请使用与测试模型不同系列的语言模型来生成它们。如果你在生产环境中使用 Claude,就让 GPT 生成评估案例,反之亦然。SILENCER 论文表明,跨系列混合生成器可以显著减少自偏差膨胀。偏差并非为零,但系列相似性梯度会变得平缓。

将分布偏移指标视为一级信号。 将评估输入与生产输入之间的差距视为一个你需要关注的指标。对两组数据进行嵌入(Embed),计算距离——token 分布上的 KL 散度、嵌入上的 MMD,或者你的技术栈支持的任何方式——并在差距扩大时发出报警。差距扩大是一个信号,表明生产环境已经漂移到了评估不再覆盖的地方。大多数团队是在事故复盘时意外发现这种差距的。你可以通过衡量它,提前有目的地发现它。

允许“野外评估”跑起来是“丑陋”的。 当你建立真实流量评估集时,很容易产生清理它的冲动。别这么做。野外评估的全部意义在于保留那些拼写错误、半成品想法、语码转换(code-switching)以及错误的假设。PII 擦除应该移除个人身份信息段,而不是对周围的文本进行规范化。如果一周后野外评估看起来和合成套件一样,说明有人在“修复”它;请还原。

裁判不能有亲缘关系。 当你运行 LLM 作为裁判(LLM-as-judge)时,不要让裁判与生成器或被测模型属于同一系列。在预算允许的情况下,使用来自不同系列的裁判小组——即“陪审团裁判”模式——并接受三倍成本作为打破系列相似性循环的代价。成本效益计算非常简单:评估中的误报(即你上线了一个没被发现的退化版本)几乎总是比两个额外裁判的边际 token 成本更昂贵。

认真对待这一问题时的架构形态

已经内化这一问题的团队最终会得到一个具有三个不同层级的评估系统,他们对这些层级的信任程度与维护成本成反比。

最廉价的一层是合成回归套件。它在每次提交时运行。它能捕捉明显的损坏。大家都同意它对质量说明不了太多;它只是说明模型仍然能完成它以前能做的基本工作。

中间层是跨系列生成的套件,用于新功能和已知的失败模式。它能捕捉合成回归套件从未涉及的领地上的概念退化。它的单案例成本更高,但生成频率较低。

最昂贵且最受信任的一层是野外评估——真实的生产提示词,擦除 PII,由与生产模型不同系列的裁判评分,并随着生产流量的演变持续更新。当这一层与另外两层不一致时,你应该相信这一层。它是唯一了解用户真实行为的一层。

这种架构到位后,团队讨论评估的方式会发生微小但有意义的转变。“评估分数上升了”不再是一个可以单独发布的信号。“在野外切片上,评估分数上升了”才是信号。“在合成切片上评估分数上升了,但在野外切片上持平”是一个危险信号——这意味着模型在应对评估方面变得更好,但在应对用户方面并没有变得更好。对于只运行合成套件的团队来说,这种区别是不可见的,而它是模型生产生命周期中最关键的质量信号。

实践总结

如果你的评估集是由模型生成的,并由模型打分的,而你正准备根据结果决定是否上线,请停下来并回答两个问题。评估案例中有多少比例来自真实用户?裁判中有多少比例与生成器或被测模型属于同一系列?如果答案是“零”和“全部”,那么分数衡量的是该系列内部达成一致的程度,而你开始看到的那些用户反馈的质量漂移,才是你拥有的唯一诚实的数据点。在添加另一个功能之前,先增加野外评估。最简单的版本——一百个擦除了 PII 的真实提示词,由不同系列的裁判评分——就已经打破了这个循环。分数可能会下降。而这正是信号第一次开始起作用。

References:Let's stay in touch and Follow me for more thoughts and updates