跳到主要内容

模型停滞不前,用户却在持续偏移

· 阅读需 11 分钟
Tian Pan
Software Engineer

发布六周后,你的质量仪表盘开始下滑。点踩率攀升,任务完成率下降,值班频道里塞满了糟糕回复的截图。团队做了该做的一切:对比 Prompt(未变),检查模型版本(已锁定),审计检索索引(是最新的),并对部署历史进行二分查找(没有任何发布)。大家一致认为模型提供商悄悄降低了模型性能。当然,提供商坚持说没有任何变动。

大家都找错了地方。系统没有任何改变,改变的是用户。

发布周的指标是基于发布周的用户假设的。但人们会在几周内适应一款 AI 产品,而这种适应方式会系统性地破坏你在 Prompt、评估集(Evals)和发布基准测试中预设的假设。你的模型是冻结的,但你的用户不是。两者之间的鸿沟是一种大多数团队根本没有监测到的“漂移”——它产生了一种 AI 工程中最令人困惑的故障模式:在没有部署的情况下指标发生衰减。

用户漂移的三种方式

用户的适应并不是随机噪声。它遵循可预测的模式,每一种都会导致系统不同部分的性能下降。

权力用户会进行压缩。 早期,用户会写下你在演示数据中见到的那种细致、上下文丰富的请求:“我计划 3 月带两个孩子去东京旅行,我们喜欢美食和博物馆,你能建议一个为期 5 天的行程吗?”三周后,同一个用户打字变成:“东京 5 天 带娃 重做 3 月”。他们已经意识到产品通常能理解,所以不再支付“打字税”。

他们的私人黑话——缩写、简略的后续追问、模型不可见的对话引用——变成了主要的输入分布。这些都不在你的评估集中,因为当你构建评估集时,这些都还没出现。你的 Prompt 是针对完整句子进行调优的;而现在的生产环境全是碎片。

怀疑者会进行探测。 你的一部分用户会将你的护栏(Guardrails)视为谜题。这并非假设:当 ChatGPT 发布时,越狱技术在几天内就在 Reddit 和 Discord 上流传开来,研究人员随后证明,系统的 Prompt 集合几乎可以绕过所有主流模型的安全过滤器。

这种效应并不一定需要对抗性研究人员。普通用户会学习哪些措辞会触发你的拒绝逻辑并绕过它们——有时是为了做一些你的分类器过于敏感而误判的无害事情,有时则不然。无论如何,第三个月撞击你护栏模型的流量,在对抗性程度上远高于第零个月校准时的流量。

其他人则会松懈。 “新鲜感效应”是产品分析中记录最详尽的现象之一:当功能上线时,参与度会激增,随后随着新鲜感消退而下降。微软观察到 Copilot 功能的交互量在九周内下降了约 64%;对 AI 工作流的长周期研究也显示了同样的 U 型曲线,除非工具变得真正不可或缺,否则使用量在第一个月后就会下降。

在新鲜感悬崖之后留存下来的是不同的流量,而不仅仅是更少的流量。好奇的探索者流失了;留下来的是有真实、重复性工作的用户。你的输入组合从“给我展示点酷的东西”转变为“再做一次我周二的任务”,而模型在第二类人群中的表现,才是你现在的指标所衡量的。

如果你只追踪聚合后的质量得分,所有这些都是不可见的。分数在变动,但你掌握的任何信息都无法解释原因。

为什么这会被误诊为模型漂移

标准的漂移分类——数据漂移、概念漂移、模型漂移——是为模型本身会发生变化的系统而构建的。在锁定模型版本的 LLM 应用中,团队套用这些类别,结果抓错了重点。

这种困惑是可以理解的,因为症状完全相同:在固定的评估准则下,输出变差了。但对于修复手段来说,其机制至关重要。如果是模型性能下降,你会向供应商投诉或更换模型。如果是检索索引失效,你会修复流水线。如果是用户发生了漂移,这两者都是徒劳的——模型对问题的回答依然和以前一样好,只是它面对的是一个从未被评估过的提问分布。

还有第二层更棘手的问题:用户漂移与系统漂移相互作用。一个得到过一次糟糕答案的用户,会开始写更长、更具防御性的 Prompt,并带有明确指令(“不要总结,列出每一项”)。这些防御性的 Prompt 本身就是分布外(Out-of-distribution)的,可能会触发新的失败模式,从而产生更多防御性 Prompt。你可以观察到一个群组的 Prompt 风格在某个月内因为一个糟糕的周而变得糟糕。如果你只看输出质量,这会被解读为渐进的模型衰减。如果你看输入,这显然是用户信任与 Prompt 风格之间的反馈循环。

能够切中要害的诊断性问题是:输入分布是否发生了偏移? 这个问题有一个具体的、可衡量的答案,但大多数团队从未问过这个问题,因为他们所有的监控都盯着输出。

对输入进行埋点,而不仅仅是输出

输出监控——评估得分、反馈率、拒绝计数——告诉你的是发生了变化。而输入监控则告诉你谁发生了变化,这是区分用户漂移(User Drift)与模型漂移(Model Drift)的唯一方法。

好消息是,相关的机制已经存在;只不过它们通常是针对文档而非用户。对稳定基准窗口的生产环境 Prompt 进行 Embedding 采样,再对当前窗口进行采样,并比较两者的分布——对聚类后的 Embedding 进行 Jensen-Shannon 散度或 Wasserstein 距离计算都可行。相比词频方法,大语言模型 Embedding 能捕捉到后者遗漏的语义偏移。当距离指标跳变时,你就有证据表明流量在发生变化,而无需浪费一周时间去审计那些并未改变的 Prompt。

除了原始的语义漂移,还有几个廉价的代理指标可以专门捕捉“适应性”(Adaptation),而不仅仅是新话题:

  • 针对留存用户群组(Cohort)的 Prompt 长度和完整度。 压缩现象表现为最老的一批用户群组中 Prompt 长度中位数稳步下降,而新用户的 Prompt 则保持较长。如果你只追踪全局中位数,群组混合会掩盖这一信号。
  • 会话相关引用。 统计那些在没有先前上下文的情况下无法理解的 Prompt(例如“像之前一样,但针对第三季度”、“用另一种方式重做”)。代词指代(Anaphora)的增加意味着用户已经建立了对产品记忆的心理模型——而你的上下文组装(Context Assembly)可能实际上并没有遵循这一模型。
  • 防护栏触发构成。 不仅要追踪拒绝率,还要追踪到达安全层的表述多样性。多样性收窄且绕过率上升,意味着用户正在摸清边界。
  • 按群组划分的质量指标。 你拥有的每个质量指标都应该可以按用户时长(Tenure)进行拆分。如果一个分数在第一周用户中持平,但在第八周用户中下降,这从定义上来说就是用户漂移——模型做的是同样的事情,但老用户提出的要求更难了。

这都不需要引入新的供应商。它需要的是将输入分布视为一等公民(First-class)的生产信号,为其配备基准、仪表板和告警——就像你对待延迟(Latency)那样。

你的评估集是有保质期的

更深层的含义令人不安:评估集(Eval Set)只是用户在产品生命周期中某一时刻如何与之交流的快照。它的到期日期取决于用户的习性养成(Habituation),而非日历。

团队直觉上理解,当发布新功能或进入新市场时,评估集会过时。他们忽略的是,即使产品没有变化,评估集也会过时,因为用户在不断学习。你刚发布时策划的那些严谨、格式良好的查询,在你的高级用户学会“压缩”的那一刻起,就不再具有代表性了。一个 95% 通过率(Green)的评估套件可能与日益恶化的生产体验并存,原因很简单:它测试的是一种已经没人再使用的方言。

解决方法是建立刷新循环,行业已对其形态达成共识:持续采样生产环境的 Trace,自动筛选有趣的案例(分歧较大、负面反馈、Embedding 空间中的新聚类),对其进行标注,并将其并入评估集,同时淘汰不再匹配任何实时流量聚类的案例。相比仅基于合成数据或发布初期数据进行评估的团队,从生产环境中获取测试案例的团队报告的实际表现要好得多——因为生产环境衍生的案例是唯一能保证处于分布内(In-distribution)的案例。

两项原则能让这个循环值得信赖。首先,像管理代码一样对评估集进行版本控制,这样得分的变化就可以归因于系统更改或评估集更改,而绝不会在两者同时发生时悄无声息。其次,在刷新时保留旧的评估集并同时运行一个周期——固化的发布期评估集与刷新后的评估集之间的“差距”,本身就是衡量用户漂移程度的纯净指标。

刷新频率的一个有用启发式方法:评估集的更新率应大致等同于用户群的更替率。对于每周都有新用户群的高增长产品,每月刷新是底线。对于拥有固定 500 个席位的稳定企业部署,每季度一次可能就够了——但要留意压缩指标,因为稳定的用户群习性养成速度更快,而非更慢。

为第二个月设计,而非第一周

一旦你接受用户会发生漂移,其中一部分问题就不再是监控问题,而变成了设计机会。

例如,压缩并不是一种攻击——它是一种赞美。用户之所以压缩输入,是因为他们信任产品能够填补空白。你可以主动迎合他们:持久化他们的稳定偏好,让 “tokyo 5d kids” 能够根据已知上下文准确解析;当片段确实存在歧义时,让模型提出一个有针对性的澄清问题,而不是胡乱猜测。那些将简练的 Prompt 视为格式错误输入的团队,最终是在与他们最优秀的用户作对;而那些将其视为对“记忆”功能需求的团队,最终会获得粘性更高的产品。

同样,新鲜感过后的流量转变是关于产品市场契合度(PMF)的信息。在 64% 的参与度断崖式下跌中存活下来的查询,才是你产品真正的“职位描述”。针对存活下来的工作负载重新调整 Prompt 并重新加权评估——而不是针对发布周的幻想工作负载——是目前杠杆率最高的 Prompt 工程手段,而且根本不需要任何新功能。

通用原则:发布是分布偏移的开始,而不是开发的终点。 将第六周的第二次校准作为预定的里程碑,就像你计划发布后的复盘一样。为此预留预算。那些对指标衰减感到意外的团队,往往在其路线图中含蓄地假设了第三个月的用户行为会像第一天的一样。

在关于漂移的讨论中,模型吸引了所有注意力,因为它们是新奇的组件。但模型是你技术栈中最稳定的东西——它是固定的、版本化的且可复现的。文本框另一端的人类则完全不是。请据此对他们进行埋点监控。

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