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

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

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


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

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

  • 特点

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

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

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


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

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

  • 特点

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

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

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

查询理解(排序前)

对用户输入的 Query 进行:

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

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

重排 & 混排(排序后)

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

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

4. 整体流程示意

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

5. 总结

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

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

相关推荐
●VON30 分钟前
HarmonyKit | 鸿蒙新特性:router 导航 API 从 pushUrl 到 UIContext 的演进
算法·华为·交互·harmonyos
星释30 分钟前
鸿蒙智能体开发实战:31.鸿蒙壁纸大师 - 环境搭建与基础配置
算法·华为·ai·harmonyos·鸿蒙
ysa05103033 分钟前
【板子】树上启发式合并
数据结构·c++·笔记·算法
学究天人1 小时前
数学公理体系大全:第一章 命题逻辑:真值之舞
人工智能·算法·机器学习·数学建模·动态规划·图论·抽象代数
小O的算法实验室1 小时前
2025年Neurocomputing,基于LLM的进化优化器:结合精英策略推理
算法
2301_800256112 小时前
数据结构基础期末复习例题
数据结构·算法
变量未定义~2 小时前
单调栈-四元组问题
数据结构·算法
峥嵘life3 小时前
Repo 常用操作手册
大数据·elasticsearch·搜索引擎
冷小鱼3 小时前
AI Agent 核心算法:任务规划(Planning)的深度技术解析
人工智能·算法·planning
退休倒计时3 小时前
【每日一题】LeetCode 78. 子集 TypeScript
算法·leetcode·typescript