实时推荐和离线推荐的差别,先说结论:用户正在逛、行为还在变的时候,用实时;用户没来的时候,靠离线把候选和画像算好。AI 在两套链路里做的是同一件事,只是对时间的要求不同。理解它们,重点不在模型,而在特征多久更新一次、结果多久能送到。下面从特征时效、链路延迟、效果评估、工程成本四个维度展开。
先说结论:一个管当下,一个管底盘
离线推荐在凌晨跑批,把每个用户的偏好、相似人群、候选商品算好存起来,用户来了直接取。它覆盖全量用户,算得深,但看不到今天早上刚发生的行为。
实时推荐在请求到来的几百毫秒内,把当前会话的点击、停留、加购拼进特征,重新排序。它反应快,但只能算一个很小的候选集,算不深。生产系统通常是离线出候选,实时做重排。
特征时效决定效果上限
离线特征按天更新,适合长期偏好:常买品类、价格带、常住城市。实时特征按秒或分钟更新,适合短期意图:刚搜了什么、在哪个页面停留久了、购物车里加了又删。
两者的价值不能互相替代。只用离线,用户刚看完婴儿车,首页还在推游戏手柄;只用实时,新用户没有行为,推荐会退化成热门榜。所以特征要分层,短期意图和长期偏好各占一席位。
冷启动阶段还可以用豆包生成一批兜底文案,再用 DeepSeek 按品类改写,把新用户的首页先填满,等行为数据攒够再交给排序模型接管,避免首屏出现空白。
链路和延迟预算
实时链路的每一段都在吃延迟:日志采集、特征计算、模型推理、结果拼装。端到端要控制在两百毫秒以内,留给模型的时间可能只有几十毫秒,所以模型不能太大,特征不能太多。
离线链路没有这个约束,可以跑复杂的模型、做大规模交叉特征。代价是结果有滞后,而且存储成本高,要为每个用户存一份候选列表,冷门用户的存储浪费明显。
效果评估的口径
离线评估看的是排序指标,比如命中率、覆盖率,用历史日志回放就能算。实时评估必须做在线实验,看点击率、转化率、停留时长,还要看延迟对体验的影响。
两者经常对不上:离线指标涨了,线上没动静。原因通常是离线评估用的是曝光日志,而线上要面对新的候选分布,模型在没见过的样本上表现会掉。所以要留一部分线上流量做长期对照,不能只看离线。
| 评估方式 | 看什么指标 | 怎么算 | 局限 |
|---|---|---|---|
| 离线评估 | 命中率、覆盖率这类排序指标 | 用历史日志回放 | 用的是曝光日志,线上候选分布一变就失准 |
| 在线实验 | 点击率、转化率、停留时长,外加延迟对体验的影响 | 分流量跑对照 | 成本高,短期波动大,需要足够的样本量 |
| 长期对照 | 留一部分流量持续走老策略 | 长期并行跑 | 牺牲一部分收益,换来离线与线上是否一致的证据 |
工程成本与运维
离线系统的运维相对简单,跑批失败可以重跑,晚了几个小时影响有限。实时系统一旦链路堵塞,用户立刻感知,需要限流、降级、兜底三套机制,任何一环缺失都可能拖垮首页。
降级方案要提前设计好:实时特征取不到时退回离线结果,模型超时时退回规则排序。这套兜底平时看不出价值,大促时就是保命的东西。
另一个常被忽略的点是特征回填。实时链路断了半小时,这段时间的行为没有进入特征,恢复后模型看到的是一段空白。要么补算,要么在特征上打标记,让模型知道这段不可信,否则会出现莫名其妙的推荐跳变。
- 长期偏好:离线按天算,覆盖全量用户
- 短期意图:实时按秒算,只重排小候选集
- 延迟:端到端两百毫秒内,模型要小
- 评估:离线看排序指标,线上必须做对照实验
- 兜底:特征缺失退离线,模型超时退规则
关于实时推荐的三个常问问题
- 小站点需要实时链路吗?:访问量不大时,小时级更新已经够用,实时链路的复杂度往往不划算。
- 实时推荐会不会让人越看越窄?:会。要保留一定比例的探索流量,否则短期意图会把长期兴趣挤掉。
- 延迟高一点影响很大吗?:影响明确,超过一秒的等待会显著拉低完成率,宁可少算几个特征。
链路设计的取舍和调研方法有相通之处,AI 调研和传统调研有什么区别讲了在线与线下的样本差异;改造范围怎么定,见单点 AI 和全流程 AI 差在哪;部署规模的取舍可以参考轻量部署和全量部署有什么区别。


