召回是「召回—排序—重排」三阶段漏斗的起点。它要在毫秒级延迟内,从亿级全量物品中快速筛出千级候选——奉行「宁可错杀,不可放过」,目标是 覆盖 而非精准。一个召回器即使效果平庸,只要漏掉了真正相关的物品,后序的排序与重排也无能为力。
本部分沿技术演进展开五个章节:从最经典的 协同过滤 到 向量召回(I2I) 、 双塔模型(U2I) ,再到 序列召回 与 流式索引 ,共同构成工业界召回层的方法图谱。各章要点见下表。
本章涵盖
| 章节 | Topic | The 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、Surprise | 2.1 | 面向工业鲁棒性与互补商品的相似度优化 |
| 隐向量、低秩假设 | 2.1 | 从统计走向表示学习的转折点 |
| Skip-Gram、序列建模 | 2.2 | 把「句子=行为序列」的思想用于 I2I 召回 |
| 商品特定注意力 (EGES) | 2.2 | 用属性解决冷启动的关键机制 |
| 双塔、内积检索、ANN | 2.3 | 高效 U2I 召回的工程骨架 |
| 多兴趣胶囊 (MIND)、门控融合 (SDM) | 2.4 | 捕捉多元兴趣与时效性的序列召回 |
| 聚类直方图、VQ 索引、EMA | 2.5 | 流式索引召回的统计与实时更新基础 |
前置知识
- 已读完 Part 1 (尤其是 1.1 的三阶段漏斗与 1.2 的技术地图)
- 具备基础的线性代数(向量内积、矩阵)、概率(softmax、余弦相似度)与神经网络常识
- 了解 Python 与 Embedding 的基本概念
召回层方法偏「轻量、覆盖导向」,复杂度大多可控;但向量化方法(矩阵分解、双塔、序列)需要你熟悉 Embedding 与梯度下降。
Tips for This Part
- 先理解「动机」再抠公式。 每个方法都为了解决前一个方法的某个局限——例如 ItemCF 被热门物品主导,于是有了 Swing;共现稀疏,于是有了矩阵分解。
- 抓住「用户/物品如何被表示」这条主线。 从 CF 的 ID 共现,到 MF 的隐向量,到双塔的独立编码,再到序列召回的多向量,表示越来越精细。
- 注意召回的检索效率。 凡是能在线上离线预计算物品向量(双塔、I2I)的方法,往往最容易规模化。
- 配合可视化练习。 每章的交互式 HTML 与 SVG 都值得亲手点一遍,把抽象公式落到「候选池如何收缩」的直觉上。
Let's dive in! 🚀