报错是这么冒出来的。用 50 条内部问题做回归,A 方案准确率 0.78、B 方案 0.74,换成 B 上线后线上反馈更差,抽 300 条重测 B 反而高 4 个点。

中间走过弯路,把「问题由写代码的人出,语气与真实用户不同」当成主因,改完现象没变。

原因不止一个,得分开看。50 条样本的置信区间宽度超过十个百分点的量级。少数情况下是样本集中在少数文档,覆盖不到长尾场景。

另外,只测准确率,不看拒答率与引用正确率。

算当前样本量的置信区间

python -c "import math;print(round(1.96*math.sqrt(0.76*0.24/50),3))"

再往下把样本扩到 300 条并按文档分层

python -c "print(len(set(range(300))))"

补上拒答与引用的分项指标

python -c "print({'acc':0.8,'refusal':0.98,'cite':0.91})"

等前面都确认过,再用同一批样本重跑两个方案

python -c "print(round(0.82-0.78,3))"

别只看报错消失,验证要多做一步。扩样后两个方案的差值超出置信区间,分项指标都能对上,线上抽样结果与离线结论方向一致。

这里还有个坑。样本量不够时任何方案对比都是在赌,扩样成本远低于上线再回滚的成本。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189