recommenders
Recommenders 是一个专注于推荐系统最佳实践的开源项目,旨在帮助研究人员和开发者高效地构建、实验并部署从经典算法到前沿深度学习的各类推荐模型。它主要解决了推荐系统开发过程中流程繁琐、标准不一以及从原型到生产环境落地困难的痛点,提供了一套经过验证的完整解决方案。
该项目非常适合从事数据挖掘、机器学习的研究人员,以及需要将推荐功能集成到产品中的软件开发工程师。Recommenders 的独特亮点在于其结构化的学习路径,通过一系列详细的 Jupyter Notebook 示例,覆盖了数据准备、模型构建(如 ALS、xDeepFM 等)、离线评估、超参数调优以及在 Azure 云环境中的生产化部署这五大核心任务。此外,项目还内置了多种实用工具函数,简化了数据加载、格式转换及训练测试集划分等常见操作。作为 Linux Foundation AI & Data 旗下的项目,Recommenders 不仅提供了可复用的代码实现,更凝聚了社区在推荐领域的宝贵经验,是探索和优化推荐算法的理想起点。
使用场景
某中型电商平台的算法团队正急需在两周内上线一套个性化商品推荐系统,以应对即将到来的促销旺季。
没有 recommenders 时
- 重复造轮子耗时久:工程师需从零编写数据清洗、划分训练/测试集的基础代码,且不同算法(如 ALS 与深度学习模型)的数据格式不统一,导致大量时间浪费在适配上。
- 算法复现门槛高:想要尝试业界领先的 xDeepFM 等模型,需自行研读论文并实现复杂网络结构,极易因细节错误导致效果不佳或无法收敛。
- 评估标准不统一:缺乏标准化的离线评估指标库,团队成员对准确率、召回率等计算方式理解不一,难以客观对比模型优劣。
- 调参优化无头绪:超参数调整完全依赖人工经验试错,缺乏系统的自动化调优流程,模型性能迟迟无法达到上线标准。
使用 recommenders 后
- 数据准备标准化:直接调用内置工具快速完成多源数据的加载与格式化,一键生成符合各类算法要求的输入数据,开发效率提升数倍。
- 前沿模型即插即用:通过官方提供的 Jupyter Notebook 示例,直接复用已验证的 ALS、xDeepFM 等经典及 SOTA 算法代码,将重心从“写代码”转向“调业务”。
- 评估体系专业化:利用内置的评估模块统一计算离线指标,确保团队在同一基准下公平对比模型表现,快速锁定最优方案。
- 调参流程自动化:借助模型选择与优化示例,系统化地进行超参数搜索与调优,短时间内即可将模型精度提升至生产级水平。
recommenders 通过提供全流程的最佳实践与标准化组件,帮助团队将原本需要一个月的研发周期压缩至一周,成功赶在促销前上线了高质量推荐服务。
运行环境要求
- Linux
- macOS
- Windows
- 非必需
- 仅运行特定深度学习模型(如 xDeepFM, NCF, GRU 等)时需要 GPU 支持,需安装 [gpu] 额外依赖包
- 具体显卡型号、显存大小及 CUDA 版本未在文档中明确说明,通常取决于所安装的 PyTorch/TensorFlow 后端版本要求
未说明

快速开始
最新动态(2025年4月)
我们达到了20,000颗星!!
我们很高兴地宣布,我们在 GitHub 上的项目已获得20,000颗星!感谢您对 Recommenders 项目的大力支持与贡献。我们非常期待在您的帮助下继续构建和完善这个项目。
请查看版本 Recommenders 1.2.1!
我们修复了大量由依赖项引起的 bug,提升了安全性,并对笔记本和库进行了全面审查。
简介
Recommenders 的目标是帮助研究人员、开发者和爱好者快速原型设计、实验并部署一系列经典及最先进推荐系统到生产环境中。
Recommenders 是 Linux 基金会人工智能与数据基金会 下的一个项目。
本仓库包含用于构建推荐系统的示例和最佳实践,以 Jupyter 笔记本的形式提供。这些示例详细记录了我们在五个关键任务上的学习成果:
- 数据准备:为每种推荐算法准备和加载数据。
- 模型构建:使用多种经典及深度学习推荐算法构建模型,例如交替最小二乘法 (ALS) 或极端深度因子分解机 (xDeepFM)。
- 评估:使用离线指标评估算法性能。
- 模型选择与优化:调整和优化推荐模型的超参数。
- 上线部署:在 Azure 生产环境中部署模型。
在 recommenders 中提供了若干实用工具,用于支持常见任务,如以不同算法所需格式加载数据集、评估模型输出以及拆分训练/测试数据。此外,还包含了多个最先进算法的实现,供您自学并在自己的应用中进行定制。更多信息请参阅 Recommenders 文档。
如需更详细的仓库概述,请参阅 wiki 页面上的相关文档。
有关推荐系统实际应用场景的更多信息,请参阅 scenarios。
快速入门
我们推荐使用 uv 进行环境管理(比 conda/pip 快10–100倍),并使用 VS Code 进行开发。要在 Linux/WSL 上安装 Recommenders 包并运行示例笔记本:
# 1. 如果尚未安装 gcc,请先安装。在 Ubuntu 上,可以使用以下命令:
# sudo apt install gcc
# 2. 安装 uv(如果尚未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 3. 创建并激活一个新的虚拟环境
uv venv ~/.venvs/recommenders --python 3.11
source ~/.venvs/recommenders/bin/activate
# 4. 安装核心 Recommenders 包。该包可运行所有 CPU 笔记本。
uv pip install recommenders
# 5. 创建一个 Jupyter 内核
uv pip install ipykernel
python -m ipykernel install --user --name recommenders --display-name "Python (recommenders)"
# 6. 在 VS Code 或通过命令行克隆此仓库:
git clone https://github.com/recommenders-team/recommenders.git
# 7. 在 VS Code 中:
# a. 打开一个笔记本,例如 examples/00_quick_start/sar_movielens.ipynb;
# b. 选择 Jupyter 内核 "Python (recommenders)";
# c. 运行笔记本。
有关其他平台(如 Windows 和 macOS)以及不同配置(如 GPU、Spark 和实验性功能)的更多设置信息,请参阅 设置指南。
除了核心包之外,还提供了若干附加组件,包括:
[gpu]:用于运行 GPU 模型。[spark]:用于运行 Spark 模型。[dev]:用于仓库的开发。[all]:[gpu]|[spark]|[dev][experimental]:指尚未经过充分测试,或可能需要额外安装步骤的模型。
算法
下表列出了当前仓库中可用的推荐算法。示例栏中链接的笔记本分为“快速入门”,展示易于运行的算法示例;或“深入剖析”,详细解释算法的数学原理及实现过程。
| 算法 | 类型 | 描述 | 示例 |
|---|---|---|---|
| 交替最小二乘法 (ALS) | 协同过滤 | 针对大规模数据集中显式或隐式反馈的矩阵分解算法,优化了可扩展性和分布式计算能力。适用于 PySpark 环境。 | 快速入门 / 深入解析 |
| 注意力异步奇异值分解 (A2SVD)* | 协同过滤 | 基于序列的算法,利用注意力机制捕捉用户的长期和短期偏好。适用于 CPU/GPU 环境。 | 快速入门 |
| Cornac/贝叶斯个性化排序 (BPR) | 协同过滤 | 针对隐式反馈进行物品排名预测的矩阵分解算法。适用于 CPU 环境。 | 深入解析 |
| Cornac/双边变分自编码器 (BiVAE) | 协同过滤 | 用于二元数据(如用户-物品交互)的生成模型。适用于 CPU/GPU 环境。 | 深入解析 |
| 卷积序列嵌入推荐 (Caser) | 协同过滤 | 基于卷积的算法,旨在同时捕捉用户的总体偏好和序列模式。适用于 CPU/GPU 环境。 | 快速入门 |
| 深度知识感知网络 (DKN)* | 基于内容的过滤 | 结合知识图谱和文章嵌入的深度学习算法,用于新闻或文章推荐。适用于 CPU/GPU 环境。 | 快速入门 / 深入解析 |
| 极端深度因子分解机 (xDeepFM)* | 协同过滤 | 基于深度学习的算法,适用于包含用户/物品特征的隐式和显式反馈。适用于 CPU/GPU 环境。 | 快速入门 |
| 嵌入点积偏差 | 协同过滤 | 一种通用算法,使用用户和物品的嵌入及偏差。适用于 CPU/GPU 环境。 | 快速入门 |
| LightFM/因子分解机 | 协同过滤 | 适用于隐式和显式反馈的因子分解机算法。适用于 CPU 环境。 | 快速入门 |
| LightGBM/梯度提升树* | 基于内容的过滤 | 针对基于内容的问题,具有快速训练和低内存占用特点的梯度提升树算法。适用于 CPU/GPU/PySpark 环境。 | CPU 快速入门 / PySpark 深入解析 |
| LightGCN | 协同过滤 | 一种简化了 GCN 设计的深度学习算法,用于预测隐式反馈。适用于 CPU/GPU 环境。 | 深入解析 |
| GeoIMC* | 协同过滤 | 一种考虑用户和物品特征的矩阵补全算法,采用黎曼共轭梯度优化,并遵循几何方法。适用于 CPU 环境。 | 快速入门 |
| GRU | 协同过滤 | 基于序列的算法,利用循环神经网络捕捉用户的长期和短期偏好。适用于 CPU/GPU 环境。 | 快速入门 |
| 多项式变分自编码器 | 协同过滤 | 用于预测用户/物品交互的生成模型。适用于 CPU/GPU 环境。 | 深入解析 |
| 具有长短期用户表征的神经推荐 (LSTUR)* | 基于内容的过滤 | 用于推荐新闻文章的神经推荐算法,能够建模用户的长短期兴趣。适用于 CPU/GPU 环境。 | 快速入门 |
| 具有注意力多视角学习的神经推荐 (NAML)* | 基于内容的过滤 | 用于推荐新闻文章的神经推荐算法,采用注意力多视角学习。适用于 CPU/GPU 环境。 | 快速入门 |
| 神经协同过滤 (NCF) | 协同过滤 | 针对用户/物品隐式反馈的性能增强型深度学习算法。适用于 CPU/GPU 环境。 | 快速入门 / 深入解析 |
| 具有个性化注意力的神经推荐 (NPA)* | 基于内容的过滤 | 用于推荐新闻文章的神经推荐算法,采用个性化注意力网络。适用于 CPU/GPU 环境。 | 快速入门 |
| 具有多头自注意力的神经推荐 (NRMS)* | 基于内容的过滤 | 用于推荐新闻文章的神经推荐算法,采用多头自注意力机制。适用于 CPU/GPU 环境。 | 快速入门 |
| 下一个物品推荐 (NextItNet) | 协同过滤 | 基于扩张卷积和残差网络的算法,旨在捕捉序列模式。同时考虑用户/物品的交互与特征。适用于 CPU/GPU 环境。 | 快速入门 |
| 受限玻尔兹曼机 (RBM) | 协同过滤 | 基于神经网络的算法,用于学习显式或隐式用户/物品反馈背后的概率分布。适用于 CPU/GPU 环境。 | 快速入门 / 深入解析 |
| 黎曼低秩矩阵补全 (RLRMC)* | 协同过滤 | 使用黎曼共轭梯度优化、内存消耗小的矩阵分解算法,用于预测用户/物品的交互。适用于 CPU 环境。 | 快速入门 |
| 推荐简单算法 (SAR)* | 协同过滤 | 基于相似性的隐式用户/物品反馈算法。适用于 CPU 环境。 | 快速入门 / 深入解析 |
| 自注意力序列推荐 (SASRec) | 协同过滤 | 基于 Transformer 的序列推荐算法。适用于 CPU/GPU 环境。 | 快速入门 |
| 短期与长期偏好融合推荐 (SLi-Rec)* | 协同过滤 | 基于序列的算法,利用注意力机制、时间感知控制器和内容感知控制器,同时捕捉用户的长期和短期偏好。适用于 CPU/GPU 环境。 | 快速入门 |
| 多兴趣感知的序列用户建模 (SUM)* | 协同过滤 | 一种增强的记忆网络基序列用户模型,旨在捕捉用户的多种兴趣。适用于 CPU/GPU 环境。 | 快速入门 |
| 基于个性化 Transformer 的序列推荐 (SSEPT) | 协同过滤 | 基于 Transformer 的序列推荐算法,结合用户嵌入。适用于 CPU/GPU 环境。 | 快速入门 |
| 标准变分自编码器 | 协同过滤 | 用于预测用户/物品交互的生成模型。适用于 CPU/GPU 环境。 | 深入解析 |
| Surprise/奇异值分解 (SVD) | 协同过滤 | 用于在小规模数据集中预测显式评分反馈的矩阵分解算法。适用于 CPU/GPU 环境。 | 深入解析 |
| 词频-逆文档频率 (TF-IDF) | 基于内容的过滤 | 适用于文本数据集的基于相似性的简单内容推荐算法。适用于 CPU 环境。 | 快速入门 |
| Vowpal Wabbit (VW)* | 基于内容的过滤 | 快速的在线学习算法,非常适合用户特征/上下文不断变化的场景。使用 CPU 进行在线学习。 | 深入解析 |
| 宽而深 | 协同过滤 | 一种能够记忆特征交互并泛化用户特征的深度学习算法。适用于 CPU/GPU 环境。 | 快速入门 |
| xLearn/因子分解机 (FM) 和场感知 FM (FFM) | 协同过滤 | 一种快速且内存高效的算法,用于根据用户/物品特征预测标签。适用于 CPU/GPU 环境。 | 深入解析 |
注意: * 表示由微软发明/贡献的算法。
独立或孵化中的算法和工具是放入 contrib 文件夹的候选对象。该文件夹将存放那些可能不易融入核心仓库,或者需要时间重构代码、完善功能并添加必要测试的贡献内容。
| 算法 | 类型 | 描述 | 示例 |
|---|---|---|---|
| SARplus * | 协同过滤 | 针对 Spark 的优化版 SAR 实现 | 快速入门 |
算法比较
我们提供了一个 基准测试笔记本,用于展示如何评估和比较不同的算法。在这个笔记本中,MovieLens 数据集按照 75/25 的比例进行分层拆分,得到训练集和测试集。我们使用下面列出的每一种协同过滤算法来训练推荐模型。参数值采用文献这里中报告的经验值。对于排序指标,我们使用 k=10(前 10 个推荐项)。比较实验在一台配备 4 核 CPU、30GB 内存和 1 块 GeForce GTX 1660 Ti 显卡(6GB 显存)的机器上运行。Spark ALS 以本地独立模式执行。下表展示了在 MovieLens 100k 数据集上运行 15 个 epoch 后的结果。
| 算法 | MAP | nDCG@k | Precision@k | Recall@k | RMSE | MAE | R2 | 解释方差 |
|---|---|---|---|---|---|---|---|---|
| ALS | 0.004732 | 0.044239 | 0.048462 | 0.017796 | 0.965038 | 0.753001 | 0.255647 | 0.251648 |
| BiVAE | 0.146126 | 0.475077 | 0.411771 | 0.219145 | N/A | N/A | N/A | N/A |
| BPR | 0.132478 | 0.441997 | 0.388229 | 0.212522 | N/A | N/A | N/A | N/A |
| embdotbias | 0.018954 | 0.117810 | 0.104242 | 0.042450 | 0.992760 | 0.776040 | 0.223344 | 0.223393 |
| LightGCN | 0.088526 | 0.419846 | 0.379626 | 0.144336 | N/A | N/A | N/A | N/A |
| NCF | 0.107720 | 0.396118 | 0.347296 | 0.180775 | N/A | N/A | N/A | N/A |
| SAR | 0.110591 | 0.382461 | 0.330753 | 0.176385 | 1.253805 | 1.048484 | -0.569363 | 0.030474 |
| SVD | 0.012873 | 0.095930 | 0.091198 | 0.032783 | 0.938681 | 0.742690 | 0.291967 | 0.291971 |
贡献说明
本项目欢迎各位的贡献与建议。在提交贡献之前,请先阅读我们的 贡献指南。
为营造一个包容且富有激励性的社区,本项目遵循此 行为准则。
参考文献
- 免费课程: M. González-Fierro, “推荐系统:实用入门”, LinkedIn Learning, 2024。可通过此链接观看。
- D. Li, J. Lian, L. Zhang, K. Ren, D. Lu, T. Wu, X. Xie, “推荐系统:前沿与实践”, Springer, 北京, 2024。可通过此链接购买。
- A. Argyriou, M. González-Fierro 和 L. Zhang, “Microsoft Recommenders:生产就绪推荐系统的最佳实践”, WWW 2020:国际万维网大会,台北, 2020。在线获取:https://dl.acm.org/doi/abs/10.1145/3366424.3382692
- S. Graham, J.K. Min, T. Wu, “Microsoft recommenders:加速推荐系统开发的工具”, RecSys '19:第 13 届 ACM 推荐系统会议论文集, 2019。在线获取:https://dl.acm.org/doi/10.1145/3298689.3346967
- L. Zhang, T. Wu, X. Xie, A. Argyriou, M. González-Fierro 和 J. Lian, “大规模生产就绪推荐系统的构建”, ACM SIGKDD 知识发现与数据挖掘大会 2019 (KDD 2019), 2019。
版本历史
1.2.12024/12/241.2.02024/05/011.1.12022/07/201.1.02022/04/011.0.02022/01/130.7.02021/09/230.6.02021/06/180.5.02021/04/300.4.02021/04/300.3.12021/04/300.3.02021/04/300.2.02021/04/300.1.12018/12/120.1.02018/11/12常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。