小红书推荐系统论文深度研读¶
调研日期:2026-03-27 | 作者:Cindy + Claude Opus 4.6 高层时间线和信息来源全景见:2026-03-27_xiaohongshu-recsys-research-snapshot.md
阅读说明¶
按小红书推荐系统的发展时间线排列,从最早的公开论文到最新的系统。每篇论文提取: - Why:什么业务/技术问题驱动了这个工作 - What:核心架构和关键创新 - How well:离线 + 在线实验结果 - So what:对系统演进的意义
目录¶
- SSD (KDD 2021) — 重排/多样性
- NoteLLM (WWW 2024) — 召回 I2I, BERT → LLM
- NoteLLM-2 (KDD 2025) — 召回 I2I, 文本 → 多模态
- GemiRec (2025.03 部署) — 召回, 单兴趣 → 多兴趣
- GenRank (KDD 2025 Workshop) — 精排, 判别式 → 生成式
- IDProxy (2025.03/08 部署) — 排序冷启动, MLLM proxy
- GRM + SAM (KDD 2026) — 搜索排序, RL
- QP-OneModel (2026 Q1 部署) — 搜索 QP, 统一生成式
- 王树森公开课框架 — Phase 1-2 经典架构基线
- 跨论文技术演进分析
1. SSD — 重排多样性¶
Sliding Spectrum Decomposition for Diversified Recommendation KDD 2021 | arXiv: 2107.05204 | 作者: Yanhua Huang, Weikun Wang, Lei Zhang, Ruiwen Xu
论文 PDF 通过 Jina Reader API 完整读取(2026-03-27 补全)
Why¶
用户在发现页连续刷到同类内容会产生疲劳感。过去 1.5 年间,用户平均浏览序列长度增长了约 50%,传统滑动窗口方法会丢弃窗口外已浏览内容的信息,问题愈发严重。简单规则打散无法捕捉用户对多样性的真实感知。
What:架构¶
核心思路:将 feed 浏览序列建模为时间序列,用频谱分解捕捉多样性。
轨迹张量构造¶
- 对浏览序列用滑动窗口(大小 w)生成重叠窗口
- 每个 item 映射到 d 维 embedding
- 得到三阶轨迹张量 X ∈ ℝ^(L×w×d),L = max(1, T-w+1)
SSD 多样性定义¶
对张量做 SVD 分解:X = Σ σᵢⱼₖ u⁽¹⁾ᵢ ⊗ u⁽²⁾ⱼ ⊗ u⁽³⁾ₖ
多样性 = ∏ σᵢⱼₖ(所有正奇异值的乘积 = embedding 构成的超体积)
优化目标¶
Maximize: Σrᵢₜ + γ ∏σᵢⱼₖ(质量 + 多样性,UCB-bandit 解释)
贪心推理算法¶
- t ≤ w 时:Modified Gram-Schmidt 正交化,逐步选 argmax[rⱼ + ‖v⊥ⱼ‖V]
- t > w 时:循环队列维护基和投影,滑动窗口更新
- 时间复杂度 O(NTd),空间 O(wN)
与 DPP 的关系¶
- 无窗口时 SSD = DPP(超体积等价)
- SSD 优势:时间序列视角整合多窗口,保留窗口外信息
- 计算优势:避免 O(N²) 核矩阵计算
| 算法 | 时间 | 空间 |
|---|---|---|
| SSD(有窗口) | O(NTd) | O(Nd) |
| DPP(有窗口) | O(NTdw + N²d) | O(Ndw + N²) |
CB2CF Item Embedding(处理长尾)¶
- Siamese 网络:BERT(40M 小红书帖子预训练) + Inception-V3(小红书图片分类预训练)
- 正样本:ItemCF 检索 + ≥100 曝光过滤,40 万对
- 关键:不是 content→CF 映射,而是让模型从内容学习 ItemCF 隐含的用户感知相似度
- 输出 64 维 embedding + 1 维常数(余弦归一化修正),总 65 维
How well¶
生产配置:N=600 候选,T=80 返回,数千万 DAU
在线 A/B(7 天,10% 用户): | 指标 | SSD | SSD(稳定化版) | |------|-----|-------------------| | 用户时长 | +0.25% | +0.42% | | 互动量 | +0.71% | +0.81% | | ILAD(列表内多样性) | +0.37% | +0.53% | | MRT(阅读类目数) | +0.53% | +0.68% | | P99 延迟 | -7ms | — | | 内存 | -27%* | — |
离线 CB2CF vs CF(长尾 item,<3 次互动/月): | 类目 | CF | CB2CF | |------|-----|-------| | 运动 | 43.9% | 74.5% | | 时尚 | 47.0% | 86.9% | | 旅行 | 30.8% | 71.6% | | 美食 | 48.0% | 87.7% |
So what¶
小红书最早的公开推荐系统论文(2021)。 三个关键贡献: 1. 从时间序列视角重新定义了 feed 多样性,超越了 DPP 的「无序」假设 2. CB2CF embedding 让长尾 item 获得可靠的相似度度量(+20-40%) 3. 比 DPP 更高效(O(NTd) vs O(NTdw + N²d)),P99 延迟减少 7ms,内存减少 27%
2. NoteLLM — 召回侧 LLM 化¶
NoteLLM: A Retrievable Large Language Model for Note Recommendation WWW 2024 | arXiv: 2403.01744
Why¶
现有 I2I 召回用 SentenceBERT 生成笔记 embedding: - BERT 语义理解能力有限(Recall@100 仅 70.72%) - Hashtag 和类目信息被当作普通文本处理,没有被充分利用 - Hashtag 其实代表笔记的「核心观点」,对判断两篇笔记是否相关至关重要
What:架构¶
基座:LLaMA 2 7B
Note Compression Prompt:
[BOS] <Instruction> <Input Note> The compression word is: "[EMB]". <Output> [EOS]
[EMB] 前一个 token 的 last hidden state → 线性层 → 128 维 embedding
- 把整篇笔记压缩成一个可检索的向量
Generative-Contrastive Learning (GCL):同时做两个任务
- 对比学习(学 embedding):
- 正样本构造:用户共现打分
s(A→B) = Σ(1/Nᵢ),取 top-10 - Batch size = 64 对(128 篇笔记),in-batch negatives
- 温度 τ = 3(可学习)
-
Loss: InfoNCE
-
生成任务(辅助监督):
- 40% batch 生成 hashtag,60% 生成类目
- 标准 autoregressive loss
- 权重 α = 0.01(很小,主要让生成任务「辅助」embedding 学习)
总 Loss:L = (L_cl + α·L_gen) / (1+α)
核心 insight:生成任务迫使 LLM 内化笔记语义,反过来丰富了 embedding 空间。这不是多任务学习的简单叠加,而是生成能力作为 embedding 质量的「催化剂」。
How well¶
离线: | 模型 | Recall@100 | Recall@1k | 平均 | |------|-----------|----------|------| | SentenceBERT(在线基线) | 70.72 | 87.88 | 88.63 | | RepLLaMA | 83.63 | 95.10 | 94.49 | | NoteLLM | 84.02 | 95.23 | 94.66 |
在线 A/B(1 周): - CTR +16.20%(vs SentenceBERT) - 评论 +1.10% - 周活跃发布者 +0.41% - 新笔记 24h 评论 +3.58%
消融: - 去掉生成任务(w/o CSFT):Recall@100 从 84.02 → 83.28,且完全丧失生成能力 - 去掉对比学习(w/o GCL):Recall@100 暴跌到 60.38–75.38 - α 敏感度:α=0.01 是最优平衡点,α 过大会偏向生成而损害 embedding
生成质量:类目准确率 66.17%,幻觉率仅 0.50%
训练:8×A100 80GB,458K 训练笔记,312K 正样本对
So what¶
这是小红书召回系统从 BERT 时代进入 LLM 时代的标志性工作。 CTR +16.2% 是一个巨大的提升。关键创新是 Generative-Contrastive Learning —— 利用 LLM 的生成能力来增强 embedding 质量,而非简单地把 LLM 当作更大的 encoder。
3. NoteLLM-2 — 多模态召回¶
NoteLLM-2: Multimodal Large Representation Models for Recommendation KDD 2025 | arXiv: 2405.16789
Why¶
NoteLLM 只用文本,但小红书笔记天然是图文/视频。直接给 LLM 加视觉输入存在严重问题:
「文本偏置」发现:通过 saliency score 分析,发现端到端微调的多模态 LLM 在浅层的视觉显著性(Sᵥ)很低 —— 视觉信息主要在文本 embedding 之间「流转」,而不是被直接聚合到最终表示中。预训练好的 MLLM(如 Qwen-VL-Chat)能保持平衡的 Sᵥ 和 Sₒ,但未对齐的模型做不到。
What:架构¶
视觉编码器:CLIP ViT-B (85.8M) 或 ViT-bigG (1.8B),训练时冻结
Q-Former 连接器:49.6M–142.9M 参数,将视觉特征转换到 LLM 维度,压缩为 Lc 个 visual tokens(最优 Lc=16)
两个核心创新:
mICL(多模态 In-Context Learning)¶
不把多模态内容压缩成一个 embedding,而是分两路:
- 视觉路:图片 → 压缩成 [IMG_EMB],独立对比学习 → nᵢᵛ
- 文本路:标题+话题+正文 → 压缩成多模态 embedding → nᵢᵐ
- 两路独立对比学习:Lf = (Lᵛ + α·Lᵐ) / (1+α)
- 因果注意力掩码确保视觉表示「只包含图片信息」
Late Fusion¶
- 从视觉编码器提取 [CLS] token 作为全局图像特征 v
- 线性投影到 LLM 维度
- 门控融合:
z = sigmoid(W[v, nᵢᵛ] + b) - 融合后:
n̂ᵢᵛ = z ⊙ v + (1-z) ⊙ nᵢᵛ - 延迟融合保留更多纯视觉信息,防止早期 LLM 处理中的信息丢失
How well¶
离线(Recall@100): | 模型 | 全量对 | 短文本对 | |------|--------|----------| | SentenceBERT(文本) | 67.59 | — | | BLIP-2(多模态) | 68.38 | — | | Qwen-VL-Chat(预训练 MLLM) | 78.53 | 60.41 | | MTomato-Base + NoteLLM-2 | 74.62 | 54.87 | | MQwen-bigG + NoteLLM-2 | 77.56* | — |
*注:NoteLLM-2 的基线不同于 NoteLLM,此处 SentenceBERT 是 RoBERTa-wwm-ext
在线 A/B(1 周,10% 流量): - 首千曝点击 +6.35% - 24h 互动 +8.08% - 首次互动在 24h 内且 100 曝光的笔记 +9.83%
消融: - 仅 mICL:R@100 74.15(短文本 51.56) - 仅 Late Fusion:R@100 74.51(短文本 54.19) - 两者结合:R@100 74.62(短文本 54.87) - Late Fusion 对小视觉编码器效果更显著
视觉 token 长度:Lc=8 → 16 → 32,16 是速度和质量的最优平衡 推理速度:48.2 notes/sec(vs Qwen-VL-Chat 的 11.5,快 4 倍)
训练:8×A100,~110 GPU-hours,1.49M 笔记,1.13M 正样本对
So what¶
完成了召回系统从纯文本到多模态的升级。 核心贡献是诊断了「文本偏置」问题并提出了 mICL + Late Fusion 的解法。已成为小红书「关键召回通道」。推理速度比直接用预训练 MLLM 快 4 倍,是落地的关键。
4. GemiRec — 多兴趣召回¶
GemiRec: Multi-Interest Retrieval with RQ-VAE Interest Dictionary arXiv: 2510.14626 | 2025.03 部署
Why¶
单一用户向量无法表达多样兴趣。现有多兴趣模型有两个问题: 1. 兴趣坍缩:多个用户表示趋同,软正则化(CMI, Re4 等)无法从根本上防止 2. 兴趣进化不足:无法捕捉用户历史中不存在的潜在兴趣
What:架构¶
三个模块:
IDMM(兴趣字典维护模块)¶
- RQ-VAE:C=4 个子字典,残差量化
- 每个子字典 Eᶜ ∈ ℝ^(Mᶜ×d),总字典 ∏Mᶜ 个组合兴趣
- 量化过程:编码 → 找最近邻 → 残差 → 迭代
- 解码器 Loss = 重建损失 + embedding 损失 + 承诺损失(β=0.25)
理论保证(核心创新): - 命题 1:量化诱导 Voronoi 划分(不重叠) - 推论 3:最小距离保证 Δ_min > 0 - 命题 5:软正则化无法提供数据无关的分离下界(3 个反例) - → 这从数学上证明了为什么 RQ-VAE 优于软正则化
MIPDM(多兴趣后验分布模块)¶
- GPT 架构:6 层,4 头,hidden=16
- 输入:用户特征 + 行为序列 embedding
- 输出:下一个兴趣的分布 p̂ᵤ(softmax over 所有兴趣组合)
- 与用户塔解耦:独立模块,不增加推理延迟
MIRM(多兴趣检索模块)¶
- 融合兴趣 embedding 和用户 embedding:
ŷ = z_fusion(concat(e_m*, u))ᵀ vᵢ - In-batch + hard negatives
User Interest Cache¶
- 每用户存储 Top-K=5 个兴趣索引(K×C 个整数)
- 多样性约束:每个子字典索引在 top-5 中最多出现 ε=3 次
- 零额外推理延迟
三阶段训练: 1. 单独训 MIRM(字典冻结) 2. 单独训 IDMM 直到收敛 3. 联合训练(同时更新)
字典初始化:K-means on first batch,第一个子字典用预设类目
How well¶
离线(小红书工业数据集,239B 用户,92B item): - Recall@120 +28.78%,NDCG@120 +35.16%(vs DisMIR) - 兴趣坍缩指标 AMR@120 +24.7% - 兴趣进化指标 CUR@120 +83%
在线 A/B(2 周,小红书首页): | 场景 | 点击 | CTR | 次日活跃 | |------|------|-----|----------| | 视频 | +0.38% | +0.37% | +0.07-0.08% | | 图文 | +0.26% | +0.51% | +0.08-0.09% | (95% 置信度)
推理效率:0.99× 延迟,1.01× 吞吐量(vs ComiRec 基线,几乎零开销)
消融: - 去掉学习字典(-I):-6.8% - 去掉联合训练(-J):-3.0% - 去掉用户条件(-U):-6.4% - 去掉生成模型(-M):-9.6%(最重要组件) - 去掉三阶段训练:训练发散(NaN) - 去掉 K-means 初始化:字典利用率从 93.3% 暴跌到 21.6%
So what¶
解决了多兴趣召回的两个根本问题,且几乎零推理开销。 理论贡献(Voronoi 划分 vs 软正则化)特别有价值——不是「又一个多兴趣模型」,而是从数学上证明了为什么之前的方法不行。次日活跃提升意味着推荐质量改善了用户留存。
5. GenRank — 生成式排序¶
GenRank: Towards Large-scale Generative Ranking KDD 2025 Workshop | arXiv: 2505.04180
Why¶
小红书精排用传统「MLP + Embedding」范式:特征工程 + embedding table + 判别式多目标模型。Meta 的 HSTU 验证了生成式架构的潜力,但有两个悬而未决的问题: 1. 到底是生成式训练范式(grouped/autoregressive training)还是生成式架构带来了提升? 2. 生成式排序能否在工业规模(数亿用户)高效部署?
What:核心发现 + 架构¶
关键发现(消融实验)¶
是架构,不是训练范式! - 去掉 causal mask(换成 T5 风格全可见 mask):AUC 掉 >0.0015(大模型更严重) - 把 grouped training 换成 point-wise:AUC 只掉一点点 - 在历史行为位置计算 loss:AUC 掉 >0.0100
→ 自回归机制(causal masking)是关键,即使没有预训练也有效
GenRank 架构(vs HSTU)¶
| 维度 | HSTU (Meta) | GenRank |
|---|---|---|
| 组织方式 | Item-oriented(item/action 交替) | Action-oriented(item 作为位置信号) |
| 序列长度 | 2N | N(减半) |
| 注意力成本 | 4×(因为序列翻倍) | 1× |
| 位置编码 | 可学习相对注意力偏置 O(N²) | ALiBi(无参数,线性 I/O) |
| 训练速度 | 基线 | +94.8% |
Action-Oriented Organization: - item 被当作位置上下文,action 是预测单元 - 历史 token:eᵢ = φ(xᵢ) + φ(aᵢ) - 候选 token:eⱼ = φ(xⱼ) + M(M 是 mask action embedding) - Candidate masking 防止候选 item 之间信息泄露
三种位置/时间编码(线性 I/O 复杂度): 1. Position Embedding:标准位置索引,同一请求的候选 item 共享位置 2. Request Index Embedding:按请求分组,捕捉多 item 请求结构 3. Pre-Request Time Embedding:与上一请求的时间间隔(分桶),反映活跃强度
配置:3 Transformer blocks,8 heads,hidden=768,max seq=480
How well¶
离线消融: | 变化 | AUC 变化 | 训练加速 | |------|----------|----------| | + Action-oriented(vs HSTU) | -0.0003 | +78.7% | | + 位置/时间偏置 | +0.0009 | +25.0% | | GenRank 总计 | +0.0006 | +94.8% |
注:在小红书规模下,主任务 AUC 提升 0.0010 通常对应线上 topline 指标 0.5% 的提升
内容 embedding 的额外发现:在生成式架构下,冻结的多模态 embedding 带来的增益超过判别式范式下的 2 倍 —— 架构一致性让预训练知识更好地迁移
在线 A/B(15 天,10% 用户 ≈ 数千万人): | 指标 | 提升 | |------|------| | 用户时长 | +0.3345% | | 阅读量 | +0.6325% | | 互动量 | +1.2474% | | 7 天生命周期(LT7) | +0.1481% | | P99 延迟 | 改善 >25% |
冷启动:「GenRank 在冷启动 item 上的提升尤其显著」—— 内容 embedding 的世界知识在生成式架构下被更充分利用
硬件:NVIDIA H20 GPU,混合精度训练
So what¶
这是小红书精排系统从判别式到生成式的范式切换。 最重要的贡献不是 GenRank 架构本身,而是通过严格消融回答了「到底什么在起作用」——是 causal masking 带来的架构优势。+94.8% 训练加速 + P99 延迟改善 25% 意味着生成式排序不仅效果好,而且更高效,消除了工业落地的最大顾虑。
6. IDProxy — 冷启动 CTR¶
IDProxy: Cold-Start CTR Prediction with Multimodal LLMs arXiv: 2603.01590 | 广告 2025.03 部署,Feed 2025.08 部署
Why¶
新笔记持续大量涌入,必须立即服务。CTR 模型依赖 ID embedding 捕捉协同信号,但新 item 没有交互历史,ID embedding 训练不充分。
关键洞察:「工业 ID embedding 通常呈现不规则、非聚类的分布」—— 不能简单地用 content embedding 映射到 ID 空间。
What:两阶段架构¶
基座 MLLM:InternVL
Stage 1:Proxy Alignment(粗对齐)¶
Prompt:[BOS]<image><text>The compression word is:"[EMB]".[EOS]
- 提取最后 token 的 hidden states → attention pooling → MLP → L2 归一化
- 对比学习 Loss:拉近 content embedding 和对应 ID embedding,推远 in-batch 其他 item
- 频率阈值 τ 过滤交互少于 τ 的 item
- 结果:粗粒度 proxy pᵢᶜᵒᵃʳˢᵉ
Stage 2:End-to-End CTR 优化(精对齐)¶
层级表征分区: - 从 MLLM 多层 Transformer 提取 hidden states - K-means 聚类识别 3 个层组(浅→深,粗到细)
轻量多粒度 Adaptor: - 拼接三层表征 → MLP → pᵢʳᵃʷ_ᶠⁱⁿᵉ
残差门控融合:
r = σ(W_g[pᵢᶜᵒᵃʳˢᵉ, pᵢʳᵃʷ_ᶠⁱⁿᵉ])
pᵢᶠⁱⁿᵉ = W_c · pᵢᶜᵒᵃʳˢᵉ + r ⊙ pᵢʳᵃʷ_ᶠⁱⁿᵉ
与 CTR 模型集成:
ŷ_ui = f_θ(e_u, e_i, pᵢᶜᵒᵃʳˢᵉ, pᵢᶠⁱⁿᵉ, x_ui)
How well¶
离线 AUC 增量: | 方法 | ΔAUC | |------|------| | NoteLLM-2 类 embedding (v1) | +0.015% | | 静态 MLP 映射 (v2) | +0.02% | | IDProxy Stage 1 (v3) | +0.05% | | Stage 1+2 无结构复用 (v4) | +0.08% | | Stage 1+2 有结构复用 (v5) | +0.14% |
冷启动 AUC(5 天跟踪): - 全局笔记:+0.12~0.15%/天 - 新笔记(24h 内发布):+0.23~0.32%/天(约 2 倍于全局)
在线 A/B:
| 场景 | 指标 | 提升 |
|---|---|---|
| 内容 Feed | 阅读 | +0.39% |
| 内容 Feed | 互动 | +0.5% |
| 展示广告 | 曝光 | +1.28% |
| 展示广告 | 广告主价值 | +1.93% |
| 展示广告 | CTR | +0.23% |
| (p < 0.01) |
So what¶
解决了 UGC 平台最持久的痛点——冷启动。 核心创新:(1) 不直接映射 content→ID,而是通过对比学习做对齐;(2) 利用 MLLM 多层表征的层级信息(粗到细);(3) 复用现有 CTR 模型结构而非另起炉灶。NoteLLM-2 类 embedding 只带来 +0.015%,而 IDProxy 带来 +0.14%,差距说明简单的多模态 embedding 远不够。
7. GRM + SAM — 搜索相关性 RL¶
Optimizing Generative Ranking Relevance via RL in Xiaohongshu Search KDD 2026 | arXiv: 2512.00968
Why¶
传统搜索相关性模型输出标量分数,是黑盒: - 无法解释为什么一个文档相关/不相关 - 无法处理复杂语义和 edge case 规则 - 开放域搜索的非结构化内容让 CoT 推理更困难
What:架构¶
基座:RedOne = Qwen2.5-32B-Instruct + 小红书领域后训练
GRM(生成式相关性模型)¶
三步推理,每步输出 \boxed{score}:
- 通用语义分析:query-note 语义比较、分类匹配、关键词匹配 →
\boxed{s₁} - 规则上界分析:领域特定规则(edge case),取最小上界 →
\boxed{s₂} - 最终反思:综合前两步,输出最终标签 →
\boxed{l̂}
规则上界约束最终判断,确保领域特定标准被执行。
GRPO(Group Relative Policy Optimization)¶
- 组大小 G=8,每个 prompt 生成 8 个 rollout
- 二值奖励:
R = 1 if 预测正确, 0 otherwise - 优势估计:组级归一化
 = (rᵢ - mean) / std - KL 系数 β = 1×10⁻³
SAM(Stepwise Advantage Masking)— 核心创新¶
对每个推理步骤 i∈{1,2,3},检查中间分数 sᵢ 是否等于真实标签 l:
m_t = {
1, if l̂=l ∧ step(t)=i ∧ sᵢ=l → 强化正确步骤
1, if l̂≠l ∧ step(t)=i ∧ sᵢ≠l → 惩罚错误步骤
0, otherwise → 屏蔽(不传梯度)
}
为什么需要 SAM: - 最终答案正确但中间步骤错误 → 不应强化错误推理(「虚假推理」) - 最终答案错误但某些步骤正确 → 不应惩罚正确的部分 - 无需昂贵的逐步人工标注,用规则验证 boxed score 即可
SAM-GRPO 目标:标准 GRPO 目标 × 逐 token 掩码 mₜ
训练设置¶
SFT 热身: - 500K 验证过的 CoT traces(DeepSeek-R1 生成 → 拒绝采样只保留正确的) - 16×H800,batch=64,LR=2×10⁻⁶,1 epoch
RL 两阶段: - Phase 1:30K 均匀分布数据,3 epochs,LR=1×10⁻⁶ - Phase 2:50K 真实分布数据,1 epoch,LR=8×10⁻⁷ - 40×H800,top-p=0.95,温度=1.0
数据过滤(avg@k 难度估计): - 高置信度(avg@64 > 0.97):移除,梯度信号弱 - 低置信度(avg@64 < 0.04):移除,可能是标注错误
蒸馏上线¶
32B 教师 → 0.1B BERT 学生 - 用 RL 教师标注百万样本,只取最终标签 - 学生做 5 分类 - P95 延迟 ~20ms,成功率 ~100%
How well¶
离线(5 分类准确率): | 方法 | RANDOM | LONGTAIL | |------|--------|----------| | SFT-Label (200K) | 78.64 | 77.66 | | SFT-Reasoning(CoT + SFT) | 59.44 | 59.22 | | PPO-Reasoning | 78.81 | 74.96 | | OutcomeRL | 80.90 | 77.03 | | ProcessRL (SAM) | 81.23 | 77.72 |
关键发现: - CoT + SFT 反而比纯 SFT-Label 差很多(59.44 vs 78.64)!推理链增加了优化难度 - PPO 比 GRPO 差(78.81 vs 80.90):值函数估计引入偏差 - ProcessRL 只需 150K SFT + 50K RL = 200K 数据,超过 SFT-Label 1M 数据的效果
在线 A/B(7+ 天,5% 流量): - CES(用户参与) +0.72% - DCG 0/1(不相关结果) -0.36% (p < 0.05)
So what¶
搜索相关性从黑盒标量进入可解释的 CoT 推理时代。 三个关键 takeaway: 1. 直接给 LLM 做 CoT + SFT 不 work(准确率暴跌),必须用 RL 2. SAM 提供了一种不需要逐步标注的 process supervision 方法 3. 32B 训练 → 0.1B 蒸馏的「训大用小」模式是工业落地的标准姿势
8. QP-OneModel — 统一 Query 理解¶
QP-OneModel: A Unified Generative LLM for Multi-Task Query Understanding arXiv: 2602.09901 | 2026 Q1 全量部署
Why¶
传统 QP 用独立的 BERT 模型做每个子任务(NER、分词、权重、分类、意图): - 误差在串联的子任务间传播 - 相关任务之间无法共享知识 - 维护成本高:分类体系稍有变化就要重新训练
通用 LLM 在 SNS 场景也失败:社交媒体的极度稀疏性和快速词汇演变(新梗/谐音/缩写)超出通用模型的分布。
What:架构¶
基座:RedOne2.0(领域适配 LLM,变体 0.6B 和 8B)
统一 JSON 输出格式:
{entities, segments, weights, category, intent_desc}
三阶段渐进对齐:
Stage 1:知识注入(Mixed-SFT)¶
- ~10⁵ 人工标注统一数据 + ~10⁷ 旧系统伪标签数据
- 混合训练:
L = E[-log π(y|q)] + λ·Σ E[-log π(yₖ|q)] - 用大量噪声数据注入广泛 QP 知识,用少量高质量数据校准业务逻辑
Stage 2:目标分布对齐¶
- 只用实时人工标注数据微调
- 消除辅助任务的残余噪声
- 对齐到当前在线分布(SNS 语言快速变化)
Stage 3:逻辑内化(Multi-Reward RL)¶
- GRPO + 复合奖励:
R = Σ wₖ · rₖ(ŷₖ, yₖ),每个 rₖ 是该任务的评估指标(F1、accuracy 等) - 选择性数据采样:保留「某个子任务奖励分歧大但其他子任务一致」的样本 → 精确归因
- 从「死记硬背表面模式」转向「内化业务逻辑」
业务感知 Prompt 设计: - 可配置业务规则 R:实体定义、分词规则、权重逻辑、分类体系 → 运营人员可直接改 prompt,无需重训 - 用户改写历史 Cₕᵢₛₜ:当前 session 的历史 query,消歧模糊输入 - 候选笔记 Cₙₒₜₑ:高相关笔记作为实时语义锚点
Intent Description 作为 CoT: - 训练时:作为链式思维监督 - 推理时:作为下游查询改写的 RAG 输入 - 示例:query「1c1」→ intent「用户在挑雅诗兰黛粉底液,想看 1c1 色号的实际上脸效果和与其他色号的对比」
How well¶
离线(vs BERT Pipeline): | 任务 | BERT | QP-OneModel 0.6B | QP-OneModel 8B | |------|------|-------------------|----------------| | 总体 | 72.54% | 78.81% | 79.89% | | NER F1 | 74.85% | 81.64% | 83.86% (+9.01%) | | 分词 F1 | 85.13% | 89.65% | 89.86% | | 词权重 F1 | 56.86% | 65.45% | 66.17% (+9.31%) | | 分类 | 73.31% | 78.50% | 79.68% |
0.6B 就大幅超过 BERT pipeline,证明提升来自方法论而非模型规模。
泛化能力(Few-shot,未见任务): - QP-OneModel 8B 在文档意图识别上达 82.40%,超过 Qwen3-32B 的 74.80%(4 倍参数) - 无需梯度更新,纯 ICL
三阶段消融: | 阶段 | 总体 (8B) | 词权重 F1 | |------|-----------|-----------| | Stage 1 | 79.36% | 64.78% | | Stage 2 | 79.44% | 64.91% | | Stage 3 (RL) | 79.89% | 66.17% |
Stage 3 RL 对需要语义内化的复杂任务(词权重)提升最大。
在线 A/B(5% 流量,≥14 天):
实验 1(替换基础 QP 信号): - DCG 0/1 -0.21%(排序精度提升) - 无/少结果率 -0.4631%
实验 2(Intent Description 增强查询改写): - 用户留存 +0.044% - 笔记有效 CTR +0.17%
So what¶
搜索 QP 从 N 个独立 BERT 统一为一个生成式 LLM。 四个关键价值: 1. 统一建模让相关任务互相增强(词权重 +9.31% 的提升大部分来自跨任务知识共享) 2. Prompt 可配置 → 运营可直接改规则,无需重训(这对快速变化的 SNS 至关重要) 3. Intent Description 是「副产品」却成为下游查询改写的关键输入 4. 0.6B 就超过 BERT pipeline → 可以用小模型在线服务
9. 王树森公开课 — 经典架构基线¶
GitHub: wangshusen/RecommenderSystem
这是理解小红书 Phase 1-2(2019-2023,LLM 之前) 技术栈的最佳资料。
课程结构¶
| 章节 | 主题数 | 核心内容 |
|---|---|---|
| 基础 | 3 | 推荐系统 pipeline, A/B testing |
| 召回 | 12 | ItemCF, Swing, UserCF, 离散特征, 矩阵分解, 双塔(架构/训练/正负样本/线上服务/SSL), Deep Retrieval, 曝光过滤 |
| 排序 | 6 | 多目标模型, MMoE, 分数融合, 播放时长建模, 特征, 三塔粗排 |
| 特征交叉 | 4 | FM, DCN, LHUC, SENet/FiBiNET |
| 用户行为序列 | 3 | 序列特征, DIN, SIM |
| 多样性 | 5 | 度量, MMR, 规则约束, DPP(数学+算法) |
| 冷启动 | 6 | 评估, 简单召回, 聚类召回, Look-Alike, 流量调控, 冷启动 A/B |
| 指标提升 | 6 | 总览, 召回/排序/多样性改进, 特殊人群, 交互行为 |
与论文的对应关系¶
| 公开课内容 | 被哪篇论文升级/替换 |
|---|---|
| 双塔召回 + SentenceBERT | → NoteLLM (LLM embedding) → NoteLLM-2 (多模态) |
| 单兴趣双塔 | → GemiRec (多兴趣 RQ-VAE) |
| 多目标 DNN + MMoE 精排 | → GenRank (生成式 Transformer) |
| 冷启动流量调控 | → IDProxy (MLLM proxy embedding) |
| SSD 多样性 | 仍在使用(重排阶段相对独立) |
| 独立的 QP 模型 | → QP-OneModel (统一生成式 LLM) |
10. 跨论文技术演进分析¶
10.1 核心范式迁移¶
2021 SSD → 重排精细化(频谱分析替代规则打散)
↓
2024 NoteLLM → 召回: BERT embedding → LLM embedding
↓
2024 NoteLLM-2 → 召回: 文本 → 多模态(解决文本偏置)
↓
2025 GemiRec → 召回: 单兴趣 → 多兴趣(RQ-VAE 证明 > 软正则化)
↓
2025 GenRank → 精排: 判别式 MLP → 生成式 Transformer(证明是架构而非训练)
↓
2025 IDProxy → 冷启动: 随机 → MLLM 对齐(两阶段粗→细)
↓
2025 GRM+SAM → 搜索排序: 黑盒标量 → CoT 推理 + RL
↓
2026 QP-OneModel → 搜索 QP: N 个 BERT → 1 个统一 LLM
10.2 反复出现的技术模式¶
| 模式 | 出现的论文 | 含义 |
|---|---|---|
| 对比学习构建 embedding | NoteLLM, NoteLLM-2, IDProxy, GemiRec | 推荐系统 embedding 学习的标准范式 |
| GRPO > PPO | GRM+SAM, QP-OneModel | 小红书全面选择 GRPO 做 RL,原因是避免值函数估计偏差 |
| 大模型训练 → 小模型上线 | GRM+SAM (32B→0.1B), QP-OneModel (8B serving) | 工业落地的标准模式 |
| 生成任务辅助表示学习 | NoteLLM (hashtag 生成增强 embedding), QP-OneModel (intent desc 作为 CoT) | 生成不是目的,而是手段 |
| 消融实验驱动决策 | GenRank (架构 vs 训练), GemiRec (Voronoi vs 正则化) | 不是「我们提出了 X」,而是「我们证明了为什么 X 比 Y 好」 |
| 结构复用 > 另起炉灶 | IDProxy (注入现有 CTR 模型), QP-OneModel (替换信号而非替换系统) | 增量部署,降低风险 |
10.3 每个阶段的「驱动力 → 技术回应」映射¶
| 驱动力 | 技术回应 | 时间 |
|---|---|---|
| BERT 语义理解弱 | NoteLLM: LLM embedding | 2024 |
| 图文平台丢视觉信息 | NoteLLM-2: 多模态 + 解决文本偏置 | 2024 |
| 单向量无法表达多兴趣 | GemiRec: RQ-VAE 量化字典 | 2025 |
| MLP 排序范式到顶 | GenRank: 生成式架构(证明因果掩码是关键) | 2025 |
| 新笔记冷启动 | IDProxy: MLLM proxy + 结构复用 | 2025 |
| 黑盒相关性无法处理复杂语义 | GRM: CoT 推理 + SAM process RL | 2025 |
| 独立 QP 模型误差传播 | QP-OneModel: 统一生成式 + 三阶段对齐 | 2026 |
10.4 数据效率的进步¶
| 论文 | 关键数据效率发现 |
|---|---|
| GRM+SAM | 150K SFT + 50K RL 超过 1M SFT-Label |
| QP-OneModel | 0.6B 模型超过 BERT pipeline,8B 超过 32B 通用模型 |
| NoteLLM | α=0.01 的生成损失就足以显著提升 embedding |
| GemiRec | K-means 初始化将字典利用率从 21.6% 提到 93.3% |
10.5 尚未公开的技术细节(Gap 分析)¶
下一步:通过搜索 REDtech 博客(CSDN/知乎/InfoQ)、DataFun 会议分享、招聘 JD 等补充以下 Gap
| Gap 领域 | 已知线索 | 未知细节 | 可能信源 | 状态 |
|---|---|---|---|---|
| 精排多目标融合 | GenRank 架构提到多任务 | 多少 head、权重设置、loss 平衡策略 | REDtech 博客、知乎 | 🔍 待搜索 |
| 实时特征 / Feature Store | GenRank:「实时窗口特征仍有价值」 | 特征工程细节、Feature Store 架构、特征更新频率 | REDtech 博客、招聘 JD | 🔍 待搜索 |
| 粗排架构(2024后) | 王树森课: 三塔粗排 | 是否升级到生成式?当前粗排模型架构 | 会议分享、博客 | 🔍 待搜索 |
| 重排策略(2024后) | SSD (2021) | SSD 之后是否有新算法?与 GenRank 的协同 | 博客、DataFun | 🔍 待搜索 |
| 广告排序架构 | IDProxy 部署在广告 | 广告排序模型完整架构、竞价机制 | 博客、专利 | 🔍 待搜索 |
| 在线学习 / ODL | 百亿参数分钟级更新 | 框架选择、增量更新 vs 全量、一致性保证 | 博客、知乎 | 🔍 待搜索 |
| 用户建模 / 长期画像 | GemiRec 多兴趣 | 长期兴趣 vs 短期兴趣、生命周期管理 | 博客 | 🔍 待搜索 |
| 探索 / 利用策略 | 冷启动流量调控 | 具体 exploration 算法(ε-greedy? Thompson? LinUCB?) | 博客 | 🔍 待搜索 |
附录 A:论文间引用关系¶
NoteLLM (2024.03)
└─→ NoteLLM-2 (2024.05) [继承 Note Compression Prompt + GCL]
└─→ IDProxy (2026.03) [对比:NoteLLM-2 类 embedding 只 +0.015%]
GenRank (2025.05)
└─→ 引用 HSTU (Meta) [对比,证明 Action-Oriented > Item-Oriented]
└─→ IDProxy 受益 [GenRank 对冷启动 item 提升显著]
GRM+SAM (2025.12)
└─→ QP-OneModel (2026.02) [共享 GRPO 作为 RL 算法]
└─→ 共享 RedOne 基座模型
SSD (2021.07)
[独立于后续工作,重排阶段]
GemiRec (2025.10)
[独立的召回侧工作,与 NoteLLM 系列互补而非替代]
附录 B:方法论说明¶
⚠️ 本文档未调用 /research-fast skill,因此输出格式缺少以下标准 section:
- 信源可信度分级(A/B/C/D)
- 结构化证据记录(source / level / date / engagement)
- 交叉验证逻辑
- 信息冲突标记
- 推理链(事实 → 推理 → 结论)
- 置信度标注
信源说明:本文所有技术细节直接来自 arXiv 论文原文(通过 WebFetch HTML 版或 Jina Reader PDF 版读取),属于 A 级信源(学术论文,可验证)。王树森公开课内容来自 GitHub repo(B 级,前员工个人分享)。演进时间线中 2019-2022 的部分基于会议分享和博客的二手资料推断(B-C 级),部分日期为推测。
后续补充 Gap 时将使用 skill 标准格式。