我把91网页版的推荐逻辑拆给你看:其实一点都不玄学
我把91网页版的推荐逻辑拆给你看:其实一点都不玄学

开门见山:不管界面多炫、标签多奇怪,推荐系统的骨架永远离不开“候选——排序——再加工”三步走。把这个流程拆开看清楚,很多看起来“神秘”的规则就变得很普通了。下面把我多年实战拆解的要点、策略和落地细节逐条讲清楚,方便产品、运营或工程同学快速上手或复盘。
一、总体架构:两阶段+再排序
-
候选召回(Recall / Candidate Generation)
-
目标:在海量内容中迅速筛出几百到几千个潜在项,保证高召回率。
-
常用策略:基于流行(Top-N)、基于协同过滤(item-item、user-item)、基于内容相似(文本/标签/embedding)、基于实时行为(session-based)、规则/编辑池。
-
工具:倒排索引、ANN(如FAISS)、预计算相似表。
-
精排(Ranking)
-
目标:在候选集中精确打分,给出最终排序。
-
常用模型:LR/GBDT(LightGBM)+浅层特征交叉;深度模型(DeepFM、DIN、Transformer等)用于捕捉用户短期兴趣和复杂交互。
-
特征:用户画像、内容特征、上下文(时段、设备)、交叉特征、序列特征(最近n次行为Embedding)。
-
再加工(Re-rank / Business Rules)
-
目标:在模型结果上施加策略(多样性、去重、新鲜度、商业、人工干预)。
-
常见处理:去重、时效性提升、信息流广告位插入、黑名单/白名单过滤。
二、核心信号和特征体系
- 用户特征:长期画像(年龄、地区、订阅)、行为偏好(历史点击率、收藏、停留时长)。
- 内容特征:文本主题、时长、发布者、标签、热度。
- 上下文特征:时间、设备、页面入口、会话内行为(Session)。
- 序列与短期兴趣:用RNN/Transformer或简单的滑动窗口加权来建模最近行为的强信号。
- 交叉特征与稀疏特征:利用Embedding +二次特征提升泛化能力。
三、模型选择与工程实现要点
- 召回层:偏向轻量与高覆盖,常用embedding检索或近邻检索;召回质量直接决定上游表现,别过度追求“复杂模型”。
- 精排层:在效果和延迟之间权衡。离线训练高复杂度模型在线部署时可以采用蒸馏/特征压缩方案。
- 在线服务:特征store、Embedding服务、缓存策略、批量/流式调用。P99延迟通常要控制在几十毫秒级别。
- 指标选择:线上看CTR、CVR、平均观看时长、留存;离线看AUC、Logloss、NDCG、Recall@K等。
四、常见难题与实操解法
- 冷启动:利用内容特征和全局热门做fallback;新用户拉取引导问卷或首屏强插兴趣标签;使用元学习或迁移学习加速。
- 新鲜度与多样性冲突:用模型分层控制(部分位点提升新内容),或在re-rank里给新内容加权衰减、引入结果重排策略。
- 探索/利用平衡:epsilon-greedy、UCB或上下文Bandit,用在线A/B逐步调优探索率,避免长期贪心导致信息茧房。
- 点击欺诈与刷量:行为序列异常检测(短时高频、同IP多账号)、设备指纹分析、时间分布检查。
五、评测与A/B实验操作指南
- 设计主指标与安全指标:主指标如CTR/观看时长,安全指标如加载成功率、系统延迟、付费转化等。
- 分层实验:先做离线回测与小流量灰度,再放上线逐步放量。放量过程中实时监控关键指标并设置回滚阈值。
- 日志与可观测性:每次曝光、点击、停留、离开都要打透,方便回溯与错误定位。
六、给产品/运营的实用建议(可直接落地)
- 小步快跑:做小范围的策略迭代(例如:把新鲜度权重从0.1调整到0.2),看效果后再大范围推广。
- 可解释特征优先:初期用容易理解的特征(最近点击数、时段热度)更易于沟通与调优。
- 建立快速回放环境:把关键日志做回放,能复现某次推送的召回+排序流程,便于排查和优化。
- 多维稽核:定期检验推荐分布(作者分布、内容主题)防止偏向性过强。
七、一句话拆解公式(简化版) 最终得分 ≈ α * CTR模型分 + β * 新鲜度加分 + γ * 商业分 + δ * 去重/规则修正 α/β/γ/δ 可通过线上实验和成本收益分析调整。
结语 把推荐系统想象成一台不断迭代的机器:数据输入——信号提取——候选生成——精排打分——规则修正——反馈回流。每一步都可以拆解、测试和优化,所谓“玄学”多半是因为没有把流程拆清楚或监控打透。把上面这些模块和思路照着做一遍,你就能把“看起来复杂”的推荐逻辑变成可控、可验证的产品能力。