当前位置: 首页 > news >正文

【AI Agent面试题】检索 rerank 为什么重要,怎么做?

从"向量召回不够准"讲到召回 + 精排两阶段 · 面向做 RAG 的开发者

做 RAG 时经常遇到这样的怪事:把 top-k 从 5 调到 20,答案反而更差了。检查召回,正确的那段其实在里面,但排在第 12 位,被前面一堆"看起来相关、实际没用"的片段淹没了。面试里这道题常被问:既然向量检索已经能召回,为什么还要 rerank?它到底解决什么、又是怎么做的?核心答案就一句:用"召回 + 精排"两阶段,把粗筛的量和精排的准分开做。

为什么单靠向量召回不够

向量检索(dense retrieval)的做法是:离线把每段文档用 embedding 模型压成一个固定长度的向量存进向量库;在线时把 query 也编码成向量,用近似最近邻(ANN)搜相似的片段。它最大的优点是快——百万级文档也能毫秒级返回。但快的代价是"糊":

  • query 和文档是分开编码的

:这叫 bi-encoder(双塔),两边各自压成向量后只做一次点积/余弦。文档在入库时并不知道将来会被什么 query 检索,只能编码成一个"平均意义上都还行"的向量。

  • 一个向量装不下全部语义

:一段几百字的文档被压成 768 维,细粒度的匹配信号(某个关键实体、某种否定关系)在压缩中被抹平。

  • 相似 ≠ 相关

:向量相似度衡量的是"整体语义接近",但"接近"的片段未必真能回答问题。近义词、同话题但答非所问的段落,分数经常虚高。

结果就是:向量召回擅长"把可能相关的都捞上来"(高召回),却不擅长"把最该在前面的排到前面"(精度有限)。真正有用的那一两段,常常排在中游。

解法:召回 + 精排两阶段

rerank 的核心思想是分工——不追求一个模型既快又准,而是拆成两级流水线:

  1. 召回(retrieve / 粗排)

:用便宜的向量检索(或再叠加 BM25 关键词检索)从海量文档里快速捞出一批候选,比如 top-50 或 top-100。这一步只求"别漏",宽进。

  1. 精排(rerank)

:用一个更强但更慢的模型,对这几十个候选逐一和 query 做精细打分,重新排序,取最终 top-3 或 top-5 喂给大模型。这一步只求"排准",严出。

为什么要分两步而不是直接用精排模型扫全库?因为精排模型太贵,扫百万文档根本跑不动。让向量检索把候选从百万砍到几十,精排就只需处理几十条——又快又准,各取所长。

# 两阶段检索的典型流程 candidates = vector_search(query, top_k=50) # 阶段一:粗召回,宽进 scored = cross_encoder.rank(query, candidates) # 阶段二:精排打分 context = scored[:5] # 严出:只留最相关的几条

精排怎么做:cross-encoder 是关键

精排能"更准",靠的不是更大的向量,而是换了一种模型结构——cross-encoder(交叉编码器)。

它和召回用的 bi-encoder 最本质的区别在于:把 query 和候选文档拼在一起,一次性送进模型,让两者从第一层就开始做逐词的交叉注意力(cross-attention),最后直接输出一个相关性分数。

# bi-encoder(召回):两边分开编码,事后算相似度 score = cos( encode(query), encode(doc) ) # cross-encoder(精排):拼在一起送进模型,直接出分 score = model( "[CLS] " + query + " [SEP] " + doc )

因为 query 的每个词都能直接"看到"文档的每个词,cross-encoder 能捕捉 bi-encoder 丢掉的细粒度信号:否定、限定条件、实体是否精确对上、问题和答案的逻辑对应。这也是它更准的根本原因。

但代价同样明确:它无法预先离线编码——每来一个 query,都得把它和每个候选现算一遍,没法像向量那样建索引。所以 cross-encoder 只能用在"已经被砍到几十条"的候选上,绝不能扫全库。这恰好和两阶段架构互补:bi-encoder 负责规模,cross-encoder 负责精度。

维度召回 · Bi-encoder(双塔)精排 · Cross-encoder(交叉)
输入方式query 与 doc 分开编码query 与 doc 拼接后一起送入
能否离线建索引能,文档向量可预存不能,每次 query 现算
速度快,百万级毫秒返回慢,只能处理几十条候选
精度有限,细粒度信号被压平高,逐词交叉注意力
定位第一阶段,宽进保召回第二阶段,严出保精度

落地时的实用要点

  • 召回宽度要够

:精排只能重排它拿到的候选,召回漏了就补不回来。top-k 召回建议给到 50~100,用 rerank 后再收窄到 3~5。宁可粗召回多捞,也别在第一步就漏掉答案。

  • 混合召回更稳

:向量检索 + BM25 关键词检索并联(hybrid),能同时覆盖"语义相近"和"字面命中"两类情况,再统一交给 rerank,比单路召回鲁棒得多。

  • rerank 是延迟大头

:cross-encoder 一次要跑几十次前向,是整条链路里最慢的一环。可以选轻量 rerank 模型、控制候选数量,或用现成的 rerank API(如 Cohere Rerank、BGE-reranker、Jina Reranker)平衡效果与延迟。

  • 别把 rerank 当万能药

:它只能在召回结果里排序。如果召回本身质量差、正确片段根本没进候选,rerank 也无能为力——问题得回到切分策略、embedding 模型和召回宽度上解决。

一句判断:如果你发现"答案其实召回到了,但排在中游被噪声挤下去",那正是 rerank 的用武之地;如果"答案压根没被召回",那要修的是召回,不是精排。

一句话总结

向量召回快但糊,bi-encoder 分开编码只能保召回、保不了精度;rerank 用召回 + 精排两阶段破局——先用向量检索宽进捞出几十个候选,再用 cross-encoder 把 query 和文档拼在一起逐词精算重排,取最准的几条。规模交给召回,精度交给精排,各司其职,这就是 rerank 重要且好用的原因。

这里给大家精心整理了一份全面的AI大模型学习资源包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

👇👇扫码免费领取全部内容👇👇

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

4. 2026行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

http://www.cnnetsun.cn/news/4107659.html

相关文章:

  • 双积分政策倒计时:企业应对策略与合规路径深度解析
  • UE4SS 加载失败别急着删了重装:一张问题分级地图加 3 步排查,让 “Failed to load UE4SS.dll“ 一次说再见
  • Whisky 上手指南:M 芯片 Mac 免费畅跑 Windows 软件的完整图文教程
  • 从KV Cache到Prefix Caching:Agent框架中的缓存一致性挑战与设计策略
  • 嵌入式开发入门:从LED闪烁项目掌握GPIO控制与开发环境搭建
  • 字节豆包日均 Token 180 万亿、阿里 Qwen3.8-27B 两天下载 100 万:国产大模型 8 月“双线开花“意味着什么
  • 黑苹果触摸板手势失灵怎么办?5步调校找回丝滑体验
  • 078-达芬奇的练习笔记
  • 深入 SAP Gateway $filter System Query Option APIs,从表达式树到 Visitor 模式
  • 《代码随想录》刷题打卡day32:动态规划-背包问题part03
  • After Effects手绘拼贴风动画全流程:从素材到有机动态
  • Pixel Sorter 4插件实战:用AE制作音频驱动像素故障艺术
  • Arduino轴测投影:在微控制器上实现3D图形渲染的轻量级方案
  • CorelDRAW高效选择技巧:从底层逻辑到实战应用
  • RT-Thread内核移植实战:空闲线程与钩子函数在iCore3上的深度应用
  • 【2026年】教学实验室通风系统:兼顾安全与节能的人性化设计思路
  • 密集潜在通信:构建异构智能体间高带宽思维桥梁的技术解析
  • 树莓派安全NFC模块实战:基于PN532与ATECC608A的硬件加密认证
  • 做.NET开发2年,想转全栈,有什么进阶路线分享?
  • ESP32-S3掌机运行《毁灭战士》:CardPuter硬件改造与DoomGeneric移植实战
  • 三步让PL2303老芯片重获新生:Windows 10无法识别串口设备的驱动解决方案
  • ATmega32接入Arduino IDE实战:MightyCore配置与ISP/Bootloader避坑指南
  • HarmonyOS 7.0 / API 26 空间音频兜底:耳机能力不一致时播放链路怎么切回普通模式
  • RT-Thread Studio多任务开发:从环境搭建到线程通信与调试实战
  • 基于SpringBoot的中小学课后延时服务系统(毕业设计项目源码+文档)
  • 同样是 Skill,为什么有的收费卖爆,有的免费没人用?
  • 双可执行规格:弥合需求与实现鸿沟的工程实践
  • LED点阵滚动徽章制作:从硬件驱动到软件扫描的嵌入式实践
  • 吉利嘉际预售15-18万,家用MPV市场价值战如何破局?
  • CAD绘图实战:从练习图到工程图纸的完整工作流解析