GEO优化
24小时跑批时间雨:我把采样戳、分母、批次ID塞进一个事务,返工率降到8%
98 1 39
先说结论:GEO快速试错没问题,但快的前提是口径不返工。之前我们按小时切批次,采样戳和分母分开写,结果同一批数据里,采样时标是10:03,分母却是10:07落库的,中间那4分钟里AI答案已经换了。返工率一度飙到三成。
场景:跑一个问句池的小时级实验,每个批次要记录采样时间、分母(有效回答数)、批次ID。原来的流程是:先抓答案,打采样戳,再异步写分母和批次ID。问题就出在异步——一月份有一次,批次ID写重了,两个小时的数混在一起,我们拿着混过的数开了两次复盘会。
判断依据:我翻了连续七天的日志,发现采样戳和分母落库的时间差超过2分钟时,该批次的数据可信度下降17%。后来我们做了个对照:把采样戳、分母、批次ID锁进同一个数据库事务,要么全写要么全不写。返工率从30%掉到8%。
踩坑细节:1)分母去重一定要在事务里做,别在聚合查询时再distinct,那样你锁不住“当时”的分母;2)采样戳必须用服务器时间,别用客户端时间,客户端时区一错,整个批次就废了;3)批次ID用“日期+小时+问句池版本号”拼接,别用自增ID,自增ID在回滚时会跳号,事后对不上。
快速迭代的姿势:现在每天早上九点跑第一个批次,每两小时一个,一天五个批次。每个批次的采样戳和分母在同一个事务里落库,跑完立刻算该批次的置信区间。一旦发现分母波动超过15%,立刻停跑查原因,别硬着头皮往下跑。上周就因为没停,连跑了三个污染批次,白瞎一天。
问题:你们跑小时级批次时,是等一个批次跑完再开下一个,还是并行跑?并行的话,分母怎么隔离?我试过用批次ID做分区键,但发现跨分区去重还是会有漏。
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
