fun-rec
Datawhale 出品的推荐系统全链路教程,从协同过滤到生成式推荐,覆盖工业级实战项目
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Datawhale 出品的推荐系统全链路教程,从协同过滤到生成式推荐,覆盖工业级实战项目
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在深夜刷着视频App,推荐列表永远恰好戳中你的痒点——你想看的下一条视频正在第三帧等着你。这背后并非魔法,而是一套由召回(Retrieval)→ 精排(Ranking)→ 重排(Reranking) 组成的精密工业流水线。学术界习惯将每篇论文单独拎出来讨论,但工业界真正关心的,是这条流水线的每一个环节如何高效协同、如何在天量候选中毫秒级响应。
fun-rec(即 Datawhale 团队出品的"小麦书")正是为填补这道学术与工业之间的鸿沟而生。它不堆砌论文清单,而是以工业推荐系统的全链路视角组织内容——从 2020 年协同过滤时代讲起,一路延伸至 2025-2026 年大模型驱动的新一代生成式推荐,让读者既能理解单点创新,又能看清整条流水线的全局权衡。

图1:fun-rec 项目封面,展示了推荐系统从传统级联架构到生成式范式的演进路径
fun-rec 由国内知名开源学习社区 Datawhale 发起维护。Datawhale 以"学习,是一件很酷的事情"为口号,产出了包括"吃瓜教程"(西瓜书公式推导)、"蘑菇书"(强化学习)等一系列高质量开源学习材料,GitHub 累计 Star 数超过 40 万,在 AI 学习圈有极高的口碑。
推荐系统领域长期缺乏体系化的中文学习资源。大多数教材要么过于偏重理论(围绕单篇论文展开,缺乏全局视角),要么过于偏重工程(调 API 调参,缺乏原理深度)。对于希望进入推荐系统领域的初学者和有经验但缺乏全局视野的工程师来说,这道信息鸿沟真实存在且相当棘手。fun-rec 的出现正是为了填补这一空白——它从工业流水线的视角出发,将每一项技术放在整条链路中考察,回答"为什么是这个环节"、"为什么是这种选择"、"带来了哪些工程代价"。
从 GitHub 数据来看,该项目获得了 7206 Stars 和 1020 Forks,被 8 个主题标签覆盖(algorithm-engineering、recommender-system、tensorflow 等),issue 区仅有 8 条开放问题,社区活跃度与维护质量均属上乘。项目主分支为 master,仍在持续更新,最后一次提交为 2026 年 6 月。
fun-rec 的内容分为两大板块。上篇(级联架构) 完整覆盖了工业推荐系统的三大核心阶段:
召回层是整条链路对效率要求最苛刻的环节——需要在毫秒级从亿级物品库中筛选出千级候选。书中从协同过滤(ItemCF、Swing、矩阵分解)出发,逐步引入 I2I 向量召回(Item2Vec、EGES、Airbnb 优化),再扩展到 DSSM 和 YouTubeDNN 双塔模型实现高效向量检索,以及 MIND、SDM 等序列召回方法,最后介绍 Trinity、Streaming 等流式索引召回技术。这条学习路径的逻辑是:从用户-物品的共现关系出发,逐步引入时序信息和语义表示能力。
精排层需要对千级候选进行精准打分,是模型泛化能力的主战场。书中从 Wide&Deep 的"记忆+泛化"框架出发,系统讲解 FM、DeepFM、xDeepFM 等特征交叉方法如何摆脱手工特征工程;DIN 和 DIEN 则把用户历史行为引入精排——前者用注意力机制根据候选物品动态激活相关行为,后者进一步建模兴趣随时间的演化过程。在此之上,MMoE、ESMM 等多目标优化和PLE等多场景建模方法,则展示了真实业务中多目标共存、多场景差异化的复杂需求如何被满足。
重排层处理精排输出的列表——按分数排序的结果往往高度同质化,需要在保持相关性的前提下改善整张列表的体验。MMR(最大边际相关性)、DPP(行列式点过程)等经典方法在此登场,PRM(Permutation Ranker)则展示了如何用 Transformer 建模物品间的相互影响,实现端到端个性化列表生成。
下篇(生成式范式) 是该书最具前沿价值的内容,聚焦大模型时代推荐系统正在经历的深刻变革。
第 5 章奠定了生成式推荐的数学基础,核心是物品 Token 化技术——将推荐系统中的物品从"不透明的 ID"转变为"可被模型理解的 Token 序列"。传统方法中稀疏 ID 词表爆炸、文本 ID 效率低下,以 VQ-VAE 和 RQ-VAE 为代表的语义 ID 方案在表示效率与语义丰富度之间找到了平衡,这一技术贯穿后续所有章节。
第 6 章深入探讨 Scaling Law 在推荐系统中的应用。传统推荐模型规模化时面临两大瓶颈:计算成本与候选数量线性绑定、GPU 利用率极低(DLRM 的 MFU 仅 4-5%)。工业界探索出两条路径:以 Meta HSTU、字节 GenRank 为代表的用户粒度建模方案,通过 KV-Caching 彻底解除线性绑定;以字节 RankMixer、OneTrans 为代表的硬件感知统一架构,用完整 Transformer 替代碎片化手工模块。
第 7-9 章则展示了生成式推荐在三个子场景的落地:快手 OneRec 直接从用户历史生成推荐序列(语义 ID + DPO 偏好对齐);OneSug 和 OneSearch 将搜索重新定义为生成任务;扩散模型(DiffuASR、AsymDiffRec)则在推荐列表多样性控制中找到了独特价值。
fun-rec 不只是一本"书",配套的 web_project/ 目录提供了完整的电影推荐系统实战项目,基于 MovieLens-1M 数据集(约 100 万条评分数据、6000 用户、4000 电影)。
离线流水线涵盖:特征工程(用户行为序列构建、类别特征编码)→ YouTubeDNN 召回模型训练 → DeepFM 排序模型训练(含困难负样本挖掘)→ 模型部署上线。在线流水线则实现:冷启动检测 → 多路召回(YouTubeDNN + I2I + 偏好类目,Snake Merge 融合)→ DeepFM 精排 → 类型/年代连续打散重排。存储层采用 PostgreSQL(业务数据)+ Redis(特征缓存)+ Elasticsearch(搜索索引),前端基于 Vue.js 提供完整的交互界面。
值得注意的是,该项目使用 docker-compose 一键启动基础服务(PostgreSQL、Redis、Elasticsearch),但离线训练步骤仍需手动执行 Make 命令,对新手的友好度略有欠缺,整体部署难度评定为中等。
fun-rec 基于 Python 3.8+ 开发,核心依赖包括:
文档质量极高——全书有完整的 Sphinx 文档系统,在线阅读地址 https://datawhalechina.github.io/fun-rec 提供持续更新的 HTML 版本。第 10 章的电影推荐项目代码结构清晰,Makefile 提供了从数据导入到模型训练的完整命令覆盖。但需要注意的是,项目不接受 Pull Request(持续活跃开发中),贡献方式限于 Issue 反馈。
许可协议为 CC BY-NC-SA 4.0(知识共享署名-非商业性使用-相同方式共享),个人学习可免费使用,但商业场景需额外授权。
该书的最佳读者画像是:具备机器学习基础、希望系统掌握推荐算法核心原理与工程实践的开发者。书中对数学和编程背景的要求并不苛刻——能理解"梯度下降在做什么"、写过简单 Python 代码就够了。遇到不熟悉的概念时,跳过细节先抓主线往往比卡住不动更有效。
有推荐系统背景的工程师可以根据兴趣自由跳转章节,第 2-4 章(传统架构)和第 5-9 章(生成式范式)各自相对独立。书中引用了大量 Meta、阿里、字节、快手、小红书等一线公司的工业论文,对于准备推荐系统方向面试也有极高价值——网络上已有大量读者反馈,该书的知识体系直接命中了面试中的高频问题。
fun-rec 的价值不仅在于知识点本身,更在于它示范了一种系统化学习的姿态——不是将论文清单简单罗列,而是以工业流水线为骨架,将每一项技术放在全局中考察。这种视角对于缩小学术研究与工业实践之间的认知鸿沟,具有重要的示范意义。
随着大模型能力持续渗透推荐系统,生成式推荐正在从"前沿探索"走向"工业落地"。fun-rec 的第 5-9 章内容恰好处于这一趋势的前沿,预计在未来 1-2 年内将有大量工业实践案例涌现,届时小麦书的价值将进一步凸显。对于希望进入或深耕推荐系统领域的开发者来说,现在正是上车的好时机。