Textual User Taste: Natural-Language User Context for Foundation-Model Recommender System at Scale
Ghazal Fazelnia, Paul Gigioli, Eliza Klyce, Sharon Zheng, Katie Zelvin, Ye Myat Thein, Anurag Deshpande, Seda Davtyan, Kate Remeika, Maya Hristakeva, Erik Franco, Karen Banzon, Peng Ge, Jacqueline Wood, Nandini Singh, David Murgatroyd, Mounia Lalmas, Yves Raimond, Andreas Damianou
cs.AI
2026-09-28
Spotify 把听歌行为写成结构化口味画像服务百万用户,叠向量后 MRR 升 0.6%、搜索 NDCG@7 升 2.2%,否定请求会推向被禁曲风。
推荐系统里的用户表示长期靠行为向量:紧凑、好检索,预测力也强。向量对用户不可见,改不了,也喂不进对话式推荐、自然语言搜索和 agent 发现这类要读文字、改文字的基础模型工作流。把完整听歌史塞进每次请求,又会撑爆 context 预算。
Spotify 把长期听歌行为缓存成一份结构化自然语言口味画像,给语言模型当可复用上下文,同时让用户能看见、能用一句话微调。口味画像要当生产级用户表示来评:流利文本不够,还得能区分用户、驱动下游、对显式反馈可预期地响应。
系统叫 Textual User Taste。输入用多时间尺度聚合信号,覆盖艺人、曲风、播客、有声书、负反馈、探索与重复收听、一周节奏和内容元数据,不用原始交互序列。可选用户备注(如「more jazz」)单独保留,生成器才能分清「用户说的」和「从行为推断的」。聚合直接缩短 prompt。
生成器是成本导向的指令微调 LLM,输出四个字段:
字段拆开,是为了下游按任务取子集,证据稀疏时少做无根据推断。输入侧过滤无关、不安全或对抗性备注;输出侧盯保护属性推断、个人身份信息、情绪越界、对创作者的无根据断言。画像存起来再分发,不每次请求重生。备注被接受后,等下一轮受控刷新才写进去。
Prompt 当生产优化对象。七个版本迭代,事实性从 7.70 提到 8.57,连贯性从 6.46 提到 7.98(十分制)。最长 prompt 事实性和连贯性最高,更短的 specificity 更好。LLMLingua 2 倍压缩到约 3428 token,事实性 8.61、有效率 100%,接近未压缩约 6800 token 时的 8.66;压到 8 倍(1202 token)事实性掉到 3.31,有效率只剩 16.5%。DSPy MIPROv2 给出约 2000 token、综合目标 80.2% 的候选,约是最佳手写稿的三分之一。上线看下游效用,不看单一 judge 分。
没有唯一正确答案,评测拆成内在质量和功能评测。七个 LLM judge 打事实性、连贯、覆盖、具体、多样、相关、安全。PCA 两个主成分解释 93.7% 方差,一个偏语义丰富度,一个偏事实质量;事实性与相关性弱负相关(r=−0.18)。单一分数选不出系统。
未来曲目预测用同一排序模型,40 万 user–track 按用户 80/20 划分,画像用 Matryoshka 文本编码器压到 120 维对齐行为向量,五次平均:
| 表示 | MRR | ROC-AUC | NDCG@10 |
| 行为向量 | 0.956 | 0.957 | 0.932 |
| 口味画像 | 0.937 | 0.946 | 0.912 |
| 拼接 | 0.962 | 0.963 | 0.941 |
| 门控融合 | 0.961 | 0.962 | 0.940 |
拼接相对行为向量,MRR 从 0.956 到 0.962(+0.6%)。约 30% 用户比单用行为向量更好。用户特异性:给 LLM 五选一(一首未来真实听过的歌加四首干扰),用自己的画像 MRR 从 0.656 升到 0.776(+18.3%,p=0.0003,d=0.26);换成别人的画像掉到 0.477。多出来的文字帮不上忙,帮上忙的是「这个人」的信息。
搜索个性化用 1 万 query session、约 560 万 query–候选对,相对无用户上下文的 SessionNDCG@7:仅口味画像 +0.9%,仅行为向量 +1.7%,两者一起 +2.2%。第二个时间划分上,单用画像或单用向量提升不稳定,组合一直为正。
正向请求(「more jazz」)在 8 个曲风/情绪上把 Top-20 precision 从 56% 拉到 74%,每方向 p<0.0001。把请求追加到现有画像,语义靠近 0.031,优于整份重生(0.022)。否定请求(「no electronic music」)会把推荐推向被点名曲风:embedding 抓住「electronic music」这个概念,抓不住否定。情境请求(「falling asleep」「deep focus」)平均偏移 0.069,比曲风请求更大。这是表示空间里的受控实验,没有测用户满意度。
RSA Spearman ρ=0.286,k=5 近邻重叠 17.5%,ARI=0.08,两个表示空间组织方式很不一样。3 天和 7 天后全画像余弦相似度 0.954 和 0.955,对应输入约 95.0% 和 94.4% 没变。测的是输入几乎不变时生成稳不稳,对真实偏好变化的响应还没做。
给做基础模型推荐的人一个已铺到百万用户的接口:行为向量继续扛检索排序,自然语言画像扛可检查、可编辑,也能直接当 LLM context。数字是渐进的,0.6% MRR、2.2% NDCG@7,工业检索里这种幅度常见且值得上线,别拿它替换向量。否定走 embedding 会反着来,要单独做推理或过滤。Prompt 压 2 倍几乎不掉事实性,再压就崩,这对百万用户生成成本是硬约束。
论文自己划了边界:无监督摘要,没有 gold 答案,评测更适合比版本,不适合宣称绝对质量。新产品,没有长期用户价值指标;数据和基础设施不公开,无法精确复现。铺到大规模只证明能跑,不证明每份画像都准、每个下游都受益。
Steer 实验停在表示空间,没有上线满意度。约 30% 用户拼接更好,多数用户在个人层面没有增益,论文没拆差在哪。短期稳定性实验的输入几乎没变,「刚听完一首就该改画像」仍是空白。互补性也可能随行为编码器吃进更多元数据和语言模型推理而变弱。