第3章 搜索算法基础:召回、排序、粗排、精排核心原理

核心认识:搜索系统本质是“漏斗”结构——从海量候选到最终呈现,依次经过召回→粗排→精排→重排四个阶段。面试中常要求你讲清各阶段定位、模型选型与协同优化。本章通过3个高频问答 + 1个真实项目模板,帮你构建完整回答框架。
搜索排序阶段 · 回答框架 整体漏斗 召回 海量候选·向量/倒排 粗排 轻量模型·双塔/内积 精排 复杂模型·DeepFM/MMoE 协同优化 样本·特征·指标联动

面试问答卡片

📌 问答一:召回、粗排、精排的区别与联系

  • 面试问题:请详细解释召回、粗排、精排在搜索系统中的区别和联系。
  • 面试官考察点:是否理解搜索漏斗的整体设计思想、各阶段的定位及权衡(效率 vs 精度)。
  • 回答框架:
    1. 先定义:召回快速获取数百候选(向量检索/倒排索引);粗排用轻量模型压缩至百以内;精排用复杂模型精准排序。
    2. 再讲联系:构成漏斗,前阶段为后阶段提供候选,后阶段依赖前阶段的质量。
    3. 最后举例:淘宝搜索,召回用Faiss,粗排用双塔,精排用DeepFM。
  • 简短示例回答:
    召回从全量库中快速获取数百条候选,常用向量检索;粗排用轻量模型如双塔将候选压缩到百条以内;精排则用DeepFM等复杂模型进行精准排序。三者构成漏斗,效率逐步降低但精度逐步提高,前阶段的质量直接决定后阶段的上限。
  • 可能追问:
    • 粗排为什么不能用精排模型?
    • 如果召回效果很差,精排能弥补吗?
    • 你们实际工作中如何衡量漏斗各阶段的效果?
  • 避坑提醒:
    不要混淆粗排和精排的模型复杂度边界。强调精排受实时性和资源约束不能直接用,回答时要体现对系统延迟、计算资源、特征维度的权衡考虑,而非单纯说“粗排简单”。

📌 问答二:粗排模型的设计思路与优化

  • 面试问题:如何设计一个高效的粗排模型?谈谈常见方案和优化手段。
  • 面试官考察点:对粗排工程与算法平衡的理解,是否了解双塔、蒸馏、一致性优化等前沿实践。
  • 回答框架:
    1. 目标:与精排排序一致性,同时满足低延迟(通常<10ms)。
    2. 模型选型:双塔结构(用户塔+物品塔),在线算内积;也可用三塔引入上下文。
    3. 特征与训练:只使用精排特征子集(避免复杂交叉),训练时采用知识蒸馏(精排得分作为软标签)或联合训练。
    4. 在线加速:特征预计算、向量化、模型量化等。
  • 简短示例回答:
    粗排常用双塔结构,用户塔和物品塔分别计算向量,内积得分。特征选用精排特征子集,避免复杂交叉。训练时可用精排模型蒸馏,或与精排联合训练以对齐排序目标。在线部署时通过向量化计算和模型量化将延迟控制在5ms以内。
  • 可能追问:
    • 双塔模型有什么缺点?
    • 如何衡量粗排和精排的一致性?
    • 蒸馏时损失函数怎么设计?
  • 避坑提醒:
    不要只说“双塔简单易部署”。要指出双塔的内积假设限制了特征交互能力,可能导致信息丢失。回答时最好补充解决缺点的方案,例如添加交叉层或使用蒸馏对齐。

📌 问答三:精排模型的常用结构与效果提升技巧

  • 面试问题:精排模型常采用哪些网络结构?如何持续提升精排效果?
  • 面试官考察点:对建模演进的理解,是否掌握多任务学习、特征交叉、排序损失函数等核心技巧。
  • 回答框架:
    1. 经典模型:Wide&Deep(记忆+泛化)、DeepFM(自动二阶交叉)、DCN/DCNv2(显式交叉层)、MMoE/PLE(多任务学习)。
    2. 效果提升:特征工程(交叉特征、用户行为序列)、损失函数(Pairwise/Listwise排序损失)、样本优化(去偏、负采样策略)、模型结构创新(Attention、Transformer)。
    3. 实验验证:离线AUC/NDCG,在线AB测试。
  • 简短示例回答:
    精排常用DeepFM自动二阶交叉,DCN的Cross层学习显式特征交互。多任务结构如MMoE可同时优化CTR和CVR。损失函数用Pairwise或Listwise排序损失如ListNet,配合AUC提升。此外引入用户行为序列特征和De-bias样本也能显著改善效果。
  • 可能追问:
    • MMoE如何解决任务冲突?
    • 为什么选择DeepFM而不是Wide&Deep?
    • Listwise损失在实际场景中有什么问题?
  • 避坑提醒:
    不要只罗列模型名称而不加解释。回答时需说明选择某模型的原因(例如DeepFM能自动做特征交叉,减少人工特征工作),并结合实际业务场景(比如电商多目标优化选MMoE)。

项目案例:电商搜索粗排模型升级

项目名称电商搜索粗排模型升级(LR → 双塔蒸馏)
业务背景原有粗排采用LR+人工规则,CTR和GMV增速放缓。精排模型已升级,但粗排成为漏斗瓶颈,导致优质商品无法进入精排。
规模指标日均搜索请求1000万次;候选池5000万商品;粗排需要从5000万压缩到300个;延迟要求<10ms。
技术栈TensorFlow 2.x(训练)、Faiss(向量检索)、特征工程(Spark + ODPS)、模型导出ONNX、AB实验平台。
核心难点① 大规模线上实时推理延迟(10ms以内);② 粗排与精排排序一致性差(精排Top50在粗排中仅40%命中);③ 样本选择偏差(训练数据来自老旧粗排的曝光)。
面试高频追问如何衡量粗排与精排的一致性?
答:常用NDCG@K、逆序对比例、精排TopK在粗排TopK中的命中率。我们设定命中率>60%为目标。
可迁移回答话术“我们面临粗排10ms延迟约束,通过双塔+内积实现,但发现粗排排序与精排严重不一致。采用蒸馏+排序一致性损失,将精排得分作为软标签训练,使得粗排Top100中精排命中率从40%提升到55%;同时通过离线采样修正样本偏差,最终CTR提升8%,GMV提升5%。”
✨ 话术结构:问题→约束→方案→量化收益,适合任何“效率与精度平衡”类面试题。
复习建议:本章重点掌握漏斗各阶段的核心指标与模型对应关系。将问答卡片中的框架背诵后配合项目案例中的话术,即可应对90%的搜索排序面试题。