小红书的推荐系统是其技术体系的核心组件,从2013年的简单规则匹配到2024年的多模态深度学习系统,经历了多次重大技术迭代。作为一个内容社区平台,推荐系统的质量直接决定了用户体验和平台的商业价值。
推荐系统演进时间线
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2013-2015 [规则时代] 基于标签匹配 + 编辑推荐
↓
2016-2018 [机器学习] 协同过滤 + LR/GBDT + 特征工程
↓
2019-2021 [深度学习] DNN/Wide&Deep + 实时特征 + 多目标优化
↓
2022-2024 [多模态AI] Transformer + 多模态理解 + 大模型应用
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| 时期 | 推荐算法 | 特征规模 | 模型参数 | 在线延迟 | CTR提升 |
|---|---|---|---|---|---|
| 2013-2015 | 规则匹配 | <100 | - | <10ms | 基准线 |
| 2016-2018 | LR/GBDT | 10万+ | 百万级 | <30ms | +50% |
| 2019-2021 | Deep Learning | 千万级 | 10亿+ | <50ms | +120% |
| 2022-2024 | Multi-Modal | 亿级 | 千亿级 | <80ms | +200% |
用户请求流程(2013-2014)
┌─────────┐ ┌──────────┐ ┌──────────┐
│ 用户 │────>│ Nginx │────>│ Django │
└─────────┘ └──────────┘ └──────────┘
│
↓
┌──────────────┐
│ 推荐服务 │
│ - 标签匹配 │
│ - 热度排序 │
│ - 时间衰减 │
└──────────────┘
│
↓
┌──────────────┐
│ MySQL │
│ - 用户表 │
│ - 笔记表 │
│ - 标签表 │
└──────────────┘
初期的推荐系统主要依赖以下几个简单策略:
Score = (点赞数 × 0.3 + 收藏数 × 0.4 + 评论数 × 0.3) × 时间衰减因子
时间衰减因子 = 1 / (1 + α × 发布天数)
其中 α = 0.1
挑战1:冷启动问题
挑战2:内容理解能力弱
挑战3:实时性要求
2016年,小红书用户量突破千万,简单的规则匹配已无法满足个性化需求。技术团队开始引入经典的推荐算法。
协同过滤架构
┌────────────────────────────────────────────────────┐
│ 离线计算层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 用户行为日志 │ │ Spark集群 │ │
│ │ - 点击 │──>│ - UserCF │ │
│ │ - 点赞 │ │ - ItemCF │ │
│ │ - 收藏 │ │ - MF分解 │ │
│ └──────────────┘ └──────────────┘ │
│ ↓ │
│ ┌──────────────┐ │
│ │ 相似度矩阵 │ │
│ │ 存储(HBase) │ │
│ └──────────────┘ │
└────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────┐
│ 在线服务层 │
│ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │
│ │ 召回 │──>│ 排序 │──>│ 过滤 │ │
│ │ - UserCF │ │ - LR模型 │ │ - 去重 │ │
│ │ - ItemCF │ │ - GBDT模型 │ │ - 业务规则│ │
│ │ - 热门 │ │ - 特征服务 │ │ - 多样性 │ │
│ └──────────┘ └──────────────┘ └──────────┘ │
└────────────────────────────────────────────────────┘
构建了完整的特征工程体系,包含三大类特征:
用户特征(User Features)
内容特征(Item Features)
交叉特征(Cross Features)
| 版本 | 时间 | 模型 | 特征数 | 效果提升 | 主要改进 |
|---|---|---|---|---|---|
| v1.0 | 2016.04 | Logistic Regression | 1000+ | +15% | 引入机器学习 |
| v1.1 | 2016.09 | LR + GBDT | 5000+ | +8% | 特征组合 |
| v2.0 | 2017.03 | FM | 10000+ | +12% | 自动特征交叉 |
| v2.1 | 2017.08 | FFM | 50000+ | +6% | Field感知 |
| v3.0 | 2018.02 | Wide&Deep | 100000+ | +10% | 深度特征学习 |
实时特征计算流水线(2017年上线)
用户行为 ──> Kafka ──> Flink ──> 特征更新 ──> Redis/HBase
(消息队列) (流计算) (5s延迟) (特征存储)
│
↓
┌──────────┐
│ 实时指标 │
├──────────┤
│ CTR │
│ 停留时长 │
│ 互动率 │
└──────────┘
建立了完整的实验平台,支持算法快速迭代:
2019年,小红书全面拥抱深度学习,构建了端到端的深度推荐系统。
深度推荐系统架构
┌─────────────────────────────────────────────────────────┐
│ 召回层(多路召回) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │双塔模型 │ │图神经网络│ │序列模型 │ │多兴趣 │ │
│ │(DSSM) │ │(GraphSAGE)│ │(GRU4Rec)│ │(MIND) │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 粗排层(轻量模型) │
│ ┌──────────────┐ │
│ │ 双塔DNN │ │
│ │ (降级到1000) │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 精排层(复杂模型) │
│ ┌──────────────────────────────────────────────┐ │
│ │ Multi-Task DNN │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │点击预测 │ │时长预测 │ │互动预测 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ 共享底层 + Task-specific层 │ │
│ └──────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 重排层(业务约束) │
│ 多样性 | 新鲜度 | 商业化调控 │
└─────────────────────────────────────────────────────────┘
用户Embedding
内容Embedding
统一Embedding空间
多模态融合网络
┌──────────┐ ┌──────────┐ ┌──────────┐
│图片特征 │ │文本特征 │ │视频特征 │
│(ResNet) │ │(BERT) │ │(3D-CNN) │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
└─────────────┼─────────────┘
│
┌──────────────┐
│ Attention │
│ 融合层 │
└──────────────┘
│
┌──────────────┐
│统一Embedding │
│ (256维) │
└──────────────┘
推荐系统需要同时优化多个业务目标:
| 目标 | 权重 | 模型结构 | 损失函数 |
|---|---|---|---|
| 点击率(CTR) | 0.4 | Shared Bottom + Tower | Binary Cross Entropy |
| 停留时长 | 0.3 | Shared Bottom + Tower | MSE |
| 互动率 | 0.2 | Shared Bottom + Tower | Binary Cross Entropy |
| 商业化 | 0.1 | Separate Tower | Weighted Loss |
多目标融合公式:
Score = w₁×P(click) + w₂×E(duration) + w₃×P(interact) + w₄×Revenue
其中权重w动态调整,基于用户分层和时段
在线学习系统
实时训练Pipeline
┌──────────────┐
用户行为 ──────────>│ 特征提取 │
│ (Flink) │
└──────┬───────┘
│
┌──────↓───────┐
│ 样本生成 │
│ (正负样本) │
└──────┬───────┘
│
┌──────↓───────┐
│ 增量训练 │
│ (TensorFlow) │
└──────┬───────┘
│
┌──────↓───────┐
│ 模型评估 │
│ (AUC/GAUC) │
└──────┬───────┘
│
┌──────↓───────┐
│ 在线部署 │
│ (TF Serving) │
└──────────────┘
用户行为序列是理解用户兴趣的关键:
短期兴趣建模
长期兴趣建模
Session建模
小红书的内容形态丰富,包含图文、视频、直播等,多模态理解成为核心能力。
多模态内容理解框架
┌────────────────────────────────────────────────────────┐
│ 内容输入层 │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ 图片 │ │ 文本 │ │ 视频 │ │ 音频 │ │标签 │ │
│ └───┬──┘ └───┬──┘ └───┬──┘ └───┬──┘ └───┬──┘ │
└──────┼─────────┼─────────┼─────────┼─────────┼───────┘
│ │ │ │ │
┌──────┼─────────┼─────────┼─────────┼─────────┼───────┐
│ ↓ ↓ ↓ ↓ ↓ │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ViT │ │BERT │ │Video │ │Audio │ │GCN │ │
│ │ │ │-Large│ │BERT │ │Trans. │ │ │ │
│ └───┬──┘ └───┬──┘ └───┬──┘ └───┬──┘ └───┬──┘ │
│ │ │ │ │ │ │
│ 特征提取层 │
└────────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────────┐
│ Cross-Modal Transformer │
│ 统一建模图像、文本、视频、音频关系 │
└────────────────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │内容标签 │ │质量评分 │ │相似度计算 │ │
│ │生成 │ │预测 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────────────────┘
2023年引入大语言模型
| 应用场景 | 模型选择 | 技术方案 | 效果提升 |
|---|---|---|---|
| 内容理解 | GPT-3.5/4 | Few-shot理解用户意图 | 理解准确率+25% |
| 标题生成 | 自研7B模型 | Fine-tuning on 10M笔记 | 点击率+15% |
| 评论分析 | BERT变体 | 情感分析+观点提取 | 互动率+20% |
| 搜索优化 | 向量检索 | Text/Image Embedding | 召回率+30% |
自研模型训练
训练数据规模:
- 文本语料:100TB(用户笔记、评论)
- 图片数据:10亿张
- 视频数据:1亿个片段
- 用户行为:万亿级交互日志
模型架构:
- 基座模型:7B参数量
- 训练框架:Megatron-LM
- 硬件:1000张A100 GPU
- 训练时长:3个月
构建了支持十亿级向量的检索系统:
向量检索架构
┌────────────────────────────────────────────┐
│ 索引构建层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ 内容Embedding │ │ 用户Embedding │ │
│ │ (实时) │ │ (准实时) │ │
│ └───────┬──────┘ └───────┬──────┘ │
└──────────┼──────────────────┼──────────────┘
│ │
↓ ↓
┌────────────────────────────────────────────┐
│ 向量索引层 │
│ ┌──────────────────┐ │
│ │ Faiss集群 │ │
│ │ - IVF16384,PQ64 │ │
│ │ - 10亿向量 │ │
│ │ - 分片存储 │ │
│ └──────────────────┘ │
└────────────────────────────────────────────┘
↓
┌────────────────────────────────────────────┐
│ 检索服务层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ANN检索 │ │ 相似度 │ │ 重排序 │ │
│ │ (< 10ms) │ │ 计算 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────────────────────────────┘
检索性能优化
AI辅助创作工具
AIGC Pipeline
用户上传内容 → 内容分析 → 创作建议 → 用户确认 → 发布
│ │ │ │
↓ ↓ ↓ ↓
图片/视频 场景识别 文案生成 质量评分
物体检测 标签推荐 合规检查
风格分析 封面选择 优化建议
超个性化推荐
推荐多样性保证
多样性算法:
1. 类目打散:确保Feed流类目分布
2. 创作者打散:避免同一作者内容聚集
3. 主题轮转:不同主题内容交替
4. 探索与利用:10%流量用于兴趣探索
小红书推荐系统全景架构(2024)
┌─────────────────────────────────────────────────────────────┐
│ 数据层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │用户数据 │ │内容数据 │ │行为数据 │ │商业数据 │ │
│ │(Profile) │ │(Content) │ │(Action) │ │(Business)│ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 特征工程层 │
│ ┌────────────────────────────────────────────────────┐ │
│ │ 离线特征:Spark/Hive计算,T+1更新 │ │
│ │ 近线特征:Flink计算,分钟级更新 │ │
│ │ 在线特征:内存计算,实时更新 │ │
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 召回层 │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │协同 │ │内容 │ │向量 │ │图 │ │实时 │ │
│ │过滤 │ │召回 │ │召回 │ │召回 │ │召回 │ │
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 排序层(三级漏斗) │
│ 粗排(1万→1千) → 精排(1千→100) → 重排(100→展示) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 业务层 │
│ 多样性控制 | 商业化混排 | 内容安全 | 用户体验优化 │
└─────────────────────────────────────────────────────────────┘
挑战1:超大规模数据处理
挑战2:实时性要求
挑战3:个性化与多样性平衡
| 优化项 | 优化前 | 优化后 | 技术手段 |
|---|---|---|---|
| 召回延迟 | 50ms | 15ms | 向量索引优化、缓存 |
| 排序延迟 | 80ms | 30ms | 模型压缩、GPU推理 |
| 特征获取 | 40ms | 10ms | 内存KV、预计算 |
| QPS承载 | 100万 | 1000万 | 服务拆分、扩容 |
监控指标体系
┌──────────────────────────────────────┐
│ 业务指标 │
│ CTR | 时长 | 互动率 | 留存 | GMV │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 算法指标 │
│ 覆盖率 | 准确率 | 召回率 | AUC | GAUC │
└──────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ 系统指标 │
│ 延迟 | QPS | 成功率 | CPU | 内存 │
└──────────────────────────────────────┘
A/B实验平台能力
1. 生成式推荐
2. 端边云协同
3. 可解释推荐
4. 跨模态搜索推荐
小红书推荐系统的演进历程,是一个从简单规则到复杂AI系统的技术升级之路。通过不断的技术创新和优化,构建了一个支撑亿级用户、处理海量数据、提供个性化体验的推荐系统。
关键成功因素:
未来,随着AI技术的持续发展,小红书推荐系统将继续在多模态理解、生成式AI、隐私计算等方向探索创新,为用户提供更智能、更个性化的内容推荐服务。
注:本章节基于公开技术分享和行业通用实践编写,具体实现细节可能与实际有所差异