为什么 AI 功能的 A/B 测试常常不可信
传统 A/B 测试的假设(同一批用户随机分流、指标稳定、互不干扰)在 AI 功能上经常不成立:
- 同一用户重复提问,第二次的回答受第一次影响(上下文、缓存);
- 模型是黑盒且会变:服务端版本更新会让两组同时变化,差异不再来自你的改动;
- 效果指标滞后:满意度、留存要几天甚至几周才显现,而模型行为可能早就变了;
- 样本量小、方差大:生成类任务的评分天然波动大,需要更多样本才能看出真实差异。
五件必须先定的事
- 实验单位:按用户分流,而不是按请求(同一用户必须始终在同一组,否则体验割裂且污染数据);
- 指标口径:主指标只选一个(例如"任务完成率"),其余作为护栏指标(延迟、成本、负反馈率);
- 变更冻结:实验期内冻结模型与提示词版本,任何一方变了就作废重跑;
- 样本量预估:按指标的方差反推需要多少样本,避免"跑两天看趋势";
- 判定规则:事先写清"达到什么条件算赢",避免事后挑指标。
更适合 AI 的三种替代做法
离线对照(最常用)
固定一批真实样本,两个版本各跑一遍,用同一把尺子(评测集 + 人工抽检)比较。优点:快、可控、可重复。
影子模式
新版本在暗处跑,不影响用户,只记录结果;与线上版本对比,看差异与错误类型。适合高风险改动。
渐进放量 + 护栏
不做严格对照,而是 5% → 20% → 50% 逐步放量,每一步看护栏指标(延迟、成本、失败率、负反馈率)是否越界。适合"只要不变差就上线"的改动。
常见坑
- 两组提示词版本不同却以为是同一实验;
- 用平均分掩盖分布变化(平均不变但"极差回答"变多);
- 拿同一批用户反复测,用户已经学会怎么用;
- 结论写"效果更好"却没写样本量与置信区间(应如实写清"在 N 个样本上观察到 X")。
一个最小可信流程
- 冻结版本,固定用户分组;
- 选一个主指标 + 三个护栏指标;
- 离线对照先跑一轮(几百条样本足够看出大差异);
- 线上渐进放量,每步看护栏;
- 结论文档记录:改动、样本量、指标变化、没变好的地方。