面对百万级候选物品,单阶段模型无法在毫秒级完成打分。两阶段架构由此流行:召回负责从海量候选里快速筛出几百到几千个相关项,精排再对这些候选做精细打分和排序。
召回追求的是高召回率和高吞吐,常用向量检索、倒排索引、协同过滤、热门补全等轻量手段。它允许一定的精度损失,只要目标物品不被漏掉即可。
精排追求精准排序,可以使用复杂模型和丰富特征,如 DeepFM、DIN、多任务学习。由于候选量已大幅缩小,计算预算允许它做得更重。
两阶段的目标要一致:召回的评估用 Recall@K,精排用 NDCG 或 AUC。若召回漏掉了用户真正会点的物品,精排再强也无能为力,所以召回天花板决定了整体上限。
实践中还会加入粗排作为过渡,用轻量模型把几千个候选压到几百个,平衡精度与延迟。分层设计本质上是算力与效果的折中。