跳转至

小红书推荐系统论文深度研读

调研日期:2026-03-27 | 作者:Cindy + Claude Opus 4.6 高层时间线和信息来源全景见:2026-03-27_xiaohongshu-recsys-research-snapshot.md


阅读说明

按小红书推荐系统的发展时间线排列,从最早的公开论文到最新的系统。每篇论文提取: - Why:什么业务/技术问题驱动了这个工作 - What:核心架构和关键创新 - How well:离线 + 在线实验结果 - So what:对系统演进的意义


目录

  1. SSD (KDD 2021) — 重排/多样性
  2. NoteLLM (WWW 2024) — 召回 I2I, BERT → LLM
  3. NoteLLM-2 (KDD 2025) — 召回 I2I, 文本 → 多模态
  4. GemiRec (2025.03 部署) — 召回, 单兴趣 → 多兴趣
  5. GenRank (KDD 2025 Workshop) — 精排, 判别式 → 生成式
  6. IDProxy (2025.03/08 部署) — 排序冷启动, MLLM proxy
  7. GRM + SAM (KDD 2026) — 搜索排序, RL
  8. QP-OneModel (2026 Q1 部署) — 搜索 QP, 统一生成式
  9. 王树森公开课框架 — Phase 1-2 经典架构基线
  10. 跨论文技术演进分析

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 浏览序列建模为时间序列,用频谱分解捕捉多样性。

轨迹张量构造

  1. 对浏览序列用滑动窗口(大小 w)生成重叠窗口
  2. 每个 item 映射到 d 维 embedding
  3. 得到三阶轨迹张量 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):同时做两个任务

  1. 对比学习(学 embedding):
  2. 正样本构造:用户共现打分 s(A→B) = Σ(1/Nᵢ),取 top-10
  3. Batch size = 64 对(128 篇笔记),in-batch negatives
  4. 温度 τ = 3(可学习)
  5. Loss: InfoNCE

  6. 生成任务(辅助监督):

  7. 40% batch 生成 hashtag,60% 生成类目
  8. 标准 autoregressive loss
  9. 权重 α = 0.01(很小,主要让生成任务「辅助」embedding 学习)

总 LossL = (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×(因为序列翻倍)
位置编码 可学习相对注意力偏置 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)
- Proxy 注入到现有 CTR 模型的特征交互和 target attention 模块 - Stage 2 中 MLLM 冻结,只更新 adaptor + 门控 + CTR 模型参数

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}

  1. 通用语义分析:query-note 语义比较、分类匹配、关键词匹配 → \boxed{s₁}
  2. 规则上界分析:领域特定规则(edge case),取最小上界 → \boxed{s₂}
  3. 最终反思:综合前两步,输出最终标签 → \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}
5 个子任务作为一个结构化序列生成,利用自回归的顺序依赖(NER → 分词 → 权重 → 分类 → 意图描述)。

三阶段渐进对齐

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 标准格式。