真实面经题目 · 原创解析
推荐系统的召回、排序和重排链路如何理解?
这道题考察候选人是否能从工程链路而不是单点模型理解推荐系统:召回负责从海量候选中高覆盖地捞出可能感兴趣的内容,排序负责用特征和模型估计用户行为价值,重排负责在最终曝光前加入多样性、新鲜度、去重、业务规则和体验约束,同时还要兼顾在线延迟、离线评估和 A/B 实验闭环。
真实面经题目 · 原创解析
这道题考察候选人是否能从工程链路而不是单点模型理解推荐系统:召回负责从海量候选中高覆盖地捞出可能感兴趣的内容,排序负责用特征和模型估计用户行为价值,重排负责在最终曝光前加入多样性、新鲜度、去重、业务规则和体验约束,同时还要兼顾在线延迟、离线评估和 A/B 实验闭环。
推荐系统通常可以理解为“多路召回、分层排序、约束重排、实验迭代”的在线决策链路。用户一次请求进来后,系统不会直接对全库商品或内容做精排,而是先通过多路召回从海量物料中快速取回几百到几千个候选,例如协同过滤、向量召回、热门召回、实时兴趣召回、规则召回、运营召回等,目标是覆盖潜在兴趣并控制耗时。随后进入粗排和精排,粗排用较轻模型快速筛掉低质量候选,精排使用更丰富的用户、物料、上下文、交叉和实时特征,通过深度模型或多任务模型预测点击率、转化率、停留时长、互动概率等目标。最后重排不只是按模型分数降序,而是在候选列表上施加多样性、新鲜度、去重、频控、业务配额、风险过滤、探索流量等约束,形成真正可展示的结果。整个链路还要有明确的在线延迟预算、缓存和降级策略,并通过离线指标、在线 A/B 实验和长期业务指标持续校准。
推荐链路的核心矛盾是“候选空间巨大、在线响应时间有限、业务目标多样”。因此工业系统通常不会用一个模型端到端处理所有物料,而是分阶段逐步缩小集合。召回阶段强调高覆盖和低延迟,排序阶段强调个性化预测精度,重排阶段强调最终列表体验和业务约束。面试时要把它说成一条工程流水线,而不是只讲某个模型名称。
召回的目标是在毫秒级到几十毫秒内,从百万级或亿级物料中取回用户可能感兴趣的候选。常见多路包括基于用户行为的协同过滤、基于内容标签的召回、双塔向量召回、热门和趋势召回、实时兴趣召回、相似物料召回、地理位置召回、运营规则召回等。多路召回不是简单相加,还要做通道配额、召回原因记录、去重、质量过滤和召回覆盖率监控,避免某一路强势通道挤压其他有价值候选。
召回后的候选数量仍然较大,直接精排会带来特征计算和模型推理压力,所以常见做法是先粗排再精排。粗排模型通常特征较少、结构较轻,目标是用较低成本过滤明显不相关物料;精排则引入更完整的用户画像、物料属性、实时行为、上下文、序列兴趣和交叉特征,使用 LR、GBDT、Wide&Deep、DIN、DeepFM、多任务模型等估计点击、转化、停留、互动或收益。
特征是排序质量的基础,通常分为用户特征、物料特征、上下文特征、统计特征、交叉特征和实时特征。用户特征包含长期偏好、近期行为、活跃度、消费能力等;物料特征包含类目、标签、作者、价格、质量分、发布时间等;上下文包含时间、地点、设备、场景入口;交叉特征刻画用户和物料是否匹配。工程上还要关注特征一致性、实时性、缺失值处理、训练服务一致性和特征穿越问题。
重排阶段面对的是最终曝光列表,因此不能只按精排分数从高到低排列。它需要处理同质内容聚集、重复物料、过期内容、低质内容、用户疲劳、商业化比例、运营插入、风险合规和探索流量等问题。常见策略包括类目或作者打散、多样性约束、新鲜度加权、曝光频控、相似内容去重、业务配额、冷启动扶持和黑白名单过滤。重排的难点在于既要提升体验,又不能过度破坏排序模型的个性化收益。
推荐系统是强在线服务,链路设计必须把延迟预算拆到召回、特征、模型、重排和返回各个环节。多路召回通常并行执行,部分结果走缓存,向量检索依赖 ANN 索引,排序推理需要批量化或模型压缩,特征服务要支持高并发低延迟。还要有超时截断、通道降级、默认召回、缓存兜底和监控告警,保证某个依赖抖动时推荐服务仍能返回可用结果,而不是整体不可用。
离线评估主要用于快速筛选召回、特征和模型方案,常看 Recall@K、HitRate、AUC、LogLoss、NDCG、MAP、校准度、覆盖率和多样性等指标。但离线指标不能替代线上效果,因为曝光偏差、位置偏差和用户反馈闭环会影响真实收益。最终必须通过 A/B 实验验证 CTR、CVR、GMV、停留时长、留存、投诉率、延迟等指标,并结合护栏指标判断是否真正可上线。
因为用户兴趣来源是多样的,一个模型很难同时覆盖长期偏好、短期热点、相似物料、冷启动内容、实时行为和运营诉求。多路召回可以用不同机制覆盖不同候选来源,再通过排序统一比较。这样既提升覆盖率,也降低单一路径失效带来的风险。
粗排更关注成本和吞吐,通常候选更多、特征更少、模型更轻,目标是快速过滤明显不合适的物料。精排面对的候选更少,可以使用更丰富的特征和更复杂的模型,目标是更准确地估计点击、转化、停留或收益等业务目标。
精排分数通常只反映某些预测目标,例如点击率或转化率,但最终列表还要考虑用户体验和业务规则。如果前几位全是同类内容、同一作者或重复商品,短期点击可能不错,长期体验会下降。重排通过多样性、新鲜度、去重、频控和配额约束修正最终展示结果。
离线评估适合快速验证模型、特征和召回策略,成本低、迭代快,但它基于历史日志,容易受到曝光偏差、位置偏差和样本选择影响。线上 A/B 才能验证真实用户反馈和业务收益,因此通常先离线筛选,再小流量实验,最后根据主指标和护栏指标决定是否放量。
新鲜度用于避免系统长期只推荐旧内容或已充分曝光的内容,让用户看到近期更新和趋势变化;多样性用于避免结果过于同质,让列表覆盖不同类目、作者、价格带或兴趣方向。两者都需要和排序分数平衡,过强会牺牲相关性,过弱会导致体验疲劳。