LLM 用户画像在大规模推荐中的实时生成

2026-06-11 论文精读同步页

Paper NoteIndustrial RecPersonaLLM4Rec

LLM-Based User Personas for Recommendations at Scale

这篇论文讨论的是 Google DeepMind / Google 如何把 LLM 生成的自然语言用户画像接入十亿级视频推荐平台。论文入口是 arXiv:2606.12198。它的重点不是证明“LLM 能总结兴趣”,而是回答一个更难的问题:自然语言 persona 怎样在低延迟、高成本约束和成熟推荐链路里真正产生线上收益

核心矛盾:推荐系统已有 ID、embedding、序列模型和高性能召回栈,但这些表示难解释、难主动探索;LLM 能生成可读兴趣,却不能同步塞进每次请求。论文的答案是把 persona 做成异步刷新、可缓存、可过滤、可蒸馏、可回退的生产语义特征。

1. 背景和问题

传统推荐链路擅长利用已有行为:用户看过什么、点过什么、相似 item 是什么,都可以被 ID 和 embedding 高效编码。但这类表示很难说清“用户为什么可能喜欢某个主题”,也很难主动从已知兴趣延展到相邻兴趣。LLM 的优势正好相反:它能把观看历史翻译成“孟加拉电视剧中的家庭情感线”这类自然语言兴趣,也能基于已有兴趣生成相邻探索主题。

难点在于,LLM 不能直接成为线上推荐主路径。十亿级视频平台的推荐请求有严格延迟预算,线上系统也已经拥有成熟召回、排序、安全和多目标策略。如果 persona 只是离线解释,它不会改变候选集合;如果 persona 能进入召回,它才可能改变系统看见哪些内容。 这也是论文把 summarized interests 和 exploration interests 同时放入系统的原因:前者负责 exploitation,稳定表达已知偏好;后者负责 exploration,提出新但相关的主题。

这篇工作真正处理的是三组工程约束。第一,输入要能被 LLM 理解,不能把冗长、重复、噪声高的观看序列直接扔给模型。第二,输出要能被机器稳定解析,不能只是一段漂亮但不可消费的自然语言。第三,服务架构要允许失败和过期:persona 生成失败、安全过滤拦截或数据过期时,推荐请求仍要能回退到旧 persona 或原有链路。

这也解释了它和许多 LLM4Rec 论文的差别。很多工作把用户历史转成文本后,让 LLM 做排序、点击预测或解释生成;这些方案在离线实验里能展示语义能力,但很少回答“请求来了是否等得起”“输出错了谁兜底”“新兴趣如何进入召回池”这些生产问题。UserPersonas 的写法更像系统论文:它承认 LLM 不是替代排序器,而是提供一个可缓存的语义中间层。

还有一个顺序差异很关键。若 persona 只在排序后解释结果,它最多给既有推荐补一句理由;若 persona 在候选生成前参与召回,它会改变下游排序能看到的内容集合。这就是论文值得精读的地方:它把自然语言兴趣从“解释层”前移到“候选生成层”。 后文的线上结果也围绕这个判断展开,尤其是 exploration interests 曝光少但条件观看率更高的现象。

具体到视频推荐,用户兴趣并不总是一个短期序列问题。一个人可能最近看体育集锦,但长期仍喜欢某类剧集、语言社区或生活方式内容;传统 recency-heavy 系统很容易把近期高频行为放大,把长期兴趣压到候选池外。LLM persona 的机会,是把这些分散行为重新整理成更高层语义,再作为召回查询进入系统。它不能保证排序一定放量,但至少能让下游模型重新看到一批原本不会被召回的候选。

这也带来一个风险:自然语言画像越可读,越可能触碰隐私和敏感推断。论文没有把 persona 做成用户可见档案,而是先作为内部召回信号,并配套 safety classifier 与旧 persona 回退。这个处理说明作者知道 persona 不是普通标签特征;它既有可解释优势,也会把原本隐藏在 embedding 里的敏感判断显性化。因此评价这篇论文时,不能只看 lift,还要看生成、过滤、存储和回退是否完整。

因此,UserPersonas 更像一个生产级用户建模框架,而不是 prompt demo。它把用户历史语义聚类、教师 LLM 生成、学生模型蒸馏、异步缓存、安全过滤和召回接入串成闭环。对于推荐系统读者,最值得看的不是单个模型指标,而是这个闭环怎样让 LLM 语义信号从“可读解释”变成“可服务特征”。

2. 方法

2.1 语义聚类用户历史输入

方法从用户历史压缩开始。LLM 需要的是可读、语义密度高、长度可控的输入;原始观看序列往往重复、长且噪声大。论文比较了 embedding-based clusters 和 semantic-based clusters:前者基于视频音频/视觉 embedding,适合捕捉感知相似性;后者基于 salient terms,把视频标题、上传者、描述、相关标题等文本信息压成语义词,再按相似度维护用户兴趣簇。

语义聚类的作用不是炫技,而是 token budgeting + noise reduction。 它把一串观看日志变成少数主题组,让 LLM 看到“若干兴趣簇”,而不是重复标题。这样既减少上下文成本,也能保留长期兴趣;系统只需要在 persona 刷新时采样簇内代表视频,而不必每次用户行为变化都重跑 LLM。

本文没有可复用的核心公式。论文没有给出新的 ranking loss 或核心优化公式,方法部分主要是工程数据流:构造语义簇、让教师模型生成 persona、过滤后蒸馏学生模型,再把输出写入可服务数据库。读这篇时应重点看接口设计,而不是期待一个可复用数学目标。

2.2 双目标 persona 生成与 prompt schema

LLM 的输出分成两类。summarized interests 总结用户已经表现出的稳定兴趣,服务 exploitation;exploration interests 从已知兴趣扩展出新但相关的主题,服务 exploration。两者必须同时存在:只做摘要会继续强化兴趣泡泡,只做探索又可能太发散,难以获得排序曝光。

PDF 附录给出了实现细节,比正文更能说明系统怎样落地。

  1. Prompt A.1:顺序历史摘要。 英文骨架是让模型作为 multilingual video-topic summarizer,根据观看视频元数据输出 [Group k]: **<Summarized Interest k>**: <Reasoning k>。它是离线对照:直接按时间顺序喂标题,容易得到宽泛兴趣,例如 “bengali tv shows”。
  2. Prompt A.2:聚类历史摘要。 输入变成若干 watched-video groups,模型对每个 group 单独总结并解释。这里的 group 是生产接口边界:每组可以独立存储、过滤、召回,也可以在低质量时单独丢弃。
  3. Prompt B.1:线上双目标 schema。 Task 1 生成用 **...** 包住的摘要兴趣和理由;Task 2 为每组生成 3 个用 &&...&& 包住的探索兴趣。这些符号不是排版细节,而是 parser 区分 exploitation query 与 exploration query 的机器边界。

从数据结构看,一条 persona 可以按用户和版本管理,内部包含多个 group;每个 group 至少有摘要兴趣、探索兴趣、生成时间、模型版本、安全状态和 TTL。reasoning 更适合离线审核和训练过滤,线上召回真正消费的是结构化兴趣短语。这个设计解释了为什么论文单独报告 Instruction Following Rate:如果模型少生成一个探索项、忘记 &&,或把解释和兴趣混在一起,下游就无法稳定解析。

2.3 教师数据、蒸馏与过滤

直接在线调用大模型成本太高,论文采用 teacher-student 路线。教师 LLM 负责高质量生成和多步 reasoning,学生模型负责实际在线推理。训练数据构造先筛选合格用户:用户需同意数据使用、有足够近期高满意度观看事件,并移除不安全或敏感视频;随后组织 semantic clusters,由教师生成摘要兴趣和探索兴趣,再经过评估过滤,最后划分训练集和评估集。

Figure 1:Training Data Collection with Multi-step Reasoning

Figure 1 说明了这条离线数据链路:用户历史先变成 video clusters,再进入 summarization 和 exploration prompts;教师输出不会直接进入训练集,而是先经过 Eval and Filter。多步 reasoning 的位置在离线教师数据构造,不在线上请求路径。 这能让训练样本更可审核,同时避免每次推荐请求承担大模型推理、解析和重试成本。图中保留 Training Prompts 也说明 student 学的不是自由问答,而是经过 schema 约束的双目标输出。

过滤至少发生在三层。输入层过滤不合格用户和敏感历史;教师输出层过滤格式、数量、安全性和低质量 response;线上输出层再用 safety classifier 检查 persona 文本。这样做的原因很直接:自然语言用户画像容易涉及敏感属性或隐私推断,如果等到召回后才处理,失败成本会扩散到推荐请求。

2.4 异步在线推理与成本控制

线上架构是论文最有价值的部分。用户访问时,系统先查 LLM Interest Personas Database;如果已有 persona 有效,就直接交给下游推荐;如果缺失或过期,再由 Persona Eligibility Verifier 判断是否触发后台刷新。Distillation Model 在后台生成新 persona,写回数据库,当前请求不等待这次生成完成。

Figure 2:Asynchronous online inference diagram

Figure 2 把这个服务路径拆得很清楚:上半部分是请求读 persona 数据库,下半部分是后台生成并写回数据库。关键工程判断是:LLM persona 是可缓存推荐特征,不是必须同步计算的推荐结果。 这让系统可以调节更新频率、recency window、用户资格和输入采样策略,在成本、新鲜度和稳定性之间折中,也把失败控制在后台刷新流程里。

异步架构的代价是短期兴趣捕捉不完美。论文承认 transient sudden interests 可能受影响,但通过 TTL、刷新频率和回退机制降低风险。对工业系统来说,这个取舍合理:过度实时刷新会增加成本和噪声,而低频缓存又可能错过兴趣漂移。后续更值得做的是按用户活跃度和兴趣变化速度分层刷新。

2.5 安全过滤与召回接入

LLM 生成 persona 后,系统先用 safety classifier 检查不安全或敏感兴趣;若新结果被拦截,就回退到之前安全合格的 persona。这里的安全不是附属模块,而是自然语言用户画像上线的前提:文本 persona 比 embedding 更容易显式暴露敏感推断。

通过安全过滤后,persona 才进入召回。论文比较了 conventional two-tower retrieval 和 transformer-based sequential model 加 restricted nearest neighbor search,最终选择复用生产中已优化的 sequence models。这个选择很现实:新语义特征要落地,必须进入系统已经信任的检索栈,而不是重新搭一套召回基础设施。

整体闭环可以压缩成一句话:语义簇压缩历史,教师 LLM 生成双目标 persona,过滤后蒸馏学生模型,异步写入 persona 数据库,再由安全过滤和既有召回模型把自然语言兴趣映射回视频候选。 这条链路的核心价值是把 LLM 的高层语义理解转成可规模化消费的召回信号。

3. 实验结果

3.1 离线表示选择

论文先验证输入表示。作者用用户点击过的文本 topic 作为 ground truth,用 BLEURT 比较 LLM 生成的 summarized interests。变量包括:视频表示用 title、description 还是 salient terms;输入结构用 chronological order、semantic clusters 还是 audiovisual clusters;prompt 是否 few-shot。

Figure 3:Offline evaluation of user representation

Figure 3 的结论很集中:semantic similarity cluster 的 BLEURT 为 0.2706,高于 chronological 的 0.2458 和 audiovisual cluster 的 0.2483;video title 作为输入优于 description 和 salient terms;two-shot prompt 又显著好于 zero-shot。这说明 persona 生成更依赖主题结构和高密度文本,而不是把更多原始信息塞进上下文。 对工程复现来说,先调输入组织方式,往往比直接换更大模型更重要;如果输入簇本身错了,更强的教师模型也只会更稳定地总结错误证据。这个图应优先作为输入设计依据,而不是模型榜单。

Table 1:Qualitative comparison of summarized interests

Table 1 给出直观样例:顺序输入只得到 “bengali tv shows” 这种宽泛兴趣;聚类输入能得到具体剧集或细分主题。这个例子比 BLEURT 更容易说明业务价值:泛标签安全但召回空间太大,细粒度 persona 才更可能形成清晰 query intent,也更便于下游做去重、多样性和探索控制。

这张表还提示一个容易忽略的边界:更具体不等于越窄越好。persona 必须足够细,才能避免召回空间失控;也必须足够稳,才能覆盖用户真实偏好而不是只记住单个视频标题。聚类输入的优势就在这里:它先把同主题视频合成证据,再让 LLM 输出可迁移兴趣。对推荐系统来说,好的 persona 是可操作 query,不是越长越像用户传记越好。

3.2 蒸馏模型表现

学生模型评估关注三项:Instruction Following Rate 衡量是否遵守 schema,BLEURT 衡量摘要接近教师参考,Creativity Score 衡量探索兴趣的创造性。这里最重要的是 IFR,因为生产解析依赖固定字段和固定数量。

Table 2:Performance of student models across training epochs

Table 2 显示,未训练时 Gemini Nano 的 IFR 只有 0.07%,Gemini Flash 也只有 1.82%;训练后 Flash 很快接近 99% 以上,BLEURT 和 creativity 也逐步提升。蒸馏的第一收益不是“更聪明”,而是“可解析、可服务、可监控”。 对推荐系统而言,偶发格式错误会导致 persona 丢弃、召回空结果或额外重试,所以格式遵循率本身就是线上可用性指标。

这张表也说明小模型上线并不是简单压缩参数。student 必须同时学会三件事:按 group 对齐输出、稳定区分摘要和探索字段、保留足够语义质量。Nano 后期 IFR 接近可用,但 creativity 仍弱于 Flash,意味着更小模型可能适合生成稳定摘要,却未必适合承担探索兴趣扩展。若在业务里复现,模型选择应分别看格式遵循、摘要质量和探索多样性,而不是只看推理成本;否则很容易得到一个便宜但只会复述旧兴趣的 persona 服务。

3.3 用户感知与线上 A/B

用户调研显示,超过 80% 的受访者认为 LLM-generated label 对观看历史总结达到 Very Closely 或 Extremely Closely,71% 表示愿意继续看相关主题。这个结果说明 persona 不只是离线相似度高,也能被用户感知为“像我”。不过调研样本分布和方差披露有限,因此它更像质量背书,不应单独当作长期留存证明。

Figure 4:Live A/B viewer-value trends

Figure 4 是论文最关键的生产证据。线上 A/B 持续超过 30 天,control 使用既有推荐栈,experiment 接入 LLM-generated interests 召回候选。论文报告 watch time lift 为 +0.04%,active users lift 为 +0.03%,均达到统计显著。数值看起来小,但在高度优化的十亿级平台上,模块化新增召回源取得显著正向已经有业务意义。

更有洞察的是 exploration interests 的行为:它们召回的 item 比 summarized interests 少 40.91% 曝光,但一旦展示,被观看概率高 13.6%。这说明探索候选不一定质量差,问题可能是排序系统仍然偏向熟悉、高置信内容。 因此 UserPersonas 的下一步瓶颈不是 LLM 能否生成兴趣,而是多目标排序和探索流量分配能否给新颖候选足够机会。

把几组证据合起来看,论文的证据链比较完整:Figure 3 证明输入结构选择,Table 1 证明细粒度输出,Table 2 证明学生模型能学会格式与语义,用户调研证明标签可被用户认可,Figure 4 证明线上业务指标有正向。短板是外部不可复现:平台、召回器、过滤器和指标口径都没有完全公开。因此这些数字更适合说明“这条系统路径在真实平台可行”,而不是作为可直接迁移的通用 benchmark。

对工程落地而言,我会单独监控三类指标:persona 生成成功率和格式错误率,探索候选的曝光率与条件观看率,以及安全过滤触发后的回退比例。只看最终 watch time lift 容易掩盖问题:可能 LLM 生成很好,但排序不给探索流量;也可能线上 lift 来自少数用户群,而多数用户没有收益。论文提到 casual users 收益更明显,这正提示后续需要用户分层实验,并把长期兴趣召回和短期兴趣刷新分开观察。

4. 总结

4.1 我的判断

这篇论文的价值在于把 LLM4Rec 从“模型能理解用户历史”推进到“语义理解如何进入生产推荐系统”。它没有发明新损失函数,也没有靠公开 benchmark 取胜,而是把语义聚类、教师生成、蒸馏、异步缓存、安全过滤和召回接入做成一条可上线链路。最重要的结论是:自然语言 persona 不是装饰性解释,而可以成为大规模推荐中的生产语义召回信号。

4.2 工程启发

如果要复现,优先做四件事。第一,先构造语义簇输入,比较 title、description、tag、salient terms 的信息密度。第二,把 summarized interests 和 exploration interests 分开评估,不要让摘要质量掩盖探索价值。第三,早期就设计 parser、schema validator、safety classifier、TTL、刷新频率和 fallback。第四,把 persona 接进已有召回/排序栈,而不是幻想它替代排序器。

最小可行版本可以更克制:先离线生成 persona,作为一个旁路召回源进入小流量实验;同时保留旧召回链路和旧 persona 回退,不要一开始就把 persona 做成用户可见档案。这样既能验证语义召回是否带来增量,也能把敏感推断和格式失败控制在后台流程。

4.3 局限与后续跟进

局限也很清楚:完整 prompt、过滤规则、安全分类器和召回参数没有公开;线上指标是商业平台内部口径,外部难复现;异步 persona 对突发短期兴趣不够敏感;探索候选曝光偏少,说明下游排序仍可能压制新颖内容;自然语言画像还涉及敏感属性推断和用户控制问题。

后续我会重点看三条线:persona TTL 和分层刷新策略是否公开;探索候选的 ranking calibration 是否有后续论文;自然语言 persona 是否会延伸到用户可编辑兴趣、冷启动 onboarding 或解释界面。整体来看,这篇工作证明 LLM 价值不一定是在线直接排序,而可以是把用户历史编译成低成本、可缓存、可审核的语义中间表示。