Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

📗 Part 2: 快速候选召回

推荐流水线的第一道闸门——在毫秒之间,从亿级物品库筛出千级候选。

📚 5 节 · ⏱️ Estimated 2 weeks · 🎯 Target: 掌握从统计共现到向量检索的召回算法家族

召回是「召回—排序—重排」三阶段漏斗的起点。它要在毫秒级延迟内,从亿级全量物品中快速筛出千级候选——奉行「宁可错杀,不可放过」,目标是 覆盖 而非精准。一个召回器即使效果平庸,只要漏掉了真正相关的物品,后序的排序与重排也无能为力。

本部分沿技术演进展开五个章节:从最经典的 协同过滤向量召回(I2I)双塔模型(U2I) ,再到 序列召回流式索引 ,共同构成工业界召回层的方法图谱。各章要点见下表。


本章涵盖

章节TopicThe Big Idea
2.1协同过滤基于「用户—物品」共现统计:从 ItemCF 物品相似度,经 Swing 工业优化、UserCF 用户视角,到矩阵分解开启向量化
2.2向量召回 (I2I)把 Word2Vec 序列建模迁移到推荐:从 Item2Vec 直接迁移,到 EGES 融合属性,再到 Airbnb 融入业务目标
2.3双塔模型 (U2I)用户与物品分别编码为向量,以 FM、DSSM、YouTubeDNN 为代表,实现高效向量检索
2.4序列召回关注时序信息:MIND 用多向量表示多元兴趣,SDM 分离长短期偏好并以门控动态融合
2.5流式索引召回跳出模型内部压缩:Trinity 用聚类统计保留全量兴趣,Streaming VQ 让索引实时适应分布

What You'll Be Able to Do After This Part

  • 🟢 区分 基于邻域的协同过滤(ItemCF / UserCF)与基于模型的矩阵分解,说清各自面对稀疏性的优劣
  • 🟢 解释 Swing 如何利用二部图结构过滤噪声,以及 EGES 如何用注意力解决冷启动
  • 🟡 推导 FM 二阶交互项的 化简,并说明它如何被重新组织为双塔内积形式
  • 🟡 对比 双塔模型与序列召回(MIND / SDM)在「用户表示」上的根本差异:单一向量 vs 多向量 / 长短期融合
  • 🔴 分析 Trinity 与 Streaming VQ 如何用聚类统计与流式索引解决「兴趣遗忘」与「索引时效」问题
  • 🔴 完成 5 章共 25+ 道分层练习题,巩固从共现到向量检索的全链路

核心概念

Concept章节Relevance
物品/用户相似度、共现矩阵2.1协同过滤的基石,工业召回要道
Swing score、Surprise2.1面向工业鲁棒性与互补商品的相似度优化
隐向量、低秩假设2.1从统计走向表示学习的转折点
Skip-Gram、序列建模2.2把「句子=行为序列」的思想用于 I2I 召回
商品特定注意力 (EGES)2.2用属性解决冷启动的关键机制
双塔、内积检索、ANN2.3高效 U2I 召回的工程骨架
多兴趣胶囊 (MIND)、门控融合 (SDM)2.4捕捉多元兴趣与时效性的序列召回
聚类直方图、VQ 索引、EMA2.5流式索引召回的统计与实时更新基础

前置知识

  • 已读完 Part 1 (尤其是 1.1 的三阶段漏斗与 1.2 的技术地图)
  • 具备基础的线性代数(向量内积、矩阵)、概率(softmax、余弦相似度)与神经网络常识
  • 了解 Python 与 Embedding 的基本概念

召回层方法偏「轻量、覆盖导向」,复杂度大多可控;但向量化方法(矩阵分解、双塔、序列)需要你熟悉 Embedding 与梯度下降。


Tips for This Part

  1. 先理解「动机」再抠公式。 每个方法都为了解决前一个方法的某个局限——例如 ItemCF 被热门物品主导,于是有了 Swing;共现稀疏,于是有了矩阵分解。
  2. 抓住「用户/物品如何被表示」这条主线。 从 CF 的 ID 共现,到 MF 的隐向量,到双塔的独立编码,再到序列召回的多向量,表示越来越精细。
  3. 注意召回的检索效率。 凡是能在线上离线预计算物品向量(双塔、I2I)的方法,往往最容易规模化。
  4. 配合可视化练习。 每章的交互式 HTML 与 SVG 都值得亲手点一遍,把抽象公式落到「候选池如何收缩」的直觉上。

Let's dive in! 🚀