你更新了一版提示词,或者某个服务商在同一个模型 ID 下悄悄换了个新检查点,然后生产环境里某处开始退化。用户投诉的内容和上一周相比,只是"略有不同"。像 MMLU 这样的公开基准测试根本抓不到这种变化——它衡量的是模型在学术科目上的通用能力,而不是模型如何处理你产品自己的流量。 golden 评测集就是用来补上这个缺口的。它是一组经过人工审核的生产输入与预期输出配对,用 Git 做版本管理,每次部署前跑一遍。它能回答基准测试回答不了的那个问题:这次改动,对你实际服务的流量来说,是帮忙还是帮倒忙? 这份指南覆盖三件事:golden 集是什么,为什么生产数据比合成数据是更好的底子,以及一套从线上流量构建 golden 集的五步流程。它还覆盖如何通过一个 API 把同一套集合跑在多个候选模型上,让你依据自己流量的证据来挑下一个模型,而不是依据榜单排名。 **它到底是什么** golden 评测集是一批生产环境样本,配上经过审核的预期输出,从训练中留出,在每个候选版本上评估。每一条预期输出都由具备领域知识的人确认过,或者被判定为不需要预期输出——因为格式、安全、语气这类无参考检查本身就是通过标准。 正是这道审核工序让这套数据变得有用。没有它,当分数出现下滑时,你分不清是这次改动让质量退化了,还是某条样本的标签本身就标错了。 把它当成一套针对行为而非代码的回归测试。它在 CI 里运行,有已知正确的预期输出,能捕捉两次部署之间的漂移。和单元测试的区别在于,预期输出是一种判断,所以测试框架要做的远不止字符串比对。 golden 集不是基准测试,不是训练集,也不是 A/B 测试。基准测试衡量通用能力,golden 集衡量模型在你流量上的能力;训练集教模型做事,golden 集在模型退化时抓住它;A/B 测试衡量线上用户结果,golden 集衡量一次改动是否安全到值得去做 A/B 测试。 **为什么生产数据是更好的底子** 合成评测测的是模型回答"某人想象中用户可能会问的问题"的能力。你真正需要测的,是用户实际问过的问题,以及他们使用的措辞。生产流量是更好的底子,原因有三条。 - **分布是对的。** 如果你的流量里 70% 和定价有关,评测集里就该有 70% 和定价有关。从想象出来的边缘案例里抽出来的合成集,保不住这个分布。保住观测到的分布,回归分数才能反映用户影响。 - **失败模式是你真正在意的那些。** 用户会找到你想都想不到的失败模式:一条混了三种语言的消息、一张把整段错误日志粘进来的工单、一个引用了你上个季度刚改名的产品功能的查询。合成集不会包含这些,除非有人恰好想到了。 - **样本跟着你的产品走。** 一个半年前上线时只处理密码重置的客服机器人,现在会遇到多账号问题、退款升级、以及竞品界面的截图。从生产里抽的 golden 集能跟上这种漂移,冻结在上线那天的合成集不能。 合成样本仍有位置,但它是补充而非底子。用它们填补已知失败模式的覆盖缺口——那些你真实样本太少的场景。你可以用带结构化输出的模型调用生成,让每条样本落进你的数据集 schema,也可以对现有条目做改写。在元数据里标记为合成,并让它们只占集合的少数。 **五步流程** **第一步:抽取一段生产流量样本。** 从一到两周的输入输出日志开始。如果功能有季节性或者使用量很薄,就用更长的时间窗口。 先随机采样,再看抽出来的是什么。如果你的流量有长尾,随机采样会过度代表头部。这通常正是你想要的,因为头部的回归影响用户最多,但要检查稀有且关键的意图有没有出现。 把之后可能想切分的每个字段都记下来,包括意图、功能区域、用户分群、时间戳,以及产出你抽到的那条响应的模型和提示词版本。这些元数据事后无法重建。 采样生产流量就是采样用户数据。检查你的服务条款,在数据进入评测框架之前跑完 PII 清洗流程,并记录你转换了哪些样本,以便日后复现清洗过程。 目标是带着几百条原始样本进入第二步。你会大幅裁剪。 **第二步:去重与聚类。** 生产流量是重复的。一个客服机器人可能每天看到上百次"怎么重置密码"的同一个问题,只是措辞略有不同。你要的是其中一条进集合,而不是五十条。 精确匹配去重会漏掉改写。要抓住它们,检查……
热门跟贴