淘宝RecGPT:通过LLM增强推荐
导论
背景 (Background)
- 推荐系统的核心挑战:怎么 准确推断 用户行为背后快速变化的真实意图,以实现用户、商户和平台的三赢。
- 现有方法的局限性:传统的基于历史日志共现模式(“从点击学习点击”)的模型(如协同过滤、深度匹配、图神经网络等)存在根本性缺陷。它们缺乏对用户兴趣的显式理解,会强化历史模式,导致过滤气泡和马太效应,无法突破表面相关性。
- LLMs带来的新机遇:大型语言模型(LLMs)凭借其世界知识、语义理解和推理能力,为超越传统“日志拟合”推荐、真正理解用户动机提供了新的可能。然而,如何将其有效整合到大规模工业系统中仍是一个未解的难题。
方法 (Method)
研究者提出了 RecGPT 框架,其核心是一个由三个LLM驱动的闭环流水线:
- 用户兴趣挖掘 (User-Interest LLM):分析用户终身行为历史,显式生成简洁的自然语言兴趣画像。
- 物品标签预测 (Item-Tag LLM):基于上述兴趣,推理并生成描述用户所需物品的细粒度标签。
- 兴趣增强检索:将生成的标签注入检索阶段,将传统的双塔匹配架构扩展为用户-物品-标签三塔模型,仅召回与推断意图匹配的物品,从而将候选生成从协同过滤转变为兴趣增强过程。
- 解释生成 (Recommendation-Explanation LLM):为最终推荐项附加自然语言解释,实现从意图发现到透明交付的完整闭环。
贡献 (Contributions)
- 工业部署与实证效果:RecGPT已全量部署于淘宝首页“猜你喜欢”场景,取得了显著的性能提升(如CICD +6.96%, CTR +6.33%),并有效缓解了马太效应,验证了其在大规模场景下的实用性和商业价值。
- 范式转变:首次在工业级推荐系统中(服务超十亿用户和物品)成功部署了基于推理LLM的百亿规模基础模型,实现了从“学习点击”到“理解意图”的范式转变。
- 系统化的训练框架:提出了一套多阶段训练框架(从预对齐到自训练进化),利用LLM-as-a-Judge等技术解决LLM适应推荐任务的独特挑战,实现了高效、高质量的模型迭代。
RecGPT 工作流程
利用大型语言模型(LLMs)赋能推荐流程的多个关键阶段,通过基于推理的深度语义理解来突破传统协同过滤仅依赖“表面特征匹配”或“共现模式”的局限性。
四大组件
整个流程包含四个核心组成部分,形成一个从理解用户到生成解释的完整闭环:
用户兴趣挖掘 (User Interest Mining)
- 模块:LLMUI (用户兴趣LLM)
- 任务:对用户的终身多行为序列进行显式兴趣挖掘,识别多样化的用户兴趣模式,并生成自然语言形式的兴趣画像。
物品标签预测 (Item Tag Prediction)
- 模块:LLMIT (物品标签LLM)
- 任务:基于上游得到的用户兴趣,推理并预测出代表用户潜在偏好分布的“物品标签”。这些标签是描述用户可能想要的物品的细粒度文本。
物品检索 (Item Retrieval)
- 方法:基于标签的语义相关性检索
- 任务:将LLM预测出的抽象“物品标签”映射到平台内具体的商品。该方法的关键创新在于融合了两种信号:
- LLM驱动的语义洞察:深度理解标签背后的用户意图。
- 传统协同过滤信号:利用用户行为数据。
- 优势:实现了探索用户潜在多样兴趣和利用其固有行为模式之间的有效平衡。
推荐解释生成 (Recommendation Explanation Generation)
- 模块:LLMRE (推荐解释LLM)
- 任务:综合用户兴趣画像和最终推荐的物品,生成个性化、用户友好的自然语言解释,以此提升系统透明度和用户体验。
与传统方法的对比优势
与传统依赖隐式特征和最终反馈进行端到端优化的模型相比,RecGPT这种基于显式文本的、分阶段的建模方式具有两大关键优势:
- 可解释性与可监控性:每个阶段的输入和输出都是可读的文本,便于监控中间过程和各模块的性能。
- 易于优化与集成:将复杂流程分解为明确的子任务,允许专家知识介入,并能对单个组件进行独立的评估和精准优化,简化了端到端的优化过程。
用户兴趣挖掘 (User Interest Mining)
- 目标:克服传统推荐算法依赖固定、静态的隐式用户特征的局限性,利用LLMs的强大推理能力,对用户动态且复杂的兴趣进行显式建模(生成式用户画像)。
- 核心挑战:
- 上下文窗口限制:用户平均行为记录量巨大(淘宝超3.7万条),远超当前LLMs的上下文长度限制(如128K Token)。
- 领域知识鸿沟:通用LLMs缺乏对特定平台(如淘宝)领域知识的专业理解,难以像专家一样从原始数据中有效提取和抽象用户兴趣。
为应对上述挑战,RecGPT采用了一种两阶段的“可靠的行为序列压缩”方法,旨在减少输入长度、提升信息密度的同时,保留关键信息。
可靠行为提取 (Reliable Behavior Extraction)
- 目的:从大规模、多源的用户行为序列中过滤掉噪声和冗余信息,只保留能真实反映用户兴趣的高价值行为作为数据基础。
- 定义的高可靠性行为:
- 意向反馈行为:如“收藏”、“购买”、“加购”、“详细浏览商品页”、“阅读评论”等高参与度或深思熟虑的行为,能强烈表明用户兴趣和购买意图。
- 搜索行为:如“搜索查询”,代表用户有意识的探索,直接揭示了其特定意图。
- 排除的行为:普通的商品点击行为,因其包含大量噪声且对反映真实兴趣的效果较差。
分层行为压缩 (Hierarchical Behavior Compression)
- 目的:将过滤后的多源异构行为压缩成统一的序列格式,以适应LLMs的上下文窗口。
- 两个层次:
- 项目级压缩:使用LLM压缩每个商品的冗长详细信息,只保留核心属性(如名称、类目、品牌等),极大提升信息密度。
- 序列级压缩:采用一种两步聚合方法对用户行为序列进行压缩:
- 第一步:按时间-行为类型聚合:将用户行为按时间分区(日/月/年),并以“时间-行为类型”为键,聚合该时段内通过特定行为交互的所有商品。
- 第二步:按商品反向聚合:再以商品序列为键,反向聚合其对应的时间-行为组合。最终生成一种融合了时间行为模式和商品共现关系的高效压缩格式(如:
“时间1 (行为1, 行为2,...), 时间2 (行为1, 行为3,...) | 商品1, 商品2, ...”
)。
通过上述压缩流程,得到了信息密度更高、更精炼可靠的用户行为序列。
- 覆盖率:压缩后的序列能将98%的用户行为纳入LLM的128K上下文窗口(未压缩时仅为88%)。
- 效率:兴趣推理效率提升29%,显著降低了推理时间和计算成本,同时保持了完整的行为信息表达。
用户兴趣挖掘的任务对齐 (Task Alignment for User Interest Mining)
通过一个多阶段的对齐框架,将一个通用LLM培养成专精于用户兴趣挖掘任务、且与人类标准对齐的专用模型(LLMUI)。
三阶段训练框架
该框架通过循序渐进的方式提升模型能力:
阶段一:基于课程学习的多任务微调
- 目的:为通用LLM打下领域特定的基础能力。
- 方法:设计了16个预备子任务(1.63万样本),培养模型在关键信息提取、复杂用户画像分析和因果推理等多维度的能力。
- 关键:采用课程学习理念,根据任务难度和依赖关系进行拓扑排序,让模型由易到难地逐步掌握复杂任务。
阶段二:推理增强的预对齐
- 目的:获得高质量的训练数据,让学生模型(LLMUI)通过知识蒸馏达到与强大教师模型相当的性能。
- 方法:利用一个强大的推理模型(如DeepSeek-R1)作为“教师”,生成初始的9万条样本。经过人工精心筛选和提炼,得到一个包含1.9万条样本的高质量数据集,用于对学生模型进行微调。
阶段三:自训练进化
- 目的:突破模型的能力天花板,实现持续自我进化。
- 方法:让模型为自己生成训练数据(收集了2.11万条高质量样本),并用这些数据迭代优化自身,形成一个能力提升的反馈循环。
- 质量控制:采用 “Human-LLM协作” 的评判模式(LLM-as-a-Judge),利用LLM的能力进行初步的数据质量控制和评估,大幅提高了筛选效率,降低了人工成本。
提示工程与数据质量控制
- 提示工程:
- 设计了一个结构化的提示模板,以压缩后的行为序列和用户属性为输入。
- 模板中引入了思维链(CoT)推理,指导模型通过明确的逻辑步骤(而非直接猜测)来生成兴趣画像,提高了生成准确性。
- 数据质量控制协议:
- 为确保训练数据的高质量,制定了一套严格的二维评估标准来接受或拒绝模型生成的兴趣:
- 意愿性:区分兴趣是发自内心的自发喜好(✓ Spontaneity),还是出于外部需要的必要行为(✗ Necessity)。
- 合理性:评估兴趣与行为证据的相关性强度。分为:
- 强相关(✓):有明确、逻辑清晰的证据支持。
- 弱相关/无相关/幻觉(✗):证据不足、毫无联系或完全由模型虚构。
- 只有同时满足“自发意愿”和“强相关性”的兴趣才会被采纳为正确数据用于训练。
- 为确保训练数据的高质量,制定了一套严格的二维评估标准来接受或拒绝模型生成的兴趣:
效果验证与在线部署
- 人工评估实验:
- 结果:经过多阶段对齐后的专用模型(Qwen3-SFT)性能最佳,通过率达到77.28%,显著超过了其基础版本(59.74%)和强大的通用推理模型DeepSeek-R1(70.00%)。
- 结论:验证了本对齐框架在提升领域特定兴趣挖掘能力方面的有效性。
- 在线部署:
- 最终部署的模型(TBStars-SFT)在保持高能效比(稀疏MoE架构)的同时,达到了74.39%的通过率。
- 运作方式:模型离线运行,平均为每个用户预测16.1个兴趣。这些用户兴趣每两周更新一次,以确保能及时捕捉用户动态变化的个性化兴趣。
物品标签预测 (Item Tag Prediction)
基于LLM推断出的用户画像,来预测用户可能感兴趣的物品标签,从而指导后续的物品检索。其挑战在于让通用LLM适应推荐系统领域特定的要求。
采用与用户兴趣LLM类似的多阶段任务对齐框架(预对齐+自训练进化),并引入增量学习以使模型能持续适应变化的用户兴趣和新产品趋势。本节重点介绍了为物品标签预测任务专门设计的提示工程和数据质量控制方案。
提示工程
设计了一个复杂的提示模板,要求Item-Tag LLM (LLMIT) 根据用户画像和行为序列,以 “修饰词 + 核心词” 的格式(如“户外防水防滑登山靴”)生成标签集。
- 关键策略:采用基于思维链(CoT)的标签推理,以充分利用LLMs的推理能力。
- 核心约束:在提示中嵌入了多项严格约束,以确保生成的标签符合实际推荐需求:
- 兴趣一致性:标签必须与用户兴趣保持一致,避免推荐矛盾。
- 多样性增强:强制生成至少50个标签,以保证跨大类的多样化推荐,缓解过滤气泡。
- 语义精确性:标签需是语义聚焦的描述,排除模糊或过于宽泛的归类。
- 时效新鲜度:优先推荐新颖产品类别,系统性地避免重复推荐近期交互过的物品。
- 季节相关性:结合时间上下文,生成符合季节的适时推荐。
- 输出:模型最终生成一个三元组列表(标签, 关联的兴趣偏好, 推理依据),为后续流程提供丰富的信息。
数据质量控制
为确保训练数据的高质量,引入了多维拒绝采样标准来筛选模型生成的标签:
- 相关性:生成的标签是否与用户的关联兴趣直接对齐。
- 一致性:标签的生成过程是否明确参考了用户的画像信息和历史行为数据(避免虚构或忽略给定信息)。
- 特异性:评估标签的特指程度,避免导致产品检索不精确的通用术语(如“时尚运动装备”)。
- 有效性:预测的标签是否对应实际存在的商品,防止生成不存在的标签。
- 只有同时满足所有标准的标签才会被采纳为合格样本用于训练,否则将被标记为不合格并过滤掉。
效果验证
通过人工评估验证任务对齐方法的有效性(一个标签需满足上述所有标准才算合格)。
- 结果:
- 基础模型能力不足:Qwen3-Base的通过率仅为33.70%,表明直接将基础LLM用于此任务存在巨大局限。
- 对齐框架有效:经过多阶段对齐的模型(Qwen3-SFT: 84.80%; TBStars-SFT: 88.80%)性能显著超越了强大的通用推理模型DeepSeek-R1 (80.00%)。
- 最佳模型:TBStars-SFT以88.80%的通过率表现最佳,同时其低延迟推理的额外优势使其特别适合对预测质量和计算效率都有要求的工业推荐系统。
- 结论:验证了通过从强模型进行知识蒸馏和自训练进化的方法,能让较小规模的语言模型逐步接近并最终超越大型推理模型的性能。
增量学习 (Incremental Learning)
目标与挑战
- 目标:为了使Item-Tag LLM (LLMIT) 能够适应动态变化的用户兴趣和在线环境中的数据分布偏移(如季节性变化),采用每两周一次的增量学习方法来更新模型。
- 挑战:真实在线数据存在两大关键问题:
- 大量噪声:如误点击或促销干扰,不能代表真实用户偏好。
- 固有不平衡:主流兴趣标签会主导训练,可能导致推荐多样性下降、加剧过滤气泡和马太效应。
为解决上述挑战,设计了一个三步流程来处理在线用户行为数据,以生成高质量的增量训练数据:
数据净化
- 方法:利用一个强大的LLM(QwQ-32B)作为自动化评判员,依据相关性(行为与用户兴趣的一致性)和时效性(商品是否符合当前或即将到来的季节)标准,过滤掉低质量的交互记录。
- 目的:最大限度地减少随机点击和瞬时行为带来的噪声,确保训练数据的高质量。
兴趣补全
- 方法:使用QwQ-32B对给定的用户信息进行深度推理,为每个有效的用户交互行为推断出其背后的兴趣偏好和理由,形成结构化三元组输出
(标签, 关联的兴趣偏好, 推理依据)
。 - 标签来源:直接使用用户实际交互的商品标题作为标签。
- 目的:将原始的用户行为数据转化为适合模型训练的结构化样本。
- 方法:使用QwQ-32B对给定的用户信息进行深度推理,为每个有效的用户交互行为推断出其背后的兴趣偏好和理由,形成结构化三元组输出
数据平衡
- 方法:采用两阶段重采样策略:
- 第一阶段(用户内):为每个用户随机选择最多80个标签对应的行为记录,以确保数据多样性和代表性。
- 第二阶段(类别平衡):利用一个预训练的 “标签-类别”映射模型 𝜙(·),将物品标签转换为更粗粒度的类别标签。然后基于类别进行二次采样,确保每个类别的样本数大致相等(实验中每类别最多采样2个)。
- 目的:解决数据固有的不平衡问题,防止模型偏向于主流类别。
- 方法:采用两阶段重采样策略:
效果评估
- 评估指标:设计了 HR@30 指标。该指标计算的是,对于测试用户,其接下来真实交互物品的类别是否出现在模型预测的30个标签所对应的类别集合中。命中则为1,否则为0。
- 实验结果:在真实在线数据上,经过上述清洗和平衡处理后的数据进行增量学习,使模型的HR@30指标相比未进行增量学习的基线模型提升了1.05%。
- 结论:这一显著的提升验证了增量学习策略在适应变化的用户偏好和新产品趋势方面的有效性。在大规模复杂的现实推荐场景中,即使是微小的增益也能带来巨大的商业影响。该策略帮助模型学习用户最新偏好,避免重复推荐过时产品,实现了工业推荐系统的每周优化。
物品标签预测模块是做什么的?
该模块的核心任务是充当一个“翻译官”和“预言家”,它将上游生成的、抽象的用户兴趣画像(例如:“喜欢户外运动”、“注重护肤”)转化为下游检索系统能够直接使用的、具体的物品描述标签(例如:“户外防水防滑登山靴”、“美白保湿精华液”)。
其根本目的是弥合“用户意图”和“具体商品”之间的鸿沟,为后续的物品检索提供精确的、多样化的查询信号,从而打破传统协同过滤仅依赖历史共现模式的限制,实现基于深度语义理解的兴趣增强检索。
输入与输出
输入 (Input):
模型 LLM_IT
的推理是一个多模态的输入过程,综合了用户的多方面信息:
- 用户属性 (Aₑ): 从用户信息中提取的静态特征,如年龄、性别、地理位置等。
- 用户兴趣 (Iₑ): 由上游
LLM_UI
生成的、简洁的自然语言兴趣画像列表(例如:[“网球”, “智能家居”, “轻奢穿搭”]
)。 - 用户行为序列 (Sₑ): 经过压缩和清洗的多类型历史交互序列,包括:
- 点击行为序列
- 购买行为序列
- 搜索行为序列
- 额外信息 (Extra Information): 可能包括时间戳(用于季节相关性)、上下文信息等。
- 提示模板 (P_IT): 一个精心设计的指令模板,规定了任务角色、输出格式以及一系列强制性约束(多样性、精确性、新鲜度等)。
输出 (Output):
模型的输出不是单一的标签,而是一个结构化的、富含信息的三元组列表。每个三元组包含:
- 标签 (Tag): 以 “
修饰词 + 核心词
” 格式生成的具体物品描述(例如:“专业级全画幅微单相机
”)。这是核心输出,用于后续检索。 - 关联的兴趣偏好 (Associated Interest Preference): 阐明生成该标签是源于用户的哪一个或哪几个兴趣(例如:“源于您的‘摄影创作’兴趣”)。这增强了模型的可解释性。
- 推理依据 (Rationale): 提供模型生成该标签的思维链(Chain-of-Thought),列举其从用户行为和历史中看到的支持证据(例如:“依据:您近期多次搜索了‘索尼A7CII’并收藏了多款全画幅镜头”)。
最终输出为: Tₑ = { (Tag₁, Preference₁, Rationale₁), (Tag₂, Preference₂, Rationale₂), ... }
损失函数设计思路
训练 LLM_IT
的本质是监督式微调(Supervised Fine-Tuning, SFT)。其目标是让模型学会在给定输入(用户信息+指令)的情况下,生成符合规定格式和质量要求的三元组文本。
因此,最直接且高效的损失函数是 Next Token Prediction(下一个令牌预测)损失,即标准的语言建模损失。
具体设计:
训练数据格式: 将每个高质量的训练样本构建为一个
(Prompt, Completion)
对。Prompt
: 即上述的输入部分(用户属性、兴趣、行为序列等被填充到提示模板P_IT
中后形成的完整文本)。Completion
: 即期望模型生成的、符合输出格式要求的结构化三元组文本。
损失计算:
- 将
Prompt
输入模型,让模型自回归地(autoregressively)生成Completion
。 - 损失函数计算模型预测的下一个token与真实
Completion
序列中下一个token的交叉熵(Cross-Entropy)。 - 公式化表示:
Loss = - Σ [y_i * log( P(ŷ_i | x, ŷ_<i) ) ]
x
: 输入提示(Prompt)。ŷ_<i
: 模型已生成的前序token。ŷ_i
: 模型在位置i
预测的token分布。y_i
: 真实Completion
在位置i
的one-hot编码标签。
- 将
关键实现细节:
- 仅计算Completion部分的损失:在计算损失时,通常会对
Prompt
部分的token进行掩码(mask),确保损失只来自于对Completion
部分的预测,迫使模型专注于学习如何生成正确答案,而不是学习如何复制输入。 - 反射射质量约束:提示模板中规定的强制性约束(如多样性、精确性等)和数据质量控制标准(如相关性、一致性等)并不直接体现在损失函数中。这些约束是通过精心构建高质量训练数据来实现的。模型通过在这些高质量数据上进行SFT,间接学会遵守这些约束。这是一种“通过数据设计进行约束”的策略。
- 仅计算Completion部分的损失:在计算损失时,通常会对
物品标签预测模块的训练采用标准的语言建模损失(下一个token预测的交叉熵损失)。其核心技巧在于通过极其精细的提示工程和数据质量控制流程,来构建高质量的 (Prompt, Completion)
训练样本对。模型通过学习这些样本,最终获得遵循复杂指令、输出高质量结构化内容的能力。损失函数本身是简单而通用的,真正的创新在于如何为它准备“教科书”般的训练数据。
为什么不能直接使用Prompt?
RecGPT中的LLM(LLM_UI和LLM_IT)是经过了大量专门训练的,而不仅仅是直接使用现成的LLM加上Prompt(零样本/少样本学习)。
直接使用Prompt(即所谓的“开箱即用”)和进行专门的训练,是两种完全不同的技术路径。RecGPT选择了后者,原因如下:
- 领域知识鸿沟:通用LLM(如ChatGPT、LLaMA)是在广泛网络文本上训练的,它们缺乏对淘宝特定商品、用户行为模式、行业术语的深度理解。直接使用Prompt,模型可能无法准确理解“收藏”、“加购”这些行为在电商领域的权重,或者无法生成“修身显瘦法式小众衬衫”这类精确的商品标签。
- 上下文长度限制:用户的终身行为序列极其漫长,经过压缩后信息密度很高。直接将这些专业压缩格式的序列扔给通用LLM,它可能无法有效理解这种特殊格式的输入,导致推理能力下降。
- 输出格式与控制:RecGPT要求输出非常结构化、标准化的三元组(标签、关联兴趣、理由)。虽然可以通过Prompt指令要求格式,但未经专门训练的通用LLM更容易出现格式错误、忽略某些约束(如必须生成50个标签),或生成模糊、无效的标签。
- 成本与延迟:为每个用户每次推理都发送极长的行为序列给云端巨型LLM(如GPT-4),其成本和延迟在工业级场景中是不可接受的。RecGPT需要部署专属的、优化后的模型。
RecGPT是如何训练的?(文中提到的训练方法)
文本中清晰地描述了一个多阶段的、系统的训练框架,旨在将通用LLM变成领域专家(LLM_UI和LLM_IT)。主要包括:
课程学习-based 多任务微调:
- 目的:给模型打下领域基础。不是直接教它“生成用户兴趣”,而是先教它一些基础技能,如关键信息提取、复杂画像分析、因果推理等。
- 方法:设计16个预备子任务,按难度和依赖关系排序(课程学习),让模型循序渐进地掌握这些技能。
推理增强的预对齐:
- 目的:获得高质量的训练数据。用一个强大的“教师模型”(如DeepSeek-R1)来为大量样本生成“标准答案”。
- 方法:人工精心筛选和提炼教师模型生成的答案,构建一个高质量的SFT数据集,用于训练“学生模型”(LLM_UI/IT)。这是一种知识蒸馏。
自训练进化:
- 目的:突破模型性能天花板,实现持续迭代。
- 方法:让训练好的模型自己生成数据,再用这些数据来训练自己,形成一个“自我提升”的循环。为了确保生成数据的质量,采用 “Human-LLM协作” 的评判系统(LLM-as-a-Judge)来进行自动化质量控制和评估。
结论:Prompt与训练的关系
在RecGPT中,Prompt工程和模型训练不是对立的,而是相辅相成的。
- Prompt的作用:是一个精妙的指令和约束框架。它定义了任务的输入、输出格式、以及所有必须遵守的规则(多样性、精确性等)。它是目标的蓝图。
- 训练的作用:是通过大量数据教会模型如何理解和执行这个复杂的Prompt指令。训练让模型将Prompt中的约束内化为其自身的能力。高质量的Prompt是生成高质量训练数据的前提,而训练是让模型可靠执行Prompt指令的手段。
可以这样理解:
Prompt是“考卷上的题目”,而训练就是“给学生(模型)进行系统的考前辅导”,确保它看到题目时能给出最符合要求的答案。
直接拿考卷给一个没复习过的学生(零样本Prompt),他可能考不及格。而RecGPT的做法是对学生进行了一系列针对性的、系统的培训(多阶段训练),确保他能拿高分。这才是其能在工业场景中成功部署的关键。
物品检索 (Item Retrieval)
物品检索模块的核心任务是搭建一座桥梁,将上游LLM生成的、抽象的语义标签(Tag) 与平台内具体的商品(Item) 连接起来。
它解决了“语义鸿沟”问题:即虽然LLM能理解用户想要“户外防水防滑登山靴”这个概念,但如何从数十亿商品中快速、准确地找到所有符合这个描述的具体商品。
为了实现这个目标,该模块没有抛弃传统的协同过滤方法,而是创新性地将语义信号与协同信号相结合,形成了一个统一的用户-物品-标签三塔检索框架。
输入与输出
- 输入 (Input):
- 用户特征 (F𝑢):用户ID及其多行为交互序列(点击、购买等)。
- 物品特征 (F𝑣):物品的稀疏特征(ID、类目、品牌等)和稠密特征(价格、销量等)。
- 标签文本 (𝑇):由上游LLM_IT生成的物品标签(如“户外防水防滑登山靴”)。
- 输出 (Output):
- 最终输出是一个融合分数 (ŷfinal),用于对候选物品进行排序和检索。
- 这个分数由两部分线性融合而成:
- 协同分数 (ŷcol):衡量用户与物品之间的行为协同相关性。
- 语义分数 (ŷsem):衡量标签与物品之间的语义相关性。
模型架构(三塔结构)
框架包含三个并行的神经网络塔,分别学习用户、物品和标签的向量表示:
- 物品塔 (Item Tower):
- 输入:物品的原始特征(ID、类目、品牌、价格等)。
- 处理:通过嵌入层和深度神经网络(DNN)将特征转换为一个稠密的物品向量表示 h𝑣。
- 用户塔 (User Tower):
- 输入:用户ID和其历史行为序列。
- 处理:将用户ID嵌入,并对行为序列中的物品向量进行池化,再通过DNN得到用户向量表示 h𝑢。
- 标签塔 (Tag Tower):
- 输入:标签文本(如“户外防水防滑登山靴”)。
- 处理:将标签分词后,对每个词的嵌入向量进行平均池化,再通过DNN得到标签的向量表示 h𝑡。
分数计算:
- 协同分数:
ŷcol = h𝑢 𝑇 * h𝑣
(用户向量与物品向量的内积) - 语义分数:
ŷsem = h𝑡 𝑇 * h𝑣
(标签向量与物品向量的内积)
损失函数设计
训练过程通过多个损失函数共同优化,确保模型同时学好协同匹配和语义匹配。
协同优化损失 (Lcol):
- 目标:拉近用户与其点击过的物品的距离,推远用户与未点击物品的距离。
- 方法:采用基于负采样的对比学习(类似BPR或Softmax交叉熵损失)。
- 公式:
Lcol = - Σ log( exp(ŷcol_positive) / (exp(ŷcol_positive) + Σ exp(ŷcol_negative)) )
语义优化损失 (Ltag):
- 目标:拉近标签与其对应物品的距离,推远标签与随机其他物品的距离。
- 方法:同样采用对比学习。正样本是(标签,点击物品),负样本是(标签,其他随机物品)。
- 公式:
Ltag = - Σ log( exp(ŷsem_positive) / (exp(ŷsem_positive) + Σ exp(ŷsem_negative)) )
类别对比损失 (Lcate):
- 目标:让模型学习更细粒度的语义区分。例如,让模型能区分同是“靴子”类别下的“登山靴”和“雪地靴”,而不仅仅是区分“靴子”和“衬衫”。
- 方法:对于一个(标签,物品)对,从该物品的相同类别中采样正样本,从不同类别中采样负样本,再进行对比学习。
- 公式:
Lcate = - Σ log( exp(h𝑡 𝑇 h𝑣₊) / (exp(h𝑡 𝑇 h𝑣₊) + Σ exp(h𝑡 𝑇 h𝑣₋)) )
最终总损失 (LTAR):
- 是上述所有损失的加权和,同时优化协同和语义两种能力。
- 公式:
LTAR = Lcol + α * Ltag + (1 - α) * Lcate
- 其中
α
是超参数,用于平衡Ltag
和Lcate
。
在线推理
在线服务时,系统动态融合用户塔和标签塔的输出向量,形成一个最终的融合向量用于检索:
h_fuse = β * h𝑢 + (1 - β) * h𝑡
这等价于计算最终分数:ŷfinal = β * ŷcol + (1 - β) * ŷsem
- 超参数
β
:是关键的控制旋钮。通过调整β
,可以灵活地控制推荐结果的倾向性:β
接近 1:推荐结果更偏向于传统的协同过滤(“和你行为相似的人喜欢什么”)。β
接近 0:推荐结果更偏向于LLM推理的语义理解(“我们认为你现在可能想要什么”)。- 这种设计使得系统能在“挖掘用户固有偏好”和“探索用户潜在新兴趣”之间取得平衡。
个性化解释生成 (Personalized Explanation Generation)
该模块是RecGPT系统的“用户体验优化器”。它的核心任务不是提升匹配精度,而是为最终推荐给用户的商品生成个性化的自然语言解释,直接回答用户心中的问题:“为什么给我推荐这个?”。
通过提供透明、合理且贴合用户个人兴趣的推荐理由,该模块旨在增强用户对推荐系统的信任感、理解度和满意度,从而进一步提升整体体验。
输入与输出
- 输入 (Input):
- 用户兴趣 (Iₑ):由上游用户兴趣LLM (LLM_UI) 生成的用户兴趣画像列表(例如:
[“户外运动”, “智能家居”]
)。 - 物品信息 (Infoᵥ):被推荐商品的相关信息,主要包括:
- 商品标签(由LLM_IT生成)
- 商品标题
- (可能包含)其他关键特征
- 日期信息:当前日期,用于生成具有季节相关性的解释(如“秋冬将至”)。
- 用户兴趣 (Iₑ):由上游用户兴趣LLM (LLM_UI) 生成的用户兴趣画像列表(例如:
- 输出 (Output):
- 一段个性化、自然流畅的推荐解释文本 (Eₑ)。
- 示例:假设用户兴趣是“网球”,推荐商品是网球拍,生成的解释可能是:“根据您对网球的浓厚兴趣,为您推荐这款专业级网球拍,助您提升球场表现。”
实现方式:任务对齐与离线生产
为了实现高质量且低延迟的解释生成,该模块采用了两大策略:
1. 任务对齐 (Task Alignment):
与LLM_UI和LLM_IT类似,推荐解释LLM (LLM_RE) 也经历了多阶段训练(推理增强的预对齐 + 自训练进化),使其从通用聊天机器人为变成专精于生成推荐解释的“领域专家”。
- 提示工程:设计了复杂的提示模板,要求模型执行两步推理:
- 上下文理解:分析给定的用户兴趣和商品信息。
- 解释生成:基于分析结果,如果存在合理关联,则生成对话式的解释;否则则基于商品自身特性生成解释。
- 数据质量控制:采用多维拒绝采样来确保训练数据的高质量,标准包括:
- 相关性:解释是否同时关联了商品特性和用户兴趣。
- 真实性:解释是否准确反映了商品的真实特性。
- 清晰度:文本是否流畅、语法正确、风格得体。
- 安全性:生成内容是否不含敏感或个人身份信息。
- 效果:经过对齐的专用模型(Qwen3-SFT)的通过率高达95.8%,显著超过了其基础版本(30%)和强大的通用模型DeepSeek-R1(92.7%)。
2. 离线生产 (Offline Production):
这是解决延迟和成本问题的关键工业设计。
- 挑战:为每个用户-商品对实时调用LLM生成解释,计算开销巨大,无法满足线上低延迟要求。
- 解决方案:
- 建立映射:利用预训练的 “标签-类别”模型 (φ(·)),将抽象的物品标签映射到具体的商品类别。
- 离线计算:不再为用户-商品对生成解释,而是为 “兴趣-类别”对 生成解释。例如,为“{户外运动兴趣} -> {登山靴类别}”这个组合生成一个通用的解释模板。
- 构建查询表:将所有“兴趣-类别”对应的解释预先计算好,存储在一个巨大的 “兴趣-物品-解释”查询表 中。
- 在线服务:线上推荐时,系统根据当前用户的兴趣列表和被推荐商品的具体类别,直接从预先生成的查询表中毫秒级检索出对应的解释,附在推荐结果上返回给用户。
核心价值
该模块通过离线化和查询表的工程设计,巧妙地平衡了LLM生成内容的质量与工业系统对延迟和成本的苛刻要求,最终实现了在不影响用户体验的前提下,为亿级用户提供个性化、可解释的推荐服务。
Human-LLM协同评判系统
目标与挑战
- 目标:确保LLM在推荐生成任务(用户兴趣挖掘、物品标签预测、推荐解释生成)中的输出符合人类的主观期望。需要一种能够大规模、低成本、高效地进行质量评估的方法。
- 挑战:
- 认知偏差:推荐系统需要理解复杂的用户行为、产品特征和运营策略,这要求领域特定知识。原生LLM因知识局限和预训练偏差,在评估时存在认知偏差,可靠性不足。
- 时序失配:推荐生态系统是动态变化的,而静态的LLM评判员会与 evolving 的现实世界条件脱节。这体现在三个方面:
- 变化的用户行为模式
- 动态的物品特性(新品类、新特征)
- 更新的评估标准(变化的业务策略和质量标准)
- 这些动态变化会逐步削弱静态LLM评判员的评估能力,引入系统性偏差。
核心解决方案:Human-LLM协同评判系统
为了应对上述挑战,提出了一个混合框架,其核心思想是:通过人类专家和LLM评判员的协作来增强评估能力,并集成“人在回路”的监督机制,以监控性能并根据需要触发重新对齐。
该系统由两个关键部分组成:
LLM-as-a-Judge (LLM作为评判员)
- 目的:让LLM学会像人类一样对推荐生成任务的结果进行质量评估,实现自动化评估以降低成本和提高效率。
- 方法:
- 数据集构建:构建一个人工标注的评估数据集用于微调LLM评判员。
- 任务类型:包括二元分类评估(如相关/不相关)和多级评估(如优秀/良好/差)。
- 数据来源:从预对齐阶段(DeepSeek-R1生成的数据)和自训练阶段(任务专用LLM自生成的数据)收集样本,并进行人工质量评估标注。
- 数据重平衡策略:为解决收集到的评判员训练数据中存在的严重类别不平衡问题(导致模型偏向多数类),设计了:
- 少数类增强:累积利用多轮先前的人工标注样本来增强 underrepresented 类别的数据。
- 近期优先降采样:对主导类别,采用基于时间衰减的降采样策略,优先保留最近的评估样本,有效平衡不同类别的样本数量。
- 此策略旨在从数据层面提升评判员模型,特别是对少数类的评估准确性。
- 数据集构建:构建一个人工标注的评估数据集用于微调LLM评判员。
Human-in-the-Loop (人在回路)
- 目的:解决LLM评判员因动态数据分布变化而导致的可靠性下降问题,确保其能持续适应 evolving 的评估标准。
- 方法:采用基于里程碑的人工监督框架。
- 在主要版本更新时:
- 收集专家标注:邀请专家对近期生成的新样本进行标注。
- 系统对比:系统性地比较LLM评判员的评估结果与人类专家的评估结果。
- 触发再训练:当检测到性能显著下降时,使用新标注的数据对LLM评判员进行有针对性的微调,使其与最新的数据分布和标准重新对齐。
- 这形成了一个监督-检测-修正的闭环,在保持运营效率的同时确保了评估的持续可靠性。
- 在主要版本更新时:
系统价值
通过将自动化的LLM评判员评估与战略性的“人在回路”监督相结合,建立了一个强大且稳健的协同评判系统。这个混合框架实现了:
- 可靠的、大规模的数据管理和模型性能监控。
- 在评估准确性和运营效率之间取得了最佳平衡。
- 为整个RecGPT系统各模块的持续、高质量迭代提供了至关重要的质量保障基础。
第三章不是对第二章的简单强调,而是提出了一个更高阶、系统化的“质量保障体系”。 它解决的问题和第二章不同,并且这个“评判LLM”是一个独立的、新训练的模型,不是第二章里那些用于生成任务的LLM(LLM_UI, LLM_IT, LLM_RE)。
1. 目标不同:生成 vs. 评判
- 第二章的LLM (LLM_UI, LLM_IT, LLM_RE):是“运动员”。它们的任务是生成内容,例如从用户行为中“挖掘”出兴趣,或根据兴趣“预测”物品标签,或“生成”解释。
- 第三章的LLM (LLM-as-a-Judge):是“裁判员”。它的任务不是生成内容,而是对“运动员”生成的内容进行质量评估和打分。它的输入是一段文本(例如LLM_IT生成的一堆标签),输出是一个评估结果(如“相关”/“不相关”,或“优秀”/“良好”/“差”)。
2. 功能互补:创造与检验
可以这样理解整个流程:
- 生成阶段(第二章):LLM_IT这个“运动员”负责跑出去(生成标签)。它通过第二章的“训练”(预对齐、自训练)变得很强壮,但它自己不知道自己跑得好不好。
- 评判阶段(第三章):LLM-Judge这个“裁判员”在旁边看。它拿着一个“评分手册”(人类标准),给运动员的表现打分(评估标签质量)。如果运动员这次跑歪了(生成了垃圾标签),裁判就举红旗(标记为不合格样本)。
第三章的核心思想是: 我们训练一个专门的、高质量的“裁判员”(LLM-Judge),让它能自动化地、大规模地去执行第二章中原本需要大量人工来完成的数据质量筛选工作。
为什么需要独立的“裁判员”?
既然第二章的模型已经训练得很好了,为什么不能让它自己检查自己?这是因为:
- 角色冲突:一个模型很难既当“运动员”又当“裁判员”。生成模型的目标是“创造”,它倾向于认为自己的输出都是好的。而评判模型的目标是“批判性检验”,需要不同的思维模式。
- 专业化:评判任务本身就是一个独立的NLP任务(文本分类/质量评估)。专门为这个任务训练一个模型,效果远好于让生成模型兼做评判。
- 效率:在一个迭代过程中,我们固定使用一个训练好的“裁判员”LLM-Judge,可以高效地评判成千上万条由“运动员”LLM新生成的数据,从而加速自训练的循环。
总结
- 第二章:讲的是如何训练出好的生成模型(LLM_UI, LLM_IT, LLM_RE)。其中提到要用高质量数据训练,但最初的数据筛选依赖昂贵的人工。
- 第三章:讲的是如何训练出一个好的评判模型(LLM-Judge),并用这个“裁判员”来替代大部分人工,实现自动化、大规模的质量评估,从而支撑第二章的生成模型能持续进行高效的“自训练进化”。
所以,Human-LLM Cooperative Judge 是一个全新的、系统级的组件,它不是一个LLM,而是一套由人类制定标准、LLM(Judge)执行自动化评估、人类进行最终监督和校准的协同系统。它是工业界将LLM应用于大规模生产环境时,为保证质量与效率而必不可少的基础设施。