推荐系统转向全局最优,三篇大厂论文的工程拆解与启示
发布时间:2026/10/27 17:27:35 锦皓数字建站

大厂推荐系统集体转向“全局最优”这三篇论文到底在做什么最近几天被三篇大厂论文刷了屏字节的推荐全链路统一建模、LinkedIn的多目标动态召回、Target的混合搜索上线。这三篇放在一起看特别有意思恰好代表了业界在召回、排序、全链路三个层面上的最新工程化方向——不是那种实验室里的花活而是真正上线跑到过流量的系统。我自己的感受是这三篇论文虽然来自不同业务、不同团队但内核高度一致大家都在从“单点最优”走向“全局最优”从“离线静态设定”走向“在线动态适应”。如果你正在做推荐系统或者搜索排序这三篇真的值得逐字精读很多方案是可以直接借到自己的业务里的。先说个判断2026年下半年推荐系统领域最明显的技术信号就是“全链路可微”和“动态多目标”。过去我们习惯把召回、粗排、精排、重排拆成独立模块各自优化论文归论文工程归工程。但字节这篇统一推荐全链路的工作本质上是在把漏斗里的每个阶段拼成一条端到端可训练的通路让信息流动不再有断层。LinkedIn做的事情则更聚焦召回阶段——不是所有召回都要穷举匹配而是根据实时上下文动态调整多目标权重让召回本身具备场景感知能力。Target的混合搜索则从零售搜索场景切入把稀疏检索与向量召回结合解决的是长尾商品和模糊表达怎么被搜出来的问题。这三篇合在一起看基本上就是当前工业界推荐搜索系统最值得借鉴的三块拼图。我自己在过去两个项目里分别踩过类似的问题——一个是短视频App的召回链路改造一个是跨境电商搜索的语义召回升级——所以看到这些论文时特别有共鸣。这篇文章不打算逐字翻译论文而是想从工程落地角度拆一拆它们的技术思路、关键难点以及我们能直接抄作业的部分。1. 大厂推荐系统集体转向“全局最优”这套思路解决什么问题推荐系统做了这么多年业界在主路径上的分工早就很稳定了海量候选进召回召回结果过粗排粗排结果进精排精排结果重排后展示。每个模块都有自己独立的模型、独立的训练数据、独立的优化目标。过去大家觉得这样没毛病毕竟每个阶段目标清晰团队之间也能平行推进。但现在瓶颈慢慢暴露出来了——各模块之间是断开的上游模块并不知道下游模块真正在意什么。这就好比一个工厂里采购部门只按成本最低采购原材料生产部门只按良品率挑材料销售部门只按销量定价格。每个部门都觉得自己做到最优了但整条产线跑起来问题一大堆。推荐系统也是这样召回阶段按相关性筛出来的候选精排阶段可能根本不认可精排模型把预估时长排得很准但重排层因为多样性约束又把排序结果打乱。每个环节都做了局部最优最终给用户的体验反而是割裂的。字节那篇统一全链路的工作本质就是在打破这种“局部最优”的墙。它的核心做法不是简单地把几个模型串起来而是把召回、粗排、精排、重排组合成一条联合训练的链路让梯度可以从最终损失一路回传到每个阶段的参数。这样上游模块在训练时就知道下游模块在做什么不会自顾自地优化自己的指标。从技术角度看这种全链路统一最大的难点是工程一致性。离线训练时模型看到的是完整链路但线上推理时链路往往被拆成好几个服务模型结构也不完全一致。一旦离线在线不一致联合训练的效果就大打折扣。我见过不少团队做联合建模最后死在离在线特征对齐上而不是死在模型能力上。所以字节这篇论文里很大篇幅其实是在讲他们怎么处理链路一致性、怎么做联合训练的资源调度、怎么处理不同阶段模型更新频率不同步的问题。1.1 全链路统一和“多目标精排”是两码事很多同学一听说全链路统一第一反应是“这不就是精排模型加了几个目标函数吗”。其实差得远。多目标精排解决的只是排序阶段同时优化多个指标的问题比如时长娱乐性互动一起学、通过门控或者专家网络把共享信息和獨有信息分开。但全链路统一是把多阶段的学习过程打通这比单个模型里加几个head要复杂得多。举一个具体的例子。经典精排模型在做多目标时使用的是同一份候选集合、同一个特征空间。但召回阶段的特征分布和精排阶段完全不同召回侧更多用用户历史序列、物品基础属性这类轻量特征精排侧才有上下文特征、交叉特征、实时统计特征。要让梯度从精排回传到召回模型就必须让召回模型也能感知到精排需要的信息。这个问题不是加个网络层能解决的它牵扯到特征生产、样本拼接、模型结构设计一系列调整。另外链路里每个模块的更新频率也不一样。召回模型可能一天更新一次精排模型是小时级更新重排规则可能分钟级调整。联合训练意味着整个链路必须共享同一个学习信号这要求工程上对链路各环节做版本管理和一致性控制。我在团队里做过一次端到端排序改造仅仅是让粗排和精排的标签口径对齐就花了两周。所以看到字节能把这套系统上线我能想象他们中间踩了多少坑。1.2 为什么2026年的推荐系统需要全链路最优有人可能会问链路分模块这么多年也过来了为什么现在非要统一不可答案很直接——因为单点优化已经触及天花板再往下抠只能抠出负面收益。我之前做短视频场景时有个切身感受把召回做得再精准如果精排模型打出来的分和召回不一致用户感知到的推荐质量依然很割裂。用户不只对单个内容打分他感知的是整条推荐流的“顺滑度”。一条流里连续两个内容类型跳跃太大再精彩的内容用户也会觉得“算法不懂我”。这种顺滑感受恰恰是分模块优化很难顾及的——召回按相关性拉回来一堆内容精排却按互动概率把内容全排成猎奇向用户就觉得推荐变味了。还有一个业务上的原因流量红利消失后产品经理们开始追求更深层的指标比如留存、长期活跃、付费转化。这些指标根本不是某一个排序模型能单独优化的它们天然就是全链路受益的。比如用户在一次会话里看了很多短视频但都是低质量的爽点内容短期互动指标很好长期却可能造成用户疲劳流失。要围绕“长期留存”这个目标优化必须让召回和排序同时调整而不是精排模型加一个留存目标就完事。全链路统一的另一个动力来自系统层面的效率。链路拆得越散离在线一致性问题越严重样本处理流程越冗余更新频率越难对齐。与其不断地给每个模块打补丁不如从结构上做一次统一。这个逻辑和微服务演进到最后搞“模块化单体”其实有点像——什么都拆拆到后面发现通信成本比计算成本还高重新收敛回来反而更快。2. 字节统一推荐全链路技术拆解与实施要点字节在推荐系统领域的工程能力行业内基本没有异议。他们的数据规模和算力储备允许做一些我们这个体量很难想象的实验。但这不代表他们的方案只能在大厂落地拆开看很多思路是可以降维借鉴的。2.1 全链路可微建模的核心是什么这篇论文我读下来的感觉是他们的技术主线是把整个推荐链路抽象为一个“多阶段决策问题”然后用强化学习或者端到端联合训练的方式去求解。具体结构上典型的方案是共享底层Embedding召回塔和精排塔各自保留一部分独有参数再通过一个联合损失函数把两段串起来。这里有一个特别关键的工程细节召回阶段和精排阶段处理的候选量完全不同。精排是对几百个候选打分召回是对几十万上百万候选检索。如果直接把精排的Loss回传到召回塔计算量会大到不能接受。所以他们采用了类似“软检索”或者“近似检索算子”的方法让召回塔不需要对全量候选做精确打分而是通过采样或者聚类的方式近似求得梯度。这个思路其实在业界已经有雏形但字节把它做到了工业级可用。我自己试过类似的“粗排反馈回传召回”的简化版让召回模型学习精排模型对每条样本的预测分数而不是直接学习用户反馈的硬标签。这个做法不需要真的打通梯度只需要离线把精排模型跑一遍把分数当作一个新的特征或者标注目标喂给召回模型。效果上确实让召回结果和精排偏好更对齐了在线CTR提升了大概1.5%左右。如果你团队规模不大这算是一个低成本复刻全链路思路的办法。更完整的全链路统一建模还会涉及重排层。重排通常解决的是多样性、去重、流量控制等约束很难直接用梯度来优化。字节的方案是把重排目标作为正则项或者约束条件加进联合损失里而不是试图重排本身也变成可微模型。这个取舍我非常认同——重排的核心价值在于兜底和可控强行让它变成深度学习模型反而会引入更多不确定性。2.2 全链路统一训练的几个工程代价端到端训练听起来优雅但工程成本真不低。首先是样本拼接训练数据不再只是“用户对某个物品的点或不点”而是“整条推荐链路从召回到展示的完整记录”。这意味着在样本生成阶段就需要把召回候选、粗排结果、精排分数、重排位置全部拼到一条样本里。数据量直接膨胀数倍存储和计算成本都涨得很厉害。其次是模型更新的频率适配。精排模型可能小时级更新召回模型可能天级更新全链路统一之后更新频率必须趋同。而不同模块的算力需求不一样强行同步更新会导致资源浪费或者链路延迟。字节的处理方式大概率是做部分参数冻结、部分参数热更新既保证链路整体稳定又让高频模块保持敏捷。这种“统一中有灵活”的思路才是大厂方案能落到实处的关键。还有一点是回放和评估机制。分模块时代召回单独评估RecallK精排单独评估AUC/GAUC大家各看各的指标。统一之后必须定义一套端到端离线指标比如模拟整条链路的最终展示效果。我见过一些团队在这个环节卡住单模块指标都涨了链路整体指标反而跌了排查半天发现是标签口径不一致导致的虚假提升。字节的论文里也提到了类似问题所以他们在离线评估体系上做了比较大的改造引入了基于整条链路日志的评估方式。2.3 全链路统一后排序指标到底看什么做全链路项目最怕的就是目标定义不清。如果你只是想提高CTR那全链路统一大概率是杀鸡用牛刀。字节这篇论文里目标定得比较综合时长、互动、留存、满意度都要考虑。但实际落到线上他们一定是把不同业务线的核心指标拆成不同的目标权重链路统一只是提供一个公共底盘具体往哪个方向优化还是由业务权重决定。我个人的经验是做全链路改造之前一定要先把业务北极星指标拆解成可计算、可回传的损失项。如果你连“什么才算一次好的推荐”都说不清楚链路统一只会放大混乱。字节能把链路统一做上线背后一定有非常清晰的业务目标树每个阶段、每个目标、每个权重都是经过反复实验标定过的。这部分内容论文里未必会写但恰恰是最值得学习的地方。在线服务层面全链路统一还会带来推理链路的耦合。以前召回、精排可以各自独立扩容、独立降级统一之后它们的输入输出依赖变强了排查问题也更复杂。做这类架构改造一定要提前设计好降级开关和工具链不然后期运维会非常痛苦。2.4 从字节方案里我们能直接抄什么不是所有团队都需要做完整的全链路统一但有几个点我觉得是普适的。第一个是“共享Embedding”。把用户在召回、精排、重排里用的Embedding统一起来能在不改变线上架构的前提下改善链路一致性。做法很简单把精排模型产出的User/Item Embedding定期同步到召回侧召回模型在训练时加入一个辅助损失让它输出的Embedding和精排侧的Embedding尽量接近。这样做成本低也不影响现有模块独立迭代。第二个是“精排偏好蒸馏”。就像前面提到的把精排模型对候选的分数作为召回模型的训练信号可以让召回更懂精排的“口味”。这个方法不需要打通梯度只需要离线多跑一遍精排模型生成一个蒸馏标签。我们团队当时做这个改动只花了一个迭代周期就看到了正向效果强烈推荐大家试一试。第三个是“重排约束前移”。重排层加多样性约束是常态但它总是在最后一步才作用前面已经浪费了很多计算。字节的思路是在召回或精排阶段就加入多样性约束让上游提前生成更多样化的候选集合。这样既减轻了重排压力也让最终结果更自然。具体落地时可以在召回阶段做类目/作者的配额控制这在工程上很好实现收益也很明显。3. LinkedIn动态调多目标召回从静态权重到自适应LinkedIn这波工作聚焦在召回阶段场景很具体动态信息流里的人脉推荐、职位推荐、组织推荐天然就是多目标并存的。但多目标召回有一个长期痛点——离线调参的时候权重固定线上分布一漂移就失灵。3.1 召回层为什么要做多目标、为什么多目标容易翻车召回阶段的目标和精排阶段不一样。精排模型面对的是“候选已经比较靠谱”的局面可以在候选集合内部比较谁更好。但召回要处理的是“从全量候选中捞出一批可能靠谱的”目标必须更宽泛。如果召回的目标定得太窄比如只优化点击那很多“长期价值高但短期不会点”的内容就永远没有机会见用户。LinkedIn的场景里多目标尤其明显招聘推荐既要匹配度又要用户点开意愿还要考虑职位本身的时效性人脉推荐既要关系强度又要互动概率还要避免推荐太密导致用户反感。这些目标之间的关系很复杂有些时候互相促进有些时候互相挤压。传统做法是给多个目标各配一个权重然后加权求和作为召回分数。这个方案的最大问题是权重是“全局静态”的对所有用户、所有场景、所有时间都用同一套权重。但真实世界里不同场景的多目标关系完全不同。举个例子一个刚注册的新用户系统最应该做的是让他快速建立兴趣认知此时点击权重应该更高一个高活跃老用户系统更该关注长期留存和深层互动此时匹配度权重应该更高。静态权重做不到这种场景自适应。3.2 LinkedIn的动态调权是怎么设计的LinkedIn这篇论文的核心贡献是把“全局静态权重”改成“上下文相关的动态权重”。具体做法是用一个轻量级的权重网络输入是用户实时特征、场景特征、物品特征输出是各个目标在当前上下文下的权重。这个权重网络和召回主模型一起训练相当于在“学习怎么配权重”。这个思路其实并不复杂难点在于怎么让权重网络学得稳。我试过类似的方法最直观的实现是直接把权重当做一个特征拼进主模型里。但这样做有个问题权重网络很容易被主模型带偏最后学出来的权重几乎没有区分度所有场景都收敛到同一个值。LinkedIn的处理思路是在损失函数层面做约束让权重网络输出保持一定的熵不至于为了拟合训练样本把所有权重都压到一个目标上。另一个关键点是权重网络的输入特征不能太杂。如果输入特征都是高维稀疏ID类特征权重网络本身会变得非常重反而拖慢召回链路。LinkedIn的做法是只用聚合特征比如用户最近一小时的互动分布、当前信息流的类型、活跃度等级等保证权重网络足够轻可以跟主模型一起在线更新。3.3 动态召回权重在工程上的落地细节多目标召回动态权重的工程实现最怕的是“权重漂移”。离线训练时权重网络可能已经收敛但线上用户行为变化很快如果权重网络更新不及时动态权重反而不如静态权重稳定。LinkedIn的做法是做分层更新主模型低频更新权重网络高频更新通过在线学习框架让权重网络快速适应最新分布。这个分层更新思路非常实用。我自己在线下模拟时发现如果让主模型和权重网络同步更新训练过程会非常不稳定损失波动很大。把两者拆开之后主模型负责学习稳定的语义关系权重网络负责捕捉短期变化两者各司其职稳定性和时效性都能兼顾。工程上还要考虑一个重要问题召回阶段的多目标不只是在求分公式里加权重它还影响候选集的采样策略。如果动态权重让某一类目标在某个时间段权重变高了对应的这路候选就要被多采样一些。LinkedIn的做法是在候选生成阶段就根据权重网络的输出动态调整各路召回的配额让召回更“匹配”当前的权重分布。这相当于把动态权重的思想从排序层下沉到了召回源头整个链路的一致性更高了。3.4 LinkedIn方案值得借鉴的简单版本如果你团队里没有LinkedIn那么复杂的业务场景也可以做一个简化版不需要权重网络而是用规则桶的方式做动态权重。比如按用户活跃度分桶新用户桶用一个权重组合老用户桶用另一个组合或者按场景分桶信息流一个组合职位推荐一个组合。分桶的个数不用太多4到8个就够关键是每个桶的权重组合要经过专门的离线实验验证。这种做法的好处是简单、可控、可解释性强。每个桶的权重是怎么定的、为什么这么定业务团队一看就能理解上线后排查问题也容易。我上一个项目就是这么做的把用户按活跃度和历史互动分布分成6个桶每个桶单独调权重整体线上效果提升了2%左右。虽然不如端到端动态权重那么“聪明”但胜在稳。如果要做真正的动态权重我建议从“两目标”做起别一上来就搞四五个目标。目标越多权重的搜索空间越大越不稳定。先选两个核心目标做动态加权把链路跑稳再逐步增加目标。这也是LinkedIn论文里没有细说但实际一定采用过的策略。4. Target混合搜索商品搜索的“语义化”转身Target做的是零售搜索业务场景跟抖音、LinkedIn差异很大但技术内核同样值得关注把传统的稀疏检索和新兴的向量召回结合成一套混合搜索系统。这个方向在电商搜索里越来越主流因为纯靠关键词匹配已经扛不住长尾商品的流量压力。4.1 混合搜索到底混的是什么混合搜索不是简单的“传统搜索向量搜索”并行跑一遍而是要让两种检索方式优势互补。Traditional稀疏检索比如BM25、Elasticsearch里的query match擅长精确匹配用户搜“红色连衣裙”它能精确命中标题里有“红色”和“连衣裙”的商品准确率高可控性好。向量召回则擅长语义匹配用户搜“约会穿什么”它能召回“连衣裙”“小礼裙”“高跟鞋”这些语义相近但字面上完全不含“约会”的品类关键词的商品。电商搜索最痛的点恰恰就是用户表达多样化和商品标题短之间的矛盾。同一个商品不同用户可能用十几种不同的说法来找它。传统关键词匹配只能覆盖其中的一小部分向量召回可以把用户的模糊表达映射到商品语义空间里。Target的方案里混合搜索的关键不是“两路都跑”而是“两路怎么融合”。最粗放的融合方式是分数加权求和但稀疏检索和向量检索的分数空间差异很大、直接加没有意义。Target的做法大概率是用了类似RRFReciprocal Rank Fusion或者学习式排序加权的方式把两个来源的候选在排序层面做统一。4.2 混合搜索的工程实现难题做混合搜索第一个难题是向量召回延迟。电商场景下商品数量可能上千万甚至上亿向量检索的ANN近似最近邻索引虽然能撑住高并发但召回质量和召回延迟之间始终有取舍。Target作为零售超市类业务用户对搜索响应时间极其敏感不可能为了语义匹配牺牲掉响应速度。所以它们的工程实现一定是做了多级索引、GPU推理、批量查询优化等多重手段。第二个难题是商品信息更新。电商商品会频繁上下架、改价、改标题向量索引的在线更新是一个老大难问题。Target的处理思路应该是把索引更新做成异步管道新商品先走传统关键词搜索兜底向量索引延迟几小时甚至一天后跟上。这个兜底机制非常重要不然新上架商品可能长时间搜不出来直接影响转化。第三个难题是搜索评测。传统搜索可以用RecallK、NDCG之类离线指标评估。但混合搜索要额外评估“向量召回是否真正带来了增量价值”比如用户模糊搜索的转化率是否明显提升。如果语义召回带来的只是点击增加、转化没有增加那很可能向量召回的内容匹配度反而更差。Target这个场景特别适合做A/B实验因为零售电商的转化漏斗非常清晰端到端效果容易衡量。4.3 Target方案对中小电商团队有什么启发不是所有团队都有能力自研一套完整混合搜索但在这个方向上有一个特别值得参考的轻量实践用向量召回做“相关搜索词扩展”。也就是当用户搜索关键词时先用传统方式做一遍检索再通过向量相似度找出语义相近的其他关键词把这些关键词匹配的结果混合进来。这样做不需要大规模改造搜索引擎只需要引入一个embedding模型和向量检索服务即可。如果是想做得更深入一点建议从“长尾词”入手。把搜索日志里匹配结果很少甚至为零的搜索词抽出来专门对这批词做向量召回效果反馈最快。一是长尾词本来就没有什么成熟的匹配方案向量召回边际收益高二是长尾词的量级不算大工程实现成本可控。我们做过一次类似改造针对长尾词的小流量实验搜索成交转化率提升了接近3%。值得注意的是混合搜索上线后一定要防止“向量召回把系统带偏”。向量模型是从历史行为里学出来的天然存在马太效应热门商品和热门词的效果会滚雪球长尾内容不一定真的受益。所以一定要在召回配置上做好流量控制给新商品、冷门商品保留一定的展示配额否则混合搜索做完头部集中度反而更严重。4.4 混合搜索与推荐系统的关系Target这篇论文看下来会发现混合搜索已经不像传统的搜索引擎它更像“融合了推荐逻辑的检索系统”。比如用户搜“派对用品”系统返回的结果不仅限于关键词直接匹配的商品还会带一些“配套推荐”的语义相关品。这种体验本质上就是把推荐系统“猜你喜欢”的能力移植到了搜索场景。在大厂内部搜索和推荐的边界也确实是越来越模糊的。传统的观念里搜索是“用户主动表达意图”推荐是“系统被动猜测偏好”。但混合搜索打破了这种二分法用户在搜索框里表达的是有明确意图的但表达方式可能是模糊的、口语化的系统需要同时用匹配能力和推荐能力来满足用户。这对做推荐系统的人来说是一个警示如果你只懂排序优化不懂检索侧的工程实现很容易在搜索与推荐融合的大趋势下失去竞争力。反过来说如果你既有排序算法能力又理解检索链路的架构细节那你在团队里的价值会快速上升。字节、LinkedIn、Target这三篇论文放在一起看本质上都是“算法工程一体化”的产物。5. 推荐系统工程师能从这三篇论文抄到什么作业看完这几篇论文我最大的感受不是“大厂真牛”而是“其实思路挺简单难的是执行细节”。无论全链路统一、动态权重还是混合搜索核心技术点都不是特别创新真正的壁垒在于工程实现和执行深度。5.1 全链路改造先从一致性对齐开始别张嘴就谈大模型很多团队看完字节的论文就热血沸腾想立刻上全套全链路建模。我的建议是先把链路里的一致性做对齐再考虑端到端训练。具体来说先检查召回和精排的标签口径是否一致特征是否对齐样本处理流程是否统一。80%的链路问题其实都是一致性导致的不是模型结构不够高级。一个特别典型的例子某一路召回只看用户短期行为精排模型却以长期留存为目标那不管怎么统一训练两层天然是拧巴的。全链路统一的隐层逻辑是让所有模块共享一套底层语义和一套业务目标。做不到这一点再花哨的结构都是空中楼阁。5.2 动态权重别追求一步到位用小步快跑的节奏切流量LinkedIn的动态调权方案听起来很性感但如果你的团队刚起步我建议先用“分段权重”过渡别急着让权重网络直接在线学习。先离线训练一个逻辑回归版本输出不同场景下的推荐权重再用这份权重做规则桶分到不同流量里试验。等到各个桶的权重组合跑稳了再引入真正的动态权重网络。在切流量的时候一定要保留一个“静态权重对照组”。动态权重的上线效果不是只看业务指标涨没涨还要看系统稳定性、可解释性、可回滚性。我见过不少团队动态权重上线后结果不错但一旦出现bad case排查起来非常困难最后只能整体回滚。保留对照组可以让你随时量化“动态”到底带来多少增量。5.3 混合搜索最值得先做的是“数据侧工程”Target的混合搜索方案听起来很工程但真正决定它效果的其实还是数据质量。商品标题有没有清洗过有没有标准品类体系商品描述是否足够覆盖用户的搜索表达如果你的商品数据本来就是脏乱差的那向量召回只会把“脏”放大。我建议先花精力做好商品侧的知识抽取把标题分词、品类映射、属性标签、卖点短语结构化。这些数据质量项做好了无论是传统搜索还是向量召回效果都会明显提升。混合搜索只是把数据价值变现的最后一公里数据基础不牢什么检索方案都白搭。5.4 给搜索和推荐团队的落地优先级建议如果让我排一个优先级清单我会这样排第一优先级把一致性做好包括标签口径、特征口径、训练样本方式。这是所有链路改造的基础。第二优先级做精排偏好向召回蒸馏让召回侧更快感知精排的供给偏好。这是性价比最高的链路优化手段。第三优先级做召回侧场景化分桶权重用规则桶代替全局静态权重快速拿到增量收益。第四优先级再考虑动态权重网络、全链路可微训练、混合搜索向量化等深度改造。顺序很重要。我见过很多团队一上来就冲第四优先级结果被工程复杂度拖垮连基础的增量收益都没吃到。技术路线不分高低分的是“现在这个阶段适不适合”。6. 常见问题与避坑记录做深度链路改造踩坑是必然的。我把几篇论文落地过程中最常遇到的问题整理一下这部分是我在类似项目中真实踩过的不是从论文里摘出来的。6.1 全链路统一训练中模型反复震荡怎么办端到端联合训练最大的坑就是损失震荡。精排梯度回传到召回侧因为候选分布差异太大召回参数频繁大幅更新导致离线AUC忽上忽下。我们当时排查下来问题出在两个地方一是学习率设置不当召回的梯度量级远大于精排使用统一学习率必然震荡二是梯度裁剪不够激进回传梯度的范数阈值设得太宽。解决方案是给不同模块配置不同的学习率并做一个相对严格的分层梯度裁剪。具体数值你可以从“精排学习率取召回学习率的1/5到1/10”这个量级开始调再根据验证集表现微调。另外可以在训练中阶段性地冻结召回塔让它先消化一段时间精排回传的信息再放开更新这样能明显减少震荡。6.2 动态召回权重的线上分布漂移严重动态权重网络上线初期通常表现不错但跑两三周后效果就开始衰减把日志调出来一看权重网络输出的权重分布已经严重偏向了某一个目标。比如所有流量都学成高点击权重其他目标形同虚设。这个问题本质上是稀疏反馈导致的。点击反馈量级大、信号密而留存、匹配质量这类反馈稀疏且滞后模型自然会认为点击最重要。针对这个情况我建议给每个目标单独设置反馈延迟系数或者对权重网络输出做熵正则——保持各目标权重的分布不要过度集中。另一个土办法是给权重网络加一个“截止线”每个目标权重必须有最低值不允许为零保证各目标的基本曝光量。6.3 混合搜索的召回结果重叠度高排序怎么处理混合搜索最常见的状态是稀疏检索的结果和向量召回的结果高度重合头部商品被两路同时召回长尾商品只出现在一路里。如果直接融合重合商品会 repeatedly 出现排序反而退化成单路效果。我那时候的处理方式是做一个显式的去重策略计算两路结果的向量相似度重合度高的候选直接标记为“单路来源”。排序层对“来源单一”的候选做一个小幅加成鼓励长尾多样性。另外融合权重不要定为固定值而是根据线上query的匹配结果动态调整语义明确的query多信任稀疏检索语义模糊的query多信任向量召回。这两种方法结合之后混合搜索的多样性指标提升特别明显。还有一个容易忽视的点混合搜索的评估周期一定要足够长。语义召回带来的效果变化很慢短期A/B实验经常跑不出显著性。我们做混合搜索时一开始只看三天实验结果各指标都没有显著变化差点下结论说方案无效。后面把评估周期拉长到两周才发现长尾词的转化率有了稳定提升。所以做这类改造评估耐心要足不要被短期数据波动带偏节奏。三篇论文看下来说实话这些大厂方案并没有特别“炫技”的东西反而处处都是工程权衡和落地细节。字节解决的是链路割裂的全局最优问题LinkedIn解决的是目标冲突时的动态适应问题Target解决的是检索匹配和语义理解融合的问题。三个方向单独看都有对应解法但凑在一起才构成了一个完整的推荐搜索系统闭环召回要知道全局目标排序要知道场景差异检索要知道语义插补。对我自己来说最直接的行动计划就是先把“多模块一致性”和“精排反馈向召回蒸馏”这两件事落地稳扎稳打把链路基本功补扎实。这几个方向虽然来自大厂论文但真正决定效果的永远是你对自己业务的理解深度和执行细度。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。