论文阅读:LREF: A Novel LLM-based Relevance Framework for E-commerce

基本信息 论文标题:LREF: A Novel LLM-based Relevance Framework for E-commerce 作者单位:京东 论文链接:https://arxiv.org/abs/2503.09223 来源:WWW25 Motivation:论文要解决的问题是什么 电商搜索相关性任务是指给定搜索词query和商品item,判断两者在语义上是否相关。针对这个问题,业界通常微调BERT来做判别式任务。随着LLM的兴起,大家都在尝试将LLM应用到搜索相关性任务上,但LLM做搜索相关性任务存在3个挑战: 如何获得高质量数据。对于大模型微调来说,开源大模型本身已经具备很强的世界知识了,针对常规的(q,i)相关性问题已经能比较好地处理。微调进一步提升大模型效果的关键在于如何准备高质量的(q,i)相关性数据。 LLM微调的时候,如何增强LLM在电商场景下根据特定规则进行推理的能力,即如何激发大模型按一定规则进行推理,再判断相关性 大模型有时候过于仁慈,有时候倾向于把不相关的商品判断成很相关,如何纠正大模型的这种问题是个挑战 总之直接把LLM用到相关性判别问题上,有很多挑战,需要逐一解决。 数据筛选方法 首先需要认识到的是,电商相关性任务通常需要人工标注大量的(q,i,label)三元组数据来训练相关性模型。相关性label通常分为5档:Exact, Significant, Marginal, Trivial, and Irrelevant。 作者发现LLM本身已经具备比较强的通识的相关性判别能力,需要重点加强的是LLM针对难例的相关性判别能力,故需要从大量人工标注数据中筛选出难例进行微调。此外,人工标注数据中也存在一些噪声,需要把这些噪声过滤掉。总之,在数据筛选这个环节,核心目标就是如何从大量人工标注数据中筛选出高质量的难例样本。 如图Fig 1所示,作者微调了3个大模型来做数据筛选,3个大模型都是从开源的LLaMA-2-7B 开始微调: Initial Model (IM): 初始模型,从人工标注数据中随机采样(q,i,label)微调LLM得到。由于人工标注数据和线上曝光数据分布一致,即简单样本占大多数,故IM可识别常规简单的q-i相关性问题,但对长尾难例识别能力不足 Challenge Identifier (CI): 把人工标注数据按照曝光分布划分成热门、腰部、尾部(q,i,label),每一部分都采样等比例的样本,用来训练CI。其实本质上就是增加了腰尾部数据的占比,提升CI对中长尾样本(难例)的识别能力 Mislabeled Supervisor (MS): 从人工标注数据中随机选一些样本(q,i,label),问GPT当前标注结果label最有可能替换成哪个,如果GPT回答是label’,则说明label和label’都有可能是合理的。因此,进一步推测人工标注的时候,人类也可能出错,把label’误标成label(或反之)。故用(q,i,label’)数据微调MS,在后续数据筛选中,把MS预估结果作为潜在的错误结果 微调得到上述3个模型之后,最终筛选出来的样本如下,L(x)表示人工标注结果。下面的数据有两个含义: 难样本:IM预测错,CI预测对 去掉噪声样本:如上所述,MS预估结果是潜在的错误结果,所以对于MS(x)=L(x)的样本,人工标注的L(x)也是潜在错误样本,需要把这些样本去掉,即条件MS(x)≠L(x) 多CoT微调 经过上面的环节,我们已经拿到了高质量的难样本(q,i,label),接下来开始正式微调LLM进行相关性判别任务了。由于LLM都是decoder-only架构,在相关性判别的时候,增加CoT能激发LLM的推理能力,提升判别效果。为此,作者设计了3个CoT微调任务: 专家解释:Expert Explaining Chain of Thought (EE-CoT),把(q,i,label)喂给GPT,让GPT解释为什么q和i的相关性结果是label,得到EE-CoT,因此得到新的标注数据(q,i,label,EE-CoT)。微调相关性大模型的时候,喂给大模型(q,i),让其输出EE-CoT和label。 遵守规则:Rule Adherence Chain-of-Thought (RA-CoT),把(rule, q, i, label)喂给GPT,让GPT根据rule,推导出q和i的相关性是label的过程,得到RA-CoT,因此得到新的标注数据(rule, q, i, label, RA-CoT)。微调相关性大模型的时候,喂给大模型(rule, q, i),让其输出RA-CoT和label。 决策反思:Decision Reflection Chain of Thought (DR-CoT),对样本(q,i,label)随机生成错误结果incorrect decision,得到样本(incorrect decision,q,i,label)。把(incorrect decision,q,i,label)喂给GPT,让其分析incorrect decision为什么错误,并给出推导过程,得到DR-CoT,因此得到新的标注数据(incorrect decision,q,i,label,DR-CoT)。微调相关性大模型的时候,喂给大模型(incorrect decision,q,i),让其输出DR-CoT和正确label。 简要总结一下,这个环节就是用GPT做CoT的伪标注,然后通过数据蒸馏的方式把CoT能力蒸馏到相关性大模型中。 ...

April 5, 2026 · 1 min

论文阅读:Retentive Relevance: Capturing Long-Term User Value in Recommendation Systems

基本信息 论文标题:Retentive Relevance: Capturing Long-Term User Value in Recommendation Systems 作者单位:Meta 论文链接:https://arxiv.org/abs/2510.07621 来源:arxiv Motivation:论文要解决的问题是什么 现有推荐系统通常以用户的短期行为作为优化目标,例如用户的click、like等。但是这些短期信号通常存在噪声,且比较稀疏,而且难以捕捉用户的长期需求和留存情况。 本文提出了一种基于调查问卷的留存相关性模型(Retentive Relevance),通过设计针对后续留存的调查问卷,直接获得用户的长期留存信号。并据此训练了一个长期留存模型,用此模型的打分来校准排序模型的打分,由此让推荐系统更加关注用户的长期留存价值。 举个我自己脑补的例子:比如你刷抖音的时候点了一个段子手的搞笑视频,你看完了但是觉得并不搞笑,由于没有显式负反馈,推荐系统只能获取到你点击了这个视频,并且也看完了的正向信号,所以推荐系统在后续训练的时候会把这个搞笑视频当做正样本,再给你推荐类似的搞笑视频。这种以短期行为作为优化目标的方法,无疑是误导了推荐系统,对用户的长期留存是有害的。 如果此时APP弹出来一个调查问卷,问你看完这个视频之后,你以后还会回来看类似的视频吗?你如果点击了是或者否,则系统就能显式获取到你的长期留存label,也就是你对此类视频的真实兴趣情况,这种真实反馈比click或者完播更加可靠,而且是和长期价值高度相关的(复访)。有了这种标注数据,则可以训练一个长期留存的模型,预估用户u对商品i的长期留存概率。用这个打分来修正传统的以即时行为为优化目标的推荐系统的打分。让推荐系统在推荐视频的时候能更多地关注用户的长期留存指标。 调查问卷设计方案 作者对比了3种不同的问卷方案: Retentive Relevance:问以后是否会再回来看类似视频(看未来,长期价值) Interest Matching:问当前视频是否符合用户兴趣(问当下,即时兴趣) Worth Your Time:问当前视频是否值得看(问当下,即时价值) 注意:Interest Matching和Worth Your Time并不等价,感兴趣的视频并不一定值得花这么多时间去看(例如没有营养的搞笑视频),有价值的视频并不一定感兴趣(例如枯燥无味的高数视频)。并且这两者都是对当前观看视频的即时反馈,而Retentive Relevance则更加宽泛一些,它不问用户对当前视频是否感兴趣或者是否有价值,而是问用户以后还会不会回来看类似的视频,非常巧妙,如果用户觉得感兴趣或者有价值,以后都有可能会回来看类似的视频,所以Retentive Relevance能一定程度上覆盖Interest Matching和Worth Your Time,并且是对未来的长期价值的直接提问。 论文中还展示了调查问卷的app界面: 调查问卷结果的分析 一致性分析 三种问卷调查结果的一致性比较高,说明三种调查问卷有比较大的overlap,结果比较可靠。 Retentive Relevance showed substantial correlations with Worth Your Time (r = 0.63, p < 0.001, 95%CI [0.71, 0.75]) and Interest Matching (r = 0.58, p < 0.001, 95% CI [0.66, 0.70]). ...

April 4, 2026 · 1 min

论文阅读:QARM V2: Quantitative Alignment Multi-Modal Recommendation for Reasoning User Sequence Modeling

这篇论文是QARM V1的升级版,建议先看QARM V1的阅读总结。 基本信息 论文标题:QARM V2: Quantitative Alignment Multi-Modal Recommendation for Reasoning User Sequence Modeling 作者单位:快手 论文链接:https://arxiv.org/abs/2602.08559 来源:arxiv Motivation:论文要解决的问题是什么 QARM V1确定了“LLM微调→生产SID→排序模型应用”的多模态在排序场景应用的范式,本文发现QARM V1存在如下不足: (1)QARM V1用于LLM微调的i2i训练数据有很多噪声 QARM V1有2种生产i2i样本的方法: 使用swing这种i2i召回模型收集i2i pair。这个方式容易受到商品热度的偏置,如Fig2a所示,酱油和洗衣液被swing判定为i2i正样本,只不过是因为他们都很热门,并不是因为他们在多模态语义上相似。 使用U2I召回模型收集i2i pair。这个方式召回的i2i正样本pair灵活多变,很容易出bad case。 总之,QARM V1构造的i2i正样本有很多噪声,需要去噪。 (2)QARM V1使用RQ-KMeans生产的SID序列冲突率太高 QARM V1使用3层RQ-KMeans训练产出SID序列,作者发现电商商品的分布非常不均匀,甚至是二八分布的情况,即少数几类商品量非常大,大多数类目的商品数量很少。如果只用RQ-KMeans进行分层残差聚类,在商品分布不均匀的情况下,产出的SID序列的冲突率很高。如图Fig3a所示,KMeans聚类严重依赖于数据分布,当数据分布本身不均匀的时候,聚类结果本身也是不均匀的,这就会导致SID序列冲突。 使用推理大模型去噪的I2I样本构造方法 如下图Fig4所示,针对QARM V1的i2i样本噪声多的问题,本文分别使用Qwen3-0.6B和Qwen3-8B对swing和u2i模型召回的i2i样本进行清洗,清洗的prompt如下图所示,就是让大模型判断i2i pair的两个商品是否是相似或者相关商品,输出yes或no。作者认为u2i模型召回的i2i pair更加灵活多变,所以使用了更大的8B模型对这部分数据进行清洗。经过作者的清洗,发现QARM V1的i2i样本中有10%的swing召回的i2i和70%的U2I召回的i2i都是噪声,这噪声的比例也太大了吧。。。 除此之外,为了增强emb对商品的理解能力,作者又使用更大的多模态大模型Qwen2.5-VL-72B,对商品进行理解,生成针对该商品的QA pair,作为后续NTP任务的训练数据。如上图Fig4右上角部分,针对那个辣条,Qwen2.5-VL-72B生成的QA会问这个商品名称是啥,回答是:亲嘴烧。这一步使用的prompt如下图所示。 微调LLM产出多模态表征 微调结构如Fig4下图部分,LLM输入包括标题、图片、属性等特征,此外还新增了3个特殊token <EMB>,用这3个特殊token的输出mean pooling得到最终的多模态emb,然后进行对比学习训练。不理解为啥需要用3个特殊token,1个足够了吧? 上述对比学习结构都比较常规,本文新增的是对QA pair的NTP任务,就是在三个特殊token后面,让LLM继续以NTP的形式生成QA pair,即样本构造环节通过大模型产出的QA pair。 而且这个NTP任务是以三个特殊token为起点的,因为LLM都是decoder-only结构,为了让NTP任务只看到前面三个特殊token,而不看到开头的标题、图片等商品信息,作者设计了Three-Segment Attention Mask,即NTP任务最多看到三个特殊token往后的token。作者这么设计的原因,是希望通过NTP训练,让特殊token产出的商品表征,能够蕴含QA pair里面的信息。 基于Res-KmeansFSQ的SID序列生产 QARM V1是直接使用3层RQ-KMeans残差聚类生产SID序列,作者在Fig3a中认为电商数据天然的不均匀性,会导致KMeans聚类出来的sid存在很大的冲突。为了缓解这个问题,作者将最后一层的KMeans替换成FSQ。其实正如Fig3a所示,KMeans是对向量空间的柔性的量化,而FSQ直接就是四舍五入,是刚性的量化,在码本空间比较大的情况下,FSQ的冲突率比KMeans低。 如下图所示,M^2就是第二层的残差,在公式(3)中,先通过σ函数把残差映射到0~1之间,然后乘以量化值域L,相当于把残差投影到长度为L的线段上,Fig3b的网格等宽网格很好理解。有关FSQ的介绍可以参考这篇博客:https://spaces.ac.cn/archives/9826 基于多模态表征及SID序列的用户行为建模方法 多模态emb和SID序列在排序模型中的应用也比较常规。整体还是TWIN或者说SIM的先GSU进行soft-search,然后在ESU进行target attention。具体来说,作者在GSU使用的是原始多模态emb进行soft-search,在ESU使用的是SID序列和排序模型进行端到端训练。最终离在线效果都有很大的提升。 ...

March 21, 2026 · 1 min

论文阅读:Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup

基本信息 论文标题:Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup 作者单位:CMU 论文链接:https://arxiv.org/pdf/2101.06983 来源:arxiv 一、问题 对比学习通常使用InfoNCE loss进行训练,公式如下(1): 其中: \(s_i\)是anchor,\(f(s_i)\)是anchor embedding,\(f\)是anchor encoder \(t_{r_i}\)是\(s_i\)对应的positive,\(g(t_{r_i})\)是positive embedding,\(g\)是positive encoder \(t_j \in T\)是batch内其他\(s\)对应的positives,作为\(s_i\)的in-batch negatives。在没有hard negative的情况下,即每条样本是<anchor, positive>这种二元组的情况下,\(|T|\)等于batchsize \(\tau\)是温度系数,通常是一个常数,为讨论方便,后续省略该参数 在经典的双塔对比学习场景下,函数\(f\)和\(g\)通常是两个不同的网络(比如CLIP);在LLM/VLM emb场景下,函数\(f\)和\(g\)通常是共享参数的 对于对比学习,通常有in-batch negatives数量\(|T|\)越大,效果越好。但\(|T|\)越大,意味着batchsize也越大,训练时占用的显存也越多。如何在增大\(|T|\)的情况下不显著增加显存占用,是个很大的挑战。 二、方法 通常我们会使用梯度累积的方法在不增加显存的情况下增大batchsize,但梯度累积只适用于instance-wise loss,即每条样本的loss计算是独立的,这样可以把大batch拆成多个小batch分别计算梯度,然后累加起来。 但是由于对比学习loss计算时涉及到anchor和in-batch negative的运算,即对比学习loss是batch-wise loss,直接把大batch拆成多个小batch不加额外处理的话,小batch内的in-batch negatives就少了,影响对比学习效果。 本文的核心思想是,把公式1中的 对比学习loss 对 模型参数 的梯度求解过程拆分成:loss对表征\(f(s)\)的梯度 乘以 表征 对 模型参数 的梯度。由于只有loss计算需要batch-wise的运算,故上述拆解只有前半部分需要batch-wise运算,后半部分仍然可以instance-wise的计算然后梯度累加。下面来看具体过程。 为方便讨论,我们只看loss对\(f\)的参数的梯度求解过程(比如在\(f\)和\(g\)共享参数的情况下),对\(g\)的梯度求解过程的分析类似。 根据链式法则,对比学习loss \(\mathcal{L}\)对\(f\)的参数\(\Theta\)的梯度求解过程如下:把它拆解成第一项是\(\mathcal{L}\) 对表征\(f(s_i)\)的梯度,第二项是表征\(f(s_i)\)对模型参数\(\Theta\)的梯度,两项相乘就是loss \(\mathcal{L}\)对模型参数\(\Theta\)的梯度。 通过上述拆解为什么能显著降低显存呢,详细分析如下: 对于公式(2)右边第一项\(\frac{\partial \mathcal{L}}{\partial f\left(s_{i}\right)}\),根据公式(1)可以得到第一项的梯度如下公式(5)。也就是说第一项的梯度只与batch内所有的表征\(f(s)\)和\(g(t)\)有关,而与模型参数\(\Theta\)无关。所以我们可以先进行一次不含梯度的前向过程,拿到batch内所有的表征\(f(s)\)和\(g(t)\),由此可计算出公式(5),即loss \(\mathcal{L}\)对表征的梯度。由于这次前向不包含梯度(类似inference过程),所以不用记录各种中间激活值(activations)和梯度,可以大大节省显存,详细可看https://mingchao.wang/4KTgtnFc 的分析(即模型训练过程中activations是占显存的大头)。 计算完公式(5)之后,可以把这部分梯度缓存起来,用于后续计算。这部分缓存的梯度只需要额外占用\((|S|d+|T|d)\)的显存,显著小于海量的模型参数和中间activations的参数量。 对于公式(2)右边第二项\(\frac{\partial f\left(s_{i}\right)}{\partial \Theta}\),这部分梯度就是表征\(f(s_i)\)对模型参数\(\Theta\)的梯度,和常规梯度没什么两样,是instance-wise的,即每个样本的这个梯度计算是独立的。因此可以像常规梯度累积一样,进行mini-batch的计算,然后累加起来。为了完成这第二个过程,需要对每个样本\(s_i\)重新进行一次前向计算,由于需要对参数\(\Theta\)求梯度,所以这一次前向需要记录所有梯度和activations中间值。但是由于这个过程每个样本\(s_i\)可以独立计算,所以可以像梯度累积一样,把大batch拆分成多个小batch,每个mini-batch进行前向计算并进行梯度反向传播,所以显存峰值由mini-batch size决定,也不会太大。 ...

January 25, 2026 · 10 min

论文阅读:Large Reasoning Embedding Models: Towards Next-Generation Dense Retrieval Paradigm

基本信息 论文标题:Large Reasoning Embedding Models: Towards Next-Generation Dense Retrieval Paradigm 作者单位:阿里巴巴 论文链接:https://arxiv.org/abs/2510.14321 来源:arxiv 一、问题 电商emb召回场景,目前的方法都是直接字面语义上的对比学习训练(direct-embedding methods),即q2i的对比学习训练。对于复杂、困难的query,语义理解能力不足,比如下图Fig1中的query=“比茶更提神的饮料”,仍然会召回很多茶,因为字面理解没有理解query背后的深层含义。 二、方法 使用LLM强大的推理能力(reasoning),先推理出CoT,然后基于CoT再产emb。比如上面的例子中,经过LLM推理之后,推理出咖啡、红牛等关键词,通过这些关键词再去产emb然后召回,效果就好很多。 2.1 训练样本构造方法 如下图Fig2中的Data Construction部分: 收集线上query,尤其是那种困难query,就是在现有direct-embedding表现不好的query 把这些query喂给现有召回模型,得到召回商品集合① 然后使用强大的Qwen3-30B-A3B-Instruct生产CoT扩展信息 Unconstrained Reasoning:首先不加任何限制地生产CoT,尽可能利用大模型的世界知识和推理能力,生产充分完全的CoT信息 Information Extraction:由于上一步产出的CoT信息太长了,不利于线上推理,因此把上一步产出的CoT和原始query再次输入给大模型,让大模型抽取其中的关键信息,以keyword list形式输出 Post Processing:最后对上一步抽取的关键词进行后处理,去除重复词,去除query中已有的词等,得到精简、干净的关键词列表,列表最大长度是16 接着把query和CoT喂给已有的向量召回模型,得到扩展的召回商品集合② 由于要训练模型的Reasoning能力,所以只取出集合②-①的差集部分,这部分是CoT带来的增益商品集合 最后使用相关性模型对商品集合②-①进行过滤,过滤出相关的商品 通过上述步骤,产出约7.5kw的<query, CoT, item>三元组 把上述样本划分成两部分,7.1kw的<query, CoT, item>三元组用于Cold start预训练;剩余400w的<query, item>用于RL微调 2.2 Cold Start预训练 对应图Fig2左下角部分,该模块通过大规模的<query, CoT,item>三元组数据预训练,想要达到两个目的:一是让基础模型具备think能力;二是让基础模型产出的emb和下游q2i任务对齐。 这里使用的基础模型是Qwen2.5-3B-Instruct,比生产CoT的模型(Qwen3-30B-A3B-Instruct)小,其实也有点蒸馏的感觉,把大模型的CoT能力蒸馏到小模型中。 训练任务包括两个,一个是CoT的NTP loss(对应图中的SFT loss),另一个是q2i的对比学习InfoNCE loss。query塔和item塔共享参数,他们的emb都是最后一个特殊token <emb> 的emb。 Loss组合: 2.3 RL微调 上一步的SFT主要进行模仿学习,模仿更大的大模型的think能力,小模型本身的reasoning能力受限,接下来需要用GRPO对小模型进行RL微调。RL微调同时对生产CoT和生产emb两个任务都有作用,具体看下面的reward: RL微调设计了3个reward: Format Reward:产出的CoT格式符合“<think> Specific CoT </think><emb>”就得1分,否则得0分 Length Reward:产出的CoT格式符合长度限制(<=16)就得1分,否则得0分 Retrieval Accuracy Reward:联合原始query和产出的CoT产出的增强query emb,与batch内所有的item emb求相似度,正确item所在的排名为\(rank(d_i)\),再根据公式12计算一个排名的reward。核心思想是:正确的item与query的相似度排名越高则reward越大(即rank值越小则reward越大)。 最后,上述3个reward通过三个β系数组合起来: ...

December 13, 2025 · 1 min

解决Hugo的Giscus评论系统出现URI_TOO_LONG的问题

本博客使用的评论系统是Giscus,日常使用没啥问题,但是当博客内容很长的时候,就会出现URI_TOO_LONG的问题: An error occurred URI_TOO_LONG hkg1:: 例如下面两篇博客: 2017年国庆旅行——郑州、杭州 伪·2018届校招面经 正常Giscus评论 异常Giscus评论 针对这个问题,网上搜URI_TOO_LONG说的都是网页请求的URI太长导致的,但都没找到和Giscus相关的内容。 后来在Giscus的Github Issue里找到一个相同的问题:https://github.com/giscus/giscus/issues/1340,里面一个人提到和Hugo所用的主题有关,另一个人提到和博客的meta name="description"内容太长有关。但都蜻蜓点水,说的不是很详细,也没有给出一个通用的解决办法。 后来怀疑这个报错可能是在加载Giscus评论系统的时候,发起的URI请求太长有关。因此针对出问题的博客,通过Chrome右键检查,找到Giscus模块出现的URI链接,如下图所示。 光这么看看不出来这个URI的长度,可以把这个URI拷贝出来,粘贴到Word中,你会发现这个URI真的非常非常长,而且包含了完整的博客正文!进一步分析发现是URI中的description字段非常长,包含完整的博客正文。 定位到问题之后,解决办法就很简单了,目标就是如何缩短博客html代码中的description字段长度。这里有很多种方法,最简单的方法就是,在每篇博客的头信息区域,增加自定义配置的description内容,简短一点就行,我就直接复用了博客标题。通过这种方法就缩短了Giscus发起URI中的description字段长度了。 此外,还可以在主题中搜一下meta name="description"出现的位置,把里面的代码改掉或者注释掉,都能解决这个问题。

November 9, 2025 · 1 min

论文阅读:Enhancing Embedding Representation Stability in Recommendation Systems with Semantic ID

基本信息 论文标题:Enhancing Embedding Representation Stability in Recommendation Systems with Semantic ID 作者单位:Meta 论文链接:https://arxiv.org/pdf/2504.02137 来源:RecSys 2025 Motivation:论文要解决的问题是什么 搜推广的模型严重依赖于item id embedding的表征质量,但在工业场景下,搜推广的id表征存在如下挑战: id量级非常大,常常是数十亿甚至是百亿的规模。因此,通常不可能给每个id一个单独的embedding(即文中的individual embedding, IE),IE的成本太高 id分布非常不均匀,马太效应严重。文中统计:0.1%的头部item占据了25%的曝光量;5.5%的腰部item占据了50%的曝光量;94.4%的尾部item只占据了25%的曝光量 id分布漂移严重:搜推广场景中item的变化非常频繁,无时无刻不在发生着新id的产生和旧id的退出,而且不同id存活的时间周期也不尽相同,所以id的准入准出策略很难完美适配所有item 针对上述问题,常见的做法是对item id采用hash然后查emb的方式(即文中的random hash,RH),将所有id hash到一个固定大小的空间,然后查emb。但是RH方式有如下缺点: 存在hash冲突,把不相关的id hash到一个桶里,导致语义混乱,学习效果不佳 无法解决id分布漂移的问题,比如hash到同一个桶的A、B两个id,如果B出现频率变高,则会带偏A的分布,影响了A的效果 无法进行知识共享,例如新出了商品iphone15,iphone15无法共享到老的iphone14的emb知识,iphone15的id emb必须完全重新学习。针对这种情况,作者做了一个更加极端的AA实验,就是copy一个完全相同的商品,只换item id,如果是IE或者RH策略,则新商品由于id emb是随机初始化的,效果不佳,这是id-based的通病 基于前缀n-gram的semantic id表征方法 针对上述问题,作者沿用了semantic id的思路,首先使用内容理解团队产出的文本、图片等多模态emb,然后基于过去3个月的item多模态emb,训练RQ-VAE模型,并产出所有item的semantic id。 上述过程都是常规操作,重点在于如何基于semantic id得到item emb表征。假设semantic id是L层,每层的codebook size是K: 最常规的做法:每层都初始化一个K*d的emb table,每层sid查各自的emb table,然后把L层的sid emb加起来。但是本文完全没有提这种方法,也没有和这种方法比较,非常奇怪。 为了比较,我个人再详细描述下这种常规做法。比如老item A的sid是(c1,c2,c3);新来一个item B,它的sid是(c1,c2,c4)。用常规方法,A的emb是c1+c2+c3,B的emb是c1+c2+c4。两者c1、c2是可以共享的,所以常规方法也能起到一定的知识共享的效果,共享项有2项:c1、c2。但是因为RQ-VAE的沙漏问题,c2很有可能是沙漏瓶颈,信息量不足。 作者对比了Table 1中的几种方法: Trigram和Fourgram差不多,如果L=3用Trigram、L=4用Fourgram的话,本质上是把L个sid映射成了一个无冲突的int。但是这种方法映射出来的int数量太多了,是\(K^L\)。如果K=1024、L=3,则\(K^L\)就已经超过10亿了,这和直接无冲突的IE方法一样了,而且存在新id无法共享老id学到的知识的问题 All bigrams,就是所有的sid的2-gram。还是上面的例子,A的emb相当于\(c_1c_2+c_2c_3\),B的emb相当于\(c_1c_2+c_2c_4\),两者可共享\(c_1c_2\)项,相比于常规方法,虽然共享项数变少了,但粒度更精细了,孰好孰坏未可知。由Table 2可知,All bigrams的效果至少比Trigram和Fourgram好很多了,而且如果层数L越大,可共享项越多 Prefix-ngram(简称Prefix-SID方法),本文提出的新方法,把所有前缀组合成新id查emb,然后所有emb再求和。还是上面的例子,A的emb相当于\(c_1+c_1c_2+c_1c_2c_3+c_2+c_2c_3+c_3\),B的emb相当于\(c_1+c_1c_2+c_1c_2c_4+c_2+c_2c_4+c_4\),两者可共享\(c_1, c_1c_2, c_2\)三项,比之前的所有方法可共享的信息都多,而且如果层数L越大,可共享项越多,因此这种方法的效果最好,训练也最稳定 实验结果很丰富,做了很多分析,Prefix-SID方法有如下优势: 相比于IE和RH方法,Prefix-SID方法对中长尾item的提升尤其显著,因为新id和老id的表征有了知识共享 对id分布漂移问题更不敏感:由于电商模型训练时消费数据的顺序是和数据的时间一致的,比如一个月的数据,按照1号、2号、…31号这样的时间先后顺序依次训练,理论上4号的模型在4号的测试集上的效果是最好的。作者做了一个实验,分别用20号和4号的模型都在4号的测试集上进行评测,看看20号的模型指标相比4号降低了多少。作者发现,使用Prefix-SID方法和IE方法,两者的指标降低幅度都差不多,都比较小。首先IE方法由于不存在hash冲突,所以20号的模型仍然能比较好地预测4号的数据;其次,Prefix-SID方法虽然有hash冲突,但是因为冲突的item都是语义相似的,可以进行新老item的知识共享,所以这个冲突反而是好事,对模型效果无影响。但是作者发现RH方法的20号的模型在4号数据上评测指标下降比较多,因为有hash冲突,而且冲突是随机的,20号的分布已经变化很大了,导致在4号数据上效果不佳。Table 4的指标越小越好。 基于Prefix-SID方法虽然也有hash冲突,但是冲突到同一个semantic id的item表征更相似,而RH冲突到同一个桶里的item是完全随机的,相似度差。作者以IE为base,把Prefix-SID和RH都各自都冲突到同一个桶的IE emb提取出来,计算类内相似度和类间相似度,发现基于Prefix-SID的类内相似度方差小,类间距离大,说明Prefix-SID确实能把相似item聚到一起。 评论 可借鉴 基于Prefix-SID方法确实能提高新item和老item的信息共享数量,方法值得借鉴 论文实验分析很丰富 可改进 基于Prefix-SID方法居然没有和最常规的加和方法比较,是本文最大的不足

October 9, 2025 · 1 min

论文阅读:VL-CLIP: Enhancing Multimodal Recommendations via Visual Grounding and LLM-Augmented CLIP Embeddings

基本信息 论文标题:VL-CLIP: Enhancing Multimodal Recommendations via Visual Grounding and LLM-Augmented CLIP Embeddings 作者单位:沃尔玛 论文链接:https://arxiv.org/pdf/2507.17080 来源:RecSys 2025 Motivation:论文要解决的问题是什么 多模态q2i召回通常使用CLIP的对比学习方式进行训练,在电商场景下存在2个问题: CLIP这种方式通常是对图片整体的表征,缺乏细粒度的目标检测能力,尤其在电商场景,比如fig1,卖衣服场景,传统CLIP只能识别整张图片是一件T恤,难以关注T恤上的图案等细节特征;另外,电商图片往往存在很多附加背景、道具、模特等元素,会影响主体物体的表征 电商标题、属性等文本描述通常参差不齐,存在错误、堆砌、图文不符等问题,导致CLIP训练时图文对齐效果不佳 VL-CLIP解决方案 针对图片的处理: 将图片和商品类型(product type)输入到开源模型Grounding DINO中,让模型进行目标检测,将可信度超过某个阈值且可信度最高的区域抠出来,输入到CLIP的图像encoder中。通过这步预处理,相当于对电商图片进行了关键主体识别和提取,只提取和商品最相关的主体进行图像表征。文中使用的图像编码器是ViT-B/32。 针对文本的处理: 将商品的类型、标题、描述、性别、年龄等文本描述以及图片本身输入到Summarizer多模态大模型,让大模型产出精简、准确的文本描述\(q_0\) 将\(q_0\)和商品图文信息输入到Evaluator多模态大模型,让大模型对\(q_0\)的质量进行评判,如果\(q_0\)质量很好,则直接输出<STOP>;否则指出\(q_0\)的问题所在,并说明改进方法 如果第2步输出不是<STOP>,则将第2步的输出再输入到Refiner大模型,让大模型根据第2步的结果继续调整并输出更优的文本描述\(q_i\) 不断重复第2、3步,直到输出<STOP>,或者最多重复5遍 将产出的精准的文本描述q输入到CLIP的文本encoder中,文中使用的是BERT系列。产出的emb维度是512 上述Summarizer、Evaluator、Refiner都是VLM,文中使用的是GPT-4o,三个任务的prompt设计参考论文附录Table 9 上述对图片和文本的处理本质上是去噪,提取图片的主体物品、让文本描述更加精准。 产出多模态emb之后,后续的操作就是常规的召回流程了,使用HNSW进行ANN召回。 评论 可借鉴 使用Grounding DINO对图片进行主体识别,值得借鉴 使用VLM对商品标题、描述等文本信息进行去噪,值得借鉴 但如果商品量级很大的话,这两个步骤估计会很耗时 可改进 如果是q2i场景,直接用query文本是不是更真实,更接近搜索日子的真实数据分布?

October 8, 2025 · 1 min

论文阅读:Generative Recommendation with Semantic IDs: A Practitioner’s Handbook

基本信息 论文标题:Generative Recommendation with Semantic IDs: A Practitioner’s Handbook 作者单位:Snap 论文链接:https://arxiv.org/pdf/2507.22224 来源:CIKM 2025 这是CIKM 2025的一篇resource文章,比较简单。核心内容是开源了一个基于semantic id的生成式推荐框架GRID,可以很方便地做各种消融对比实验。 主要内容 主要结论如下: 对于semantic id生成算法,简单的RQ-KMeans效果反而是最好的,好于R-VQ和RQ-VAE 生产pretrain emb的LLM模型参数量越大,效果越好,但是提升幅度有限 生产semantic id的codebook size和网络层数并不是越大越好,常规的3层,每层256个id效果反而最好 生成式推荐时,是否需要在用户行为序列基础上增加一个user id,实验发现增加user id效果反而变差,不增加user id效果最好 生成式网络结构encoder-decoder对比decoder-only,发现前者效果更好,因为前者能充分学习到行为序列完整的信息 对行为流进行滑动窗口数据增强能提升模型的泛化能力 当semantic id到item存在映射冲突时,随机选一个item的效果和对冲突item追加一个区分标识(digit),两者效果差不多 在生成式beam search的时候,限制只输出合法semantic id和不增加限制,两者效果差不多 评论 看这篇文章主要是想看看不同semantic id生产方法的对比,发现RQ-KMeans居然比RQ-VAE更好。个人感觉这两个方法效果应该差不多,后者应该更好点才对。首先,RQ-VAE的量化loss本质上和KMeans聚类是一个意思;其次,RQ-VAE还增加了一个重构loss,感觉产出来的semantic id和原始emb的信息损失应该更少。 此外,本文的所有实验都是基于亚马逊的公开数据集,数据量肯定不能和真正的工业数据集相提并论,所以文中很多结论有可能只适用于本文的设定,换一个场景估计结论就变了,所以看看就好。 最后,文中很多结论只写了现象,要是能增加原因分析就好了。

October 7, 2025 · 1 min

论文阅读:Progressive Semantic Residual Quantization for Multimodal-Joint Interest Modeling in Music Recommendation

基本信息 论文标题:Progressive Semantic Residual Quantization for Multimodal-Joint Interest Modeling in Music Recommendation 作者单位:网易云音乐 论文链接:https://arxiv.org/pdf/2508.20359 来源:CIKM 2025 Motivation:论文要解决的问题是什么 多模态emb在搜推的应用方式,通常是先将多模态emb转换成semantic id,然后把semantic id用到搜推模型中,这种方式有如下两个问题: 模态内语义退化:多模态emb转换成semantic id通常使用RQ-VAE或者RQ-KMeans的方法,这种方法在不断残差的过程中,后续残差聚类结果已经不能反映初始emb的聚类效果了。其实就是semantic id的沙漏问题,具体可以看这篇文章,后续有空再分享这个问题。 简单来说,如下图所示,初始有DJ、Rock、Lullaby、Choir四个类,但是对残差emb(即RQ-VAE的第二层)聚类的话,初始的四个类的item就打散了,会聚到不同的簇中,也就是RQ-VAE的后续层的聚类效果已经和初始emb的聚类效果很不一样了,这就是文中说的语义退化问题 模态间建模差异:搜推场景的item通常有多种模态特征,比如文本、图像、音频等,传统方法在多模态融合方面比较简单,不能很好地捕捉多模态之间的关系。 PSRQ生产semantic id 本文是音乐推荐场景,主要用到两种模态:text和audio,分别用百川和MERT提取text和audio的模态emb。 生产semantic id的方法如下图所示: fig2a是传统的RQ-KMeans的方法,每一层都用上一层的残差进行聚类。如上文所述,由于沙漏问题,会导致后续层次的semantic id存在语义退化问题 fig2b是本文新提出的PSRQ量化方法,在RQ-KMeans基础上,每一层除了有上一层的残差向量,还会concat上初始emb减去残差emb后的向量。这样就能区分出残差相似,但初始emb不同的item了,也就避免了RQ方法的沙漏问题,后续semantic id也能保留初始emb的语义信息。fig1d能看出来第二层semantic id仍然能够反映初始emb的分类效果。 Semantic id在下游的应用方法 如下图所示: 每个item有两套多模态emb:text和audio,但是有三套semantic id,除了text和audio各自产一套semantic id之外,还会把text和audio的emb concat起来,再产一套semantic id,相当于多模态融合的semantic id semantic id的emb在排序模型中随机初始化,然后端到端训练 semantic id在用户建模时,使用DIN模型,query用的是多模态融合的semantic id emb,行为流分别用text和audio的semantic id emb。作者说这种方法既能捕捉到单模态细粒度的信息,又能建模跨模态的交互信息 评论 可借鉴 PSRQ的semantic id生产方法确实很有意思,在每一层都用上原始emb,这样不同簇的item在每一层都能分开,不会出现沙漏问题,使得每一层的semantic id都能保留原始emb的语义聚类信息 产了多套semantic id,单模态semantic id是常规操作;多模态emb concat后也产一套semantic id,是个创新点 用户建模时query用多模态semantic id,行为流用单模态semantic id,也是个创新点,虽然论文说这种方法效果最好,但是有点存疑 论文有个实验结果对比了不同semantic id量化方法的效果,结论是:PSRQ > RQ-KMeans = RQ-VAE > VQ > PQ 可改进 pretrain emb和semantic id的生产都没有对齐协同信号 semantic id在下游应用时直接端到端训练,而没有使用codebook初始化,会不会丢失信息比较多? 产semantic id的过程中,模态内语义退化的问题,描述了现象,但是没有用定量的指标来说明问题,感觉可以借鉴【论文阅读:Empowering Large Language Model for Sequential Recommendation via Multimodal Embeddings and Semantic IDs】的方法,定量说明后续层的semantic id的聚类效果或者说区分能力相比初始emb已经相差甚远了 fig2b中,第一层的codebook的dim=d,后续层的codebook的dim=2d,那么后续层的残差dim也是2d,那么初始emb怎么和后续的残差emb相减呢,维度对不上啊?我理解可能是这样的,后续层聚类的时候用的是concat的dim=2d的emb,但是算聚类中心的时候只用了残差本身的emb,这样就能解释得通了,但是文中对这部分的细节没有解释。

October 6, 2025 · 1 min