AI大模型-阿水
交叉编码器无法提前离线预计算且全注意力开销随候选量倍增,工程落地须通过严格压缩初筛漏斗与自适应路由平衡精度与时延。
AI-assisted summary of 让 AI 答得更准的 Rerank,到底慢在哪? — original source. Check the original for full context.
Source published:
Key ideas
- Rerank 能让 RAG 问答更准但变慢的本质原因,在于它将双塔模型(Bi-Encoder)的离线单向量粗筛换成了交叉编码器(Cross-Encoder)在线拼接 Query 与 Doc 进行 Token 级全注意力交互。 (0:00)
- 交叉编码器计算复杂度随 Token 长度呈平方级增长并乘以候选文档数,使得初筛几十毫秒的延迟在精排阶段迅速增加数百毫秒。 (2:30)
- 业界压降延迟的四类主流解法包括晚期交互(如 ColBERT)、动态自适应路由、100M-300M 级别轻量化模型蒸馏,以及通过 BM25 混合检索压缩送入重排的候选集规模。 (2:30)
- 双向 Cross-Encoder 中提问表示会受到后接文档内容影响,无法直接复用自回归语言模型常见的前缀缓存(Prefix Caching)技术。 (2:30)
Detailed notes
## Background 本视频由 UP 主“AI大模型-阿水”于 2026 年 11 月 2 日发布在 Bilibili 平台。视频简介提供了包括 Agent 学习资料、大模型学习路线、实战案例集与电子书等配套资源的获取链接。
## TL;DR 视频深入剖析了检索增强生成(RAG)中重排(Rerank)机制“既让回答变准又导致系统变慢”的根本原因。传统的双塔向量召回(Bi-Encoder)虽然能依靠离线预计算实现毫秒级粗筛,但缺乏细粒度语义交互;而交叉编码器(Cross-Encoder)通过在线拼接并触发 Transformer 逐词自注意力交互大幅提升了相关性,却带来了平方级增长的在线延迟。针对这一工程瓶颈,阿水提出了四条主流优化路径:采用以 ColBERT 为代表的晚期交互折中方案、基于置信度的自适应动态路由、模型蒸馏与推理加速,以及通过混合检索压低送入精排的候选集规模。
## Atmosphere & style 视频风格务实透彻、极具工程直觉,善于用“对比两本书的摘要”与“带着问题精读原文”等生动比方化解硬核的模型结构差异。主讲人阿水语调沉稳且不盲从权威,在梳理优化方案时频频提醒开发者警惕“延迟翻倍”的绝对化思维和缓存错用的认知陷阱,处处透露出在业务指标与延迟预算之间寻求务实平衡的资深工程师视角。
## Bulletin - [00:00](https://www.bilibili.com/video/BV1iPxC6SEWu?t=0s) Rerank 能让 RAG 问答更准但变慢的本质原因,在于它将双塔模型(Bi-Encoder)的离线单向量粗筛换成了交叉编码器(Cross-Encoder)在线拼接 Query 与 Doc 进行 Token 级全注意力交互。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 交叉编码器计算复杂度随 Token 长度呈平方级增长并乘以候选文档数,使得初筛几十毫秒的延迟在精排阶段迅速增加数百毫秒。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 业界压降延迟的四类主流解法包括晚期交互(如 ColBERT)、动态自适应路由、100M-300M 级别轻量化模型蒸馏,以及通过 BM25 混合检索压缩送入重排的候选集规模。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 双向 Cross-Encoder 中提问表示会受到后接文档内容影响,无法直接复用自回归语言模型常见的前缀缓存(Prefix Caching)技术。
## Key takeaways - [00:00](https://www.bilibili.com/video/BV1iPxC6SEWu?t=0s) RAG 检索本质上是两阶段漏斗机制:第一步召回(Recall)负责轻量粗筛扩大覆盖面,第二步重排(Rerank)在线增加一轮计算换取更精确的相关性排序。 - [00:00](https://www.bilibili.com/video/BV1iPxC6SEWu?t=0s) 双塔模型(Bi-Encoder)将问题与文档独立转化为固定维度向量,仅计算余弦相似度,因两者编码时互不见面,容易在否定词、实体命名和复杂逻辑处丢失细粒度语义。 - [00:00](https://www.bilibili.com/video/BV1iPxC6SEWu?t=0s) 交叉编码器(Cross-Encoder)将用户提问与候选文档直接拼接输入 Transformer,在自注意力机制中实现 Token 级交互,从而大幅提升对复杂条件的精细理解。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 双塔与交叉编码器的核心性能差异在于计算时机:双塔将绝大部分向量计算放到了离线阶段,而交叉编码器必须在用户提问后全部实时在线推理。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 晚期交互(Late Interaction / ColBERT)通过在离线端保留 Token 级多向量、在线端快速汇总对齐,在计算开销与精细度间折中,但会显著增加向量存储与检索成本。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 自适应重排(动态路由)能根据问题难度或初筛置信度跳过重排以降低平均响应成本,但这不会加速复杂请求本身的计算,且需注意业务中短问题不等于简单问题的陷阱。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 模型工程上应优先采用知识蒸馏的 100M-300M 参数轻量级 Reranker,避免盲目使用数十亿参数大模型带来无法接受的推理延迟。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 双向 Cross-Encoder 无法像自回归因果模型那样简单利用前缀缓存共享 Query 的 KV Cache,因为双向自注意力机制会导致提问的表示随文档内容改变。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 业务层结合 BM25 与向量的混合召回能有效压缩重排候选集数量,但候选集缩减 80% 并不等同于端到端延迟下降 80%,且过度压缩存在筛掉黄金上下文的风险。 - [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) RAG 系统落地不应盲目追求纸面效果最强的重排模型,而应在自身具体业务数据与延迟预算之间寻找平衡适用的检索漏斗架构。
## Detailed walkthrough ### [00:00](https://www.bilibili.com/video/BV1iPxC6SEWu?t=0s) Rerank 的两阶段漏斗与为什么变准:从双塔到交叉编码器
在检索增强生成(RAG)系统中,许多开发者会发现一个普遍现象:知识库加上 Rerank(重排)之后,模型的回答变得更聪明、更精准了,但系统的整体响应速度却明显变迟钝了。要理解这个“变准又变慢”的权衡,必须先看知识库从海量文档中检索答案的真实流程。从百万级甚至千万级文档中找答案,从来都不是一次检索就能完成的,而是一个层层筛选的漏斗机制。第一步是“召回”(Recall),利用轻量算法快速捞出比如 100 篇候选文档;第二步才是 Rerank(重排),对这 100 篇候选文档逐一进行精细打分,挑出最相关的 5 篇作为优质上下文交给大语言模型。阿水指出:“这里的 100 和 5 只是方便理解的例子,不是固定配置。为什么要分两步?因为第一步负责尽量找全,第二步负责把真正相关的内容排到前面。所以加上 Rerank 本质上是在漏斗末端增加一轮计算,用更多的在线推理换取更准确的相关性判断。”
传统的初筛召回通常采用“双塔模型”(Bi-Encoder),例如 BGE 或 OpenAI 的 Embedding 嵌入模型。在这种架构下,用户的问题和文档分别由模型独立编码,各自转化为固定维度的向量(如 1024 维),线上检索时再通过计算向量之间的余弦相似度(Cosine Similarity)来评估相关性。双塔的核心在于,问题和文档在编码时彼此“看不到”对方,“这就像分别读两本书的摘要,再判断它们是不是在讨论同一件事”。双塔非常擅长在大规模库中极速粗筛,但固定维度的稠密向量无法完整保留所有细粒度语义,遇到否定词、特定实体命名以及复杂的条件逻辑时容易出现偏差。例如,用户搜索“苹果手机的功能”,双塔可能因为“苹果公司”的主题相似度很高而把公司介绍召回,但真正能回答手机操作细节的段落却排不到最前列。
Rerank 的优势正是在这里体现。常见的神经重排模型采用的是“交叉编码器”(Cross-Encoder),如 BGE-Reranker。它打破了双塔模型的隔离,将用户提问与候选文档直接拼接为一条输入序列,中间插入特殊分隔符,整体送入 Transformer 模型。提问中的每个 Token 与文档中的 Token 在自注意力机制(Self-Attention)中可以直接发生注意力交互。“前面像是在对比摘要,现在更像带着问题精读原文。”模型不仅在看整体主题像不像,还能精细推断具体句子是否满足提问的先决条件。阿水强调,更准确的说法是“理解更细”,而不是完全无损,文档阶段、模型能力和业务领域依然会影响结果,而且这里的交互发生在拼接序列的自注意力中,不必将其理解为独立的交叉注意力模块。
```mermaid flowchart TD accTitle: RAG 两阶段检索漏斗机制 accDescr: 展示从百万文档库经过双塔粗排召回到 Cross-Encoder 精排重排的筛选流程
subgraph Phase1["第一阶段:初筛召回 (双塔 Bi-Encoder)"] A["海量知识库 (百万级文档)"] --> B["离线向量化与 ANN 索引"] Q1["用户提问 Query"] --> C["在线生成单向量"] B & C --> D["余弦相似度快速粗筛"] D --> E["候选文档集 (约 100 篇)"] end
subgraph Phase2["第二阶段:精细重排 (交叉编码 Cross-Encoder)"] E & Q2["用户提问 Query"] --> F["Query + Document 拼接输入"] F --> G["Transformer Token 级自注意力全交互"] G --> H["精细相关性打分与重排序"] H --> I["Top-K 优质上下文 (约 5 篇)"] end
I --> J["大语言模型生成最终回答"] ```
[02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 延迟根源剖析与四种主流优化思路
理解了交叉编码器为什么准,就能明白它为什么会带来极高的在线延迟。双塔模型与交叉编码器最本质的差异在于“计算发生的时间点”。在双塔向量召回阶段,知识库中百万文档的向量化计算早在离线阶段就已经预先处理完毕并存入数据库,用户在线提问时,系统仅需将提问转为向量,然后通过近似最近邻搜索(ANN)极速匹配候选,虽然不能说整条查询是常数复杂度,但大头计算早被消化了。而交叉编码器截然不同,它必须将用户实时提出的问题与每篇候选文档在线拼在一起推理,无法提前预计算。如果召回 50 篇,就有 50 组提问和文档对需要打分。对标准的全注意力机制而言,计算量大致随着输入 Token 数量的平方级增长,再乘以候选文档数量。召回阶段的延时可能仅有几十毫秒,而重排阶段直接增加几百毫秒。阿水提醒大家客观看待性能指标:“所谓延迟翻倍,是某套系统里的结果,不是加上 Rerank 就一定翻倍。”
为了在保留细粒度匹配的同时压降在线延迟,业界形成了四种主要的优化路径:
1. **算法层优化:晚期交互(Late Interaction)** 以 ColBERT 为代表架构。它不把整篇文档压缩成单一全局向量,而是保留文档的多个 Token 级向量。文档侧仍然可以在离线阶段提前编码建库,查询时在 Token 级别做快速的对齐与相似度汇总。它在双塔模型的“离线预计算”与交叉编码器的“Token 级交互”之间找到了折中点,在部分任务上能以较低的在线算力换取接近交叉编码器的效果。但阿水特别指出:“这不是免费的提升,多个向量会增加存储和检索成本,效果与延迟也需要实测,不能直接认定它已经是所有系统的标配。” 2. **架构层优化:动态路由(自适应重排)** 不是所有的请求都配得上昂贵的精排处理。如果是简单的通用闲聊,甚至连召回都不需要;若初筛向量召回的首选结果置信度极高且语义明确,便可以直接跳过 Rerank。只有当问题属于复杂的专业查询、包含多重限制条件,或者召回的候选文档得分胶着、难以区分时,才通过轻量级路由将其分流至 Rerank。阿水提醒这种方案“减少的是所有请求的平均成本,不代表复杂请求本身就变快了”,并且“简单问题不一定容易检索,是否跳过重排要通过业务数据验证,不能只看问题短不短”。 3. **系统层优化:模型轻量化与推理加速** 系统工程上首先可以做知识蒸馏,用大模型指导训练 1 到 3 亿(100M-300M)参数量级的轻量 Rerank 模型,避免盲目使用几十亿参数的大模型;其次是采用 TensorRT-LLM、vLLM 等推理框架优化 Batch 处理与硬件吞吐。关于注意力机制中的 KV Cache(键值缓存),阿水作了关键辨析:若使用支持前缀缓存(Prefix Caching)的自回归因果语言模型做重排,重复的 Query 前缀可以复用缓存;但“常见的双向 Cross-Encoder,提问表示会受到后面文档内容的影响,不能直接照搬这种缓存共享方式,不是输入里有相同提问就一定能缓存”。 4. **业务层控制漏斗:混合检索与候选集压测** 在业务工程端,采用 BM25 关键词检索与向量检索进行混合召回(Hybrid Search),通过多路召回融合先剔除低质量内容,严格把控送入 Rerank 的候选集规模。例如将送入 Rerank 的候选文档从 100 篇压缩到 20 篇,需要打分的文档量直接缩减 80%。但端到端延迟不会同等减少 80%,因为网络开销、提问编码与后续 LLM 生成的固定时间仍然存在。同时候选数量也不能盲目缩减,如果召回阶段就把黄金上下文漏掉了,后续精排再强也无力回天。
阿水总结道,在实际架构落地中,“我们要找的不是最强的重排模型,而是在自己的数据和延迟预算下,最合适的那套检索漏斗”。
- **双塔 (Bi-Encoder) 与 交叉编码器 (Cross-Encoder) 核心差异:** - **交互时机:** 双塔是离线独立编码(Query 与 Doc 互不见面),交叉编码器是在线拼接联合编码(Query 与 Doc 在 Transformer 内部深度交互)。 - **算力开销:** 双塔在线仅算一次 Query 向量和 ANN 向量距离(毫秒级);交叉编码器复杂度随 Token 数呈平方级增长并乘以候选文档数 $N$(百毫秒级)。 - **优化路径落地要点:** - **晚期交互 (Late Interaction / ColBERT):** 换取细粒度交互但显著膨胀向量索引体积。 - **自适应重排 (Dynamic Routing):** 优化宏观 QPS 和平均延迟,需防范“短问题难检索”的业务陷阱。 - **轻量模型与蒸馏:** 优先评估 100M-300M 级别小模型在业务域的数据表现。 - **混合召回限流:** BM25 + Dense 向量互补,卡紧 Top-N 漏斗入口,兼顾召回覆盖率与响应时延。
## Notable quotes > [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 我们要找的不是最强的重排模型,而是在自己的数据和延迟预算下,最合适的那套检索漏斗 — 阿水
> [00:00](https://www.bilibili.com/video/BV1iPxC6SEWu?t=0s) 加上 Rerank 本质上是在漏斗末端增加一轮计算,用更多的在线推理换取更准确的相关性判断。 — 阿水
> [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 简单问题不一定容易检索,是否跳过重排要通过业务数据验证,不能只看问题短不短 — 阿水
> [02:30](https://www.bilibili.com/video/BV1iPxC6SEWu?t=150s) 所谓延迟翻倍,是某套系统里的结果,不是加上 Rerank 就一定翻倍。 — 阿水
## Mentioned 阿水, RAG, Rerank, Bi-Encoder, Cross-Encoder, BGE, OpenAI, BGE-Reranker, ColBERT, TensorRT-LLM, vLLM, BM25
## Video description 视频Agent学习籽料、大模型学习路线、、实战案例集、电子书+问题解答👉https://www.bilibili.com/read/cv52978347/?spm_id_from=333.1387.0.0&jump_opus=1自取哦
[Source](https://www.bilibili.com/video/BV1iPxC6SEWu)