召回 vs 粗排怎么分工?
推荐系统两阶段定位、目标与协同设计
原题:在推荐系统或信息检索 pipeline 中,召回和粗排阶段分别承担什么功能?它们在整个排序流程中的定位、目标和协同关系是什么?请结合实际场景说明其设计意义。
向量检索 · 哔哩哔哩真题
回答与解析
阶段职责
召回在大候选池中用低成本方法生成候选集合,优化重点是覆盖、吞吐、尾延迟和新鲜度。它通常可以多带入一些不相关项,但漏掉的相关项无法由后续排序补回。
粗排位于召回与精排之间,用比精排便宜、比召回表达力更强的模型淘汰低价值候选。它是可选层:是否需要、每层保留多少候选、模型多大,都由候选规模、精排成本和服务预算决定,不存在通用的“亿级到千级”或“十毫秒”阈值。
协同关系
候选库 → 多路召回或 ANN → 合并去重 → 可选粗排 → 精排 → 约束与多样性重排
召回可来自协同过滤、双塔向量、图、热门或业务规则。粗排可用轻量 GBDT、浅层网络或蒸馏模型,并应覆盖精排所依赖的主要目标。若粗排标签、特征或目标与精排不一致,会产生选择偏差,把后续本可识别的优质项提前删除。
视频推荐可以并行召回关注作者、历史兴趣、相似内容与探索候选;粗排再估计点击、观看或满意度。小候选池或轻量精排可能直接省略粗排。验收应画出候选深度、召回率和延迟成本曲线,并监控覆盖、重复率、保真度及长尾表现。
口语版讲法(约90秒)
- 召回用低成本方法保证候选覆盖
- 粗排用中等成本模型减少精排负担
- 粗排是按规模与预算选择的可选层
- 用覆盖质量与成本曲线决定候选深度
召回和粗排是级联排序中的两个成本层级。召回面对最大的候选池,目标是在资源预算内尽量保住相关项。它可以多带一些不相关候选,因为后续还能过滤;但如果相关项在召回阶段就丢了,精排无法补救。
粗排接收合并去重后的候选,用比精排更便宜的模型做第二次筛选。它不是所有系统的必选项,也没有通用的候选数量、参数比例或延迟阈值。候选池不大、精排足够轻时可以省略;候选多或精排昂贵时,粗排能降低成本。
两阶段最重要的是目标对齐。粗排如果只学点击,而精排优化观看时长、转化和满意度,就可能过早删除精排偏好的内容。多目标训练或蒸馏可以提高保真度,但仍要通过回放和线上实验验证。
我会画候选深度与 Recall@K、精排保留率、P95 延迟和单请求成本的曲线,再按新内容、长尾用户和不同召回路分桶。阶段边界由这组曲线决定。
关键一句:召回保覆盖、粗排控成本,层数和候选深度应由质量成本曲线决定。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设你在做电商搜索,用户搜“白色连衣裙”,系统从千万商品里快速捞出一千个,然后轻量筛到一百个,最后用深度模型排前十。你觉着前两步为什么要分开设计?各自解决什么问题?
- 问法 2 · 层层追问
推荐系统里从海量候选中选出最终展示的几十个,流程上你怎么设计?……召回和粗排是不是可以合并成一步?……那它们各自的目标和定位有什么本质区别?
- 问法 3 · 直球架构
请解释推荐系统pipeline中召回和粗排的功能定位、优化目标差异以及协同关系。结合一个具体场景,说明为什么需要这两个阶段,不能直接用精排处理所有候选。