设计推荐系统:召回、排序与重排
FreeGuideOnline
最新
2026-06-19
推荐系统核心流程:从海量内容到精准推荐
推荐系统负责在用户与海量物品之间建立连接。一个工业级推荐系统通常将推荐过程拆分为 召回 (Recall)、排序 (Ranking) 和 重排 (Re-rank) 三个递进阶段。这种漏斗式架构可以在保证推荐效果的同时,严格控制计算耗时,使系统具备实时响应能力。
1. 召回:快速缩小候选集
召回阶段的目标是从百万乃至亿级别的全量物品库中,快速筛选出数百到数千个用户可能感兴趣的候选物品。这一阶段要求极高的计算效率,常用策略包括:
1.1 多路召回策略
单一召回方式容易存在盲区,工业界普遍采用多路召回并行的方式,后续再进行合并去重。
- 基于用户画像的召回:根据用户的基础属性(年龄、地区等)或长期兴趣标签,匹配对应物品池。
- 基于协同过滤的召回:
- Item-based CF:计算物品间的相似度,推荐与用户历史行为物品相似的物品。
- User-based CF:找到与目标用户相似的用户群,推荐他们喜欢的物品。
- 基于向量的召回:将用户和物品映射到同一向量空间,通过近似最近邻搜索快速找到与用户向量最接近的物品向量。双塔模型是该类方法的典型代表。
- 基于热度的召回:作为冷启动或兜底策略,补充全局热门内容。
- 基于图的召回:利用随机游走、图神经网络等方法,挖掘用户-物品交互图中的高阶关联。
1.2 向量化召回的实现要点
- 特征工程:用户侧特征(历史行为序列、实时上下文等)和物品侧特征(类别、发布时间、文本/图像表示)需分别输入双塔。
- 相似度计算:通常使用余弦相似度或内积。离线时物品向量提前建好索引。
- 近似最近邻(ANN)检索引擎:引入 Faiss、ScaNN、HNSW 等工具,实现毫秒级向量检索。
1.3 召回阶段的评估
召回阶段侧重评估 覆盖率 与 召回率。需要监控每条召回通道的占比、命中率以及总的召回覆盖率,避免优质内容因通道失效而无法进入后续环节。
2. 排序:精细化预估用户偏好
排序阶段接收到召回的数千个候选物品,核心任务是利用复杂的模型和丰富的特征,精确预估用户对每个物品的点击率、转化率、停留时长等目标,并据此进行粗排到精排的筛选。
2.1 粗排:轻量模型初步筛选
精排模型往往结构复杂、耗时长,难以对全部召回结果打分。粗排环节承上启下,使用相对轻量的模型(如双塔、简化版深度神经网络)将候选集从数千个进一步压缩到数百个,同时尽可能保持与精排一致的质量排序。
2.2 精排:深度模型的精准预估
精排是推荐系统的核心大脑,运用大量特征进行深度交叉和序列建模。
- 特征体系:
- 用户侧:基础属性、长期统计特征、短期行为序列、实时上下文(时间、网络状态)。
- 物品侧:静态属性、历史表现统计、多模态嵌入表示。
- 交叉特征:用户-物品共现统计、用户类别偏好程度。
- 经典模型演进:
- Wide & Deep / DeepFM:联合记忆(特征交叉)与泛化能力。
- DIN / DIEN:引入注意力机制处理用户行为序列,捕获动态兴趣。
- 多任务学习(ESMM / PLE):同时预估点击率与转化率等关联目标,缓解样本选择偏差。
- 训练目标:点级损失(二分类交叉熵)配合辅助目标(如信息熵、梯度冲突缓解),并引入位置偏差等消偏策略。
2.3 排序模型的评估与校准
- 离线指标:AUC GAUC LogLoss。需按时间、用户分层细拆,防止整体虚高。
- 偏差问题:位置偏差(展示位置影响点击)、选择偏差等需在模型训练或评估时进行纠偏,如采用反事实学习框架。
- 校准:确保预估点击率与实际点击率均值接近,为后续混排和竞价提供可靠依据。
3. 重排:提升列表整体体验
经过精排得到排序列表后,如果仅按分数从高到低展示,往往会出现视觉同质化、相关性断层等问题。重排阶段在精排结果的基础上进行二次调整,优化序列的整体效用与多样性。
3.1 多样性优先
- MMR(最大边际相关性):在相关性与多样性之间寻找平衡,迭代选取与已选结果最不相似且分数还高的物品。
- 类目打散:设定滑动窗口内同一作者、同一类目的最大出现次数,强制分散。
- DPP(行列式点过程):将整个推荐列表作为集合进行概率建模,天然兼顾质量与集合的多样性。
3.2 业务规则与上下文适配
- 已读已购过滤:全局去重,同一会话不重复推荐。
- 疲劳度控制:对同一物品或同一主题设置曝光上限。
- 位置强控:如首位必须为广告,第二位固定为强插运营位,再对剩余位置进行重排。
- 上下文感知:用户当前网络状态(Wi-Fi/移动数据)影响视频自动播放策略;上下滑动方向影响视觉焦点。
3.3 体验驱动的序列生成
- 序列生成算法:将重排建模为序列决策问题,利用强化学习或生成模型产出整体点击率最高的序列。
- 插入式调整:在精排序列中按规则插入强插内容,并局部微调周边位置以保证流畅度。
- 滑动窗口平滑:确保用户连续下滑时,信息流的感官节奏与新鲜感不会突变。
4. 系统架构与工程实践
将召回、排序、重排串联为一个可用的推荐系统,需兼顾在线与离线链路。
- 在线服务层:使用高性能服务器,通过并发方式请求多条召回通路,聚合后送入粗排、精排、重排模型。每个环节需设置超时和降级逻辑,当精排超时时自动退回粗排结果。
- 近线/离线数据层:实时行为日志经 Kafka 等消息队列,进入 Flink 流处理生成实时特征;离线 Spark 任务负责模型全量训练和物品向量更新。
- 模型工程:模型可通过 TensorFlow Serving 或 TorchServe 部署,支持模型热更新和 A/B 实验框架。
- 特征平台:提供统一的特征注册、回流、在线获取服务,确保训练和推理时的特征一致性。
5. 推荐效果评估体系
离线指标只能作为参考,真实的迭代效果必须通过在线实验验证。
- A/B 实验:将用户随机分桶,对比实验组与对照组在核心业务指标(点击率、人均时长、留存率、营收等)上的差异。
- Interleaving 评估:用于快速淘汰明显劣势的排序模型,将两个模型的推荐结果交叉混排,根据用户偏好归因。
- 长期价值指标:关注多样性、可靠性带来的用户生命周期价值,避免单一追逐短期点击。
通过环环相扣的召回、排序与重排设计,再辅以稳定的工程架构和严谨的评估闭环,方能构建一个高效且持续优化的推荐系统。