搜索核心算法:从召回到排序

现代搜索引擎的核心框架的确可以概括为 召回(Recall)排序(Ranking) 两大环节。

在大规模工业系统中,这个流程通常被细化为 召回 → 粗排 → 精排 → 重排 的级联架构,但本质上仍属于"先找到候选集,再对候选集排序"。


1. 召回 ------ 从海量候选里"捞"出相关项

目标:快速、高覆盖地从亿级甚至十亿级文档中,挑出几百到几千个可能相关的候选。

  • 特点

    • 速度极快(毫秒级)
    • 可容忍一定粗糙度
    • 高召回率,尽量少漏掉有用结果
  • 常用方法

    • 倒排索引 + 关键词匹配:传统文本搜索基础,如 BM25。
    • 向量语义召回:通过 Embedding 做近似最近邻(ANN)搜索,捕捉字面不匹配但语义相关的内容。
    • 多路召回并行:结合个性化召回、地理位置召回、热门召回、实时召回等多条策略,结果合并后送入下游。

没有高质量的召回,后续排序再精细也无的放矢。


2. 排序 ------ 对候选集"排好队"

目标:精准评估每条候选的得分,把最满足用户需求的结果放到最前面。

  • 特点

    • 模型更复杂,特征更丰富(点击率、相关性、时效性、用户画像等)
    • 处理的文档量已由召回大幅缩减
  • 常见分层

    • 粗排:用轻量模型(如双塔、简单逻辑回归)将候选从几千个快速减到几百个,缓解精排压力。
    • 精排:用复杂的深度模型(如 DeepFM、DIN)逐条精细打分,追求最准确的效果。
    • 重排:在精排结果之上进行多样性控制、业务规则干预(如去重、打散同类目、插入广告、强插内容)。

3. 容易被忽略的关键环节

查询理解(排序前)

对用户输入的 Query 进行:

  • 意图识别、实体识别
  • 分词、纠错、改写、联想
  • 同义词扩展、权重分配

查询理解的质量直接决定了召回和排序的天花板。

重排 & 混排(排序后)

在生成最终展示列表前,需要加入:

  • 多样性打散(避免同一类内容扎堆)
  • 广告、运营位、推荐结果的混排
  • 业务规则(如黑白名单、最小间隔数)

4. 整体流程示意

bash 复制代码
用户 Query
│
▼
[ 查询理解 ] → 纠错/改写/权重
│
▼
[ 多路召回 ] → 倒排召回 + 向量召回 + 个性化召回 ...
│
▼
[ 粗排 ] → 轻量模型快速过滤
│
▼
[ 精排 ] → 深度模型精准打分
│
▼
[ 重排 ] → 多样性 & 业务规则干预
│
▼
最终展示结果

5. 总结

  • 召回和排序是搜索系统最核心的两大骨架。
  • 实际工业系统会拆分为更多层(粗排、精排、重排),本质仍是"召回 → 排序"思想的延续。
  • 系统优化的大部分精力都集中在:
    如何召回更多真正相关的东西 以及 如何把它们排得更符合用户预期

如果想继续深入,可以沿着 多路召回策略、粗精排模型选型、重排多样性算法 这几个方向研究。

相关推荐
余俊晖18 分钟前
多模态大模型细粒度视觉理解:Vision-OPD在线策略自蒸馏技术方案概述
人工智能·深度学习·算法·多模态·opd
脚踏实地皮皮晨33 分钟前
003003001_Grid控件
开发语言·windows·算法·c#·visual studio
Hi李耶1 小时前
【LeetCode】6-Z字形变换
算法·leetcode·职场和发展
XiaoYu1__1 小时前
算法进阶·其一:用SCC、Tarjan算法与缩点思想解决有向图的连通关系及2-SAT问题的拓展
算法
小O的算法实验室1 小时前
AAAI-26,全局相关性学习:通过谱图神经网络增强进化算法
神经网络·学习·算法
段一凡-华北理工大学1 小时前
AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
数据库·人工智能·算法·机器学习·分类·数据挖掘·高炉炼铁智能化
简信CRM1 小时前
适合离散制造中小工厂 MES 系统推荐
算法·机器学习·制造
AKA__Zas1 小时前
芝士算法(前缀和2.0)
java·数据结构·算法·leetcode·哈希算法·学习方法
皓月斯语1 小时前
B3867 [GESP202309 三级] 小杨的储蓄 题解
c++·算法·题解
半夢半醒12 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加菱形、平行四边形、圆角矩形,文本居中显示
算法·c#·流程图