跳到主内容
快讯直播
AI智模界
AI 词典

召回与排序:搜索为什么先粗筛一大把再精排十几条

一句话定义:召回(Recall / Retrieval)是从海量内容里快速捞出一小批"可能相关"的候选,排序(Ranking / AI 词典:Reranking">Reranking)再对这批候选做精细打分、排出最终顺序——搜索、推荐、RAG 基本都是这套两段式流水线。

为什么不能一步到位

假设你有一个百万条文档的知识库,用户搜"报销流程"。如果让最精细的模型逐条给这一百万条打分,慢且贵,根本撑不住线上响应。

于是工程上拆成两步:先用便宜、快的手段把范围从"一百万"缩到"一百",再用贵、准的模型从"一百"里挑出"十"。

打个生活化的比方:招聘。HR 不可能对每份简历都做两小时深度面试。先用关键词筛一遍(学历、年限、技能词),从几千份里挑出几十份——这是召回;再对这几十人逐个细聊、综合打分、排出录用顺序——这是排序。召回负责"别漏掉好人",排序负责"把最合适的人放前面"。

两阶段各自在干什么

召回阶段追求高召回率(recall),宁可放进一些不相关的,也不能漏掉真正相关的。常见做法有两类:

  • 稀疏检索(sparse retrieval),如基于关键词/倒排索引的 BM25,字面命中就加分;
  • 稠密检索(dense retrieval),把查询和文档都编码成向量(embedding),用向量数据库做近似最近邻搜索(ANN),比的是语义相近。

实践中常把两路结果合并(fusion),取长补短。

排序阶段追求精度(precision)。候选只有几十上百条,可以上重的模型:跨编码器(cross-encoder)把"查询+文档"拼在一起过一遍,做细粒度的相关性判断;也可以叠加业务信号——时效性、权威性、用户历史偏好、点击率预估等。所以排序常常不是单个模型,而是一串打分器的流水线。

维度召回(Recall)排序(Ranking)
输入规模百万到亿级几十到几百条
目标别漏(高召回)排准(高精度)
手段倒排索引、向量近邻重模型精排、业务特征
成本必须极便宜可以贵一点
衡量召回率、命中率NDCG、MRR、点击率

和相邻概念的区别

召回 ≠ 检索的全部:向量检索通常只承担召回这一段;真正决定"第一条显示什么"的是排序。

两阶段 ≠ 多层:工业界常做成三级——召回 → 粗排 → 精排,粗排是两者的折中,用轻模型再砍一刀。原理相同,都是漏斗。

RAG 里的对应关系:检索增强生成(RAG)同样是先召回文档片段,再(可选地)用重排模型(reranker)精排,然后把最相关的几条塞进上下文。上下文窗口有限,排序掉链子,模型就会被无关内容带偏。

对从业者的实际意义

1. 先查召回,再调排序。答案压根没被召回,排序模型再好也救不回来。离线评估要分开看两段的指标。

2. 召回通道要多路并行。关键词擅长精确匹配(型号、人名、错误码),向量擅长同义改写,两路都要。

3. 排序决定体验上限,也是加业务规则的地方:去重、打散、时效加权、多样性控制,通常都在这一层做。

4. 成本与延迟是硬约束。每一层的候选量级,本质上是被算力和响应时间倒推出来的设计决策。

一句话收尾:搜索从来不是一步到位,而是先用便宜的办法把大海捞针变成盆里捞针,再用贵的办法把针排个队。具体的模型选型和参数配置,以各家官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。