召回率衡量「该找的有没有找全」,召回策略决定「从海量数据里先捞出哪批候选」。这篇把召回率 vs 准确率、六种常见召回策略、多路召回与 RAG 里的召回优化一次讲清楚,配流程图。
在 AI 领域,召回率和召回策略几乎出现在所有「从一堆数据里找东西」的场景:搜索、推荐、RAG、问答、风控识别、目标检测、信息抽取……它们共同回答一个问题——系统能不能把「应该找出来的东西」尽量找全。
1. 什么是召回率?
召回率(Recall) 衡量的是:在所有真实相关的结果中,系统成功找回了多少。
召回率 = 找回的相关结果数 / 全部真实相关结果数举个例子:系统里一共有 100 条真正相关的数据,你的算法只找回了 80 条。
那么 召回率 = 80 / 100 = 80%,也就是说,系统漏掉了 20 条相关数据。
2. 召回率关注什么?
召回率重点关注的是 少漏掉。它不太在意找回来的内容里有没有噪声,只关心:
该找出来的,有没有尽量都找出来?
所以——召回率高,代表系统覆盖能力强;召回率低,代表系统容易漏检、漏召回。
3. 和准确率有什么区别?
这是最容易混的一对概念:
- 准确率(Precision):找回来的结果里,有多少是真的相关。
- 召回率(Recall):所有真实相关的结果里,有多少被找回来了。
举个对照例子。系统返回了 10 条结果,其中 8 条相关:
准确率 = 8 / 10 = 80% (看起来很准)但如果真实相关的结果其实有 100 条,只找回了 8 条:
召回率 = 8 / 100 = 8% (其实漏了一大片)结果看起来很准,却漏掉了大量相关内容——这就是只看准确率会踩的坑。
4. 什么是召回策略?
召回策略,就是系统用什么方法,从海量数据中先筛出一批候选结果。
实际系统里数据量通常很大,不可能一上来就让大模型、排序模型或复杂算法处理全部数据。所以一般分成几层处理:
flowchart TD
A["海量数据"] --> B["召回层
快速找出一批候选集"]
B --> C["粗排层
初步排序与过滤"]
C --> D["精排层
复杂模型精排"]
D --> E["最终结果"]
style B fill:#dbe9ff,stroke:#2563eb,stroke-width:2px
召回策略的目标不是一步选出最优答案,而是先保证:
有价值的候选结果,不要被漏掉。
5. 六种常见召回策略
关键词召回
按关键词匹配,例如 BM25、倒排索引、Elasticsearch 查询。
- 适合:精确词匹配、名称/编号检索、日志搜索、文档搜索。
- 优缺点:速度快、可解释性强;但对语义理解较弱。
比如用户搜「无人机飞控模块」,系统会优先召回包含「无人机」「飞控」「模块」的文档。
向量召回
把文本、图片、音频转成向量,靠相似度搜索找语义相近的内容。
- 适合:RAG 知识库问答、语义搜索、推荐、相似案例检索。
- 优缺点:能理解语义相似;但可能召回「看着相关、其实不精确」的内容。
比如搜「无人机如何自动规划航线?」,哪怕文档里没有完全相同的关键词,只要语义接近也能被召回。
标签召回
按用户、内容或业务对象的标签来召回。
用户标签:全栈开发、AI、机器人、无人机
内容标签:具身智能、飞控、数字孪生、点云处理系统按标签匹配召回相关内容,适合推荐系统、内容分发、业务筛选。
协同过滤召回
推荐系统的经典套路,逻辑是「和你行为相似的人喜欢什么,你可能也喜欢」,或者「和这个商品相似的商品也推荐给你」。适合电商、短视频、文章、音乐推荐。
热门召回
按全局热度召回:热门文章、热门商品、高频搜索词、高点击内容……适合冷启动、首页推荐、兜底推荐。
规则召回
按业务规则召回候选,例如:
只召回最近 30 天的数据
只召回同城市的数据
只召回当前用户有权限访问的数据
只召回某个业务类型的数据在企业系统里规则召回非常常见,尤其涉及权限、合规、业务边界时。
6. 多路召回:实战里最常见的形态
真实项目里,单一通道往往不够,最常见的是 多路召回——同时跑多种召回方式,再把结果合并、去重、打分,交给排序层:
flowchart TD
Q["用户问题"] --> R1["关键词召回
精确匹配"]
Q --> R2["向量召回
语义相似"]
Q --> R3["标签召回
同业务主题"]
Q --> R4["权限 / 规则过滤"]
R1 --> M["候选合并去重"]
R2 --> M
R3 --> M
R4 --> M
M --> RR["重排序 Rerank"]
RR --> LLM["大模型生成答案"]
style M fill:#dbe9ff,stroke:#2563eb,stroke-width:2px
style RR fill:#ffe9d5,stroke:#b71d18
7. RAG 系统里的召回策略
RAG 里召回策略尤其关键:如果召回阶段没把正确文档找出来,后面的大模型再强也很难答对。
典型流程:
flowchart TD
A["用户问题"] --> B["问题改写
Query Rewrite"]
B --> C["关键词召回 + 向量召回"]
C --> D["文档片段召回"]
D --> E["重排序 Rerank"]
E --> F["上下文拼接"]
F --> G["大模型回答"]
style C fill:#dbe9ff,stroke:#2563eb,stroke-width:2px
style E fill:#ffe9d5,stroke:#b71d18
RAG 里常见的召回优化手段:
- 提高 chunk 切分质量、调大 topK
- 混合检索(BM25 + 向量)
- 引入 rerank 重排序模型
- 增加元数据过滤
- 问题改写、同义词扩展、领域词典增强
- 多轮上下文补全
8. 召回策略的核心取舍
召回不是越多越好,也不是召回结果越多越好。它要平衡三件事:
- 召回率:不要漏掉相关结果
- 准确率:不要召回太多无关结果
- 成本与性能:不能太慢、太贵
业务上通常的分工是:
召回阶段「广撒网」,宁可多召一点保证不漏;排序阶段「精挑选」,再负责筛掉噪声。
9. 一个完整业务例子
假设做一个 AI 知识库问答平台,用户问:「无人机航线规划能力如何实现?」可以这样设计召回:
- 关键词召回:匹配「无人机」「航线规划」「DJI SDK」「飞控」等词。
- 向量召回:召回语义接近「无人机任务规划」「飞行控制」「航测路径」的文档。
- 标签召回:召回标签为「无人机控制」「具身智能」「飞控模块」的文档。
- 权限过滤:只保留当前用户可访问的文档。
- Rerank:对候选文档重排序,选出最相关的前几段。
- LLM 生成:基于最终上下文生成答案。
一句话总结
召回率衡量系统「有没有把相关结果找全」;召回策略是从海量数据中「先找出可能相关候选集」的方法。
在 AI 系统里,召回策略决定了模型能看到什么——如果召回阶段就漏掉了关键内容,后面的排序、推理和生成都很难补救。
