很多人第一次搭建 RAG 系统时都会有一个疑问既然 Embedding 模型能把文本变成向量为什么还要再加一个 Rerank 模型刚开始你可能觉得有它没它区别应该不大但真正用过之后你会发现加了 Rerank 模型后检索结果可能有质的飞跃而这背后涉及到的就是 RAG 检索架构中一个非常核心的设计。4.6.1 双塔结构思想原理双塔结构Bi-Encoder是 RAG 系统中最常用的检索架构也是几乎所有向量数据库的底层基础。双塔的核心思想可以用一句话概括Query 和 Doc 分开编码最后在向量空间中计算相似度如图4-8所示。图 4-8. 双塔检索流程图例如在 RAG 应用开发中我们会先通过 Embedding 模型也就是 Encoder将所有的离线文档都转换成向量存入到向量库中。当用户提问时我们再将 Query 通过 Embedding 模型将其转换成向量然后同向量库中的向量进行相似度比较最后取向量库中前 K 个最相似的文本块作为参考源。你可以把整个过程想象成图书馆的图书检索系统每本书都有一个编号向量读者查询时先拿到查询词的编号然后在书架上找编号最接近的书。4.6.2 双塔结构的优势与不足说完了工作原理我们自然要问为什么双塔结构能支撑百万级甚至更大规模的数据检索这得益于它的一个关键设计文档向量可以提前离线计算好并存入向量数据库查询时只需计算一次 Query 向量然后在向量索引中做近似最近邻搜索Approximate Nearest Neighbor, ANN。这意味着时间复杂度可以从线性的 降低到接近 例如简单的倒排文件索引Inverted File Index, IVF。举个例子如果你有 100 万篇文档使用双塔结构时系统可以在对数级别的时间内找到最相关的文档而不用逐一比较 100 万次。这也是为什么 RAG 系统能够秒级响应而不是等待几分钟。不过双塔结构也有明显的局限性这也是为什么它不能单独使用的原因。由于 Query 和 Doc 在编码时彼此不知道对方的存在模型只能把整段文本压缩成一个固定长度的向量然而一旦压缩完成细粒度的匹配信息就会丢失。换句话说我们希望在编码 Query 的时候它是能够看到 Doc 的这样检索得到的参考内容也将更加准确。举个例子假设你的知识库中有一篇文档讲的是苹果公司 2024 年的财报数据当用户搜索“苹果营收”时双塔结构可能会把这篇文档排在后面因为它在编码“苹果营收”时无法捕捉到“苹果”和“苹果公司”的细粒度对应关系它只能基于整体语义的粗略匹配。所以你会发现只用双塔检索时结果往往是看起来相关但不够精准。4.6.3 单塔结构思想原理说完了双塔结构我们再来看单塔结构是怎么解决精度问题的。单塔Cross-Encoder是另一种常见的架构通常用于排序场景中它的做法与双塔完全不同。双塔是分开编码而单塔则是将 Query 和 Doc 拼接在一起输入模型进行联合编码。具体来说我们会把 Query 和 Doc 的文本拼接成一个序列例如[CLS] Query [SEP] Doc然后再通过 Embedding 模型对整个序列进行编码并输出一个0 到1之间相关性分数最后取相关性分数最高的前 K 的文本块作为参考源整个过程如图4-9所示。图 4-9. 单塔检索流程图此时我们可以把单塔理解成一个专业的审稿人它会仔细阅读问题和文档的每一个字然后判断这篇文档是否真的回答了问题。4.6.4 单塔结构的优势与不足可以发现单塔结构最大的优势在于表达能力强能够捕捉细粒度的语义匹配。在 Cross-Encoder 中Query 里的每个 token 都可以关注 Doc 的每个 token也就是完整的交叉注意力机制。因此这意味着模型可以进行精确的语义对齐以及上下文补全和逻辑关系的判断。还是刚才的例子当用户搜索“苹果营收”文档中写的是“Apple Inc.的年收入”时单塔模型则能够理解“苹果”和“Apple Inc.”是同一个实体“营收”和“年收入”是同一个概念从而给出更高的相关性分数。而双塔结构由于是分开编码所以很难捕捉到这种细粒度的语义对应。然而单塔结构也有一个致命问题这导致它无法单独用于大规模检索。这个问题就是计算成本过高不可扩展。假设有 100 万文档如果用 Cross-Encoder必须对每一个文档都跑一次完整的 Transformer 前向传播这意味着100 万次计算在工程上几乎不可用。想象一下每次用户发起查询你都要让模型跑 100 万次即使用上最好的 GPU响应时间也会达到秒级甚至分钟级这在实际应用中是完全无法接受的。4.6.5 双塔单塔两阶段索引说到这里答案已经很明显了双塔和单塔各有所长也各有所短。那双塔能解决规模问题但精度不够单塔能解决精度问题但规模不行该怎么办工业界的标准答案是两者配合采用两阶段检索架构。这就是为什么你总会看到 Embedding 加 Rerank的组合本质就是双塔加单塔。整体来看第一阶段的 Embedding 模型双塔负责从海量文档中快速召回一批候选结果保证不漏掉相关内容第二阶段的 Rerank 模型单塔负责对这批候选进行精确排序保证排在前面的真的是最相关的。图 4-10. 双塔单塔配合使用流程图可以发现这种设计思路和传统搜索引擎几乎一模一样先用倒排索引快速召回一批候选网页然后再用 PageRank 等算法进行精排最后返回精排后靠前的结果。例如第一阶段双塔召回从 100 万文档中快速筛选出 Top 50 候选目标是保证召回率并控制计算成本第二阶段单塔精排对 Top 50 候选进行精确排序输出 Top 5 最终结果目标是提升排序精度并修正语义偏差。所以双塔-单塔这种架构既兼顾了效率又保证了精度既能秒级响应又能保证结果质量。因此高质量 RAG 系统几乎都包含 Embedding 模型和 Reranking 模型两者缺一不可。4.6.6 两阶段索引扩展除了上面“先粗排再精排”的两阶段索引以外在知识库文档数量多、章节结构清晰如教材、技术手册、法律法规等场景中还有另外一种两阶段索的方式其核心思想依旧是“先粗排再精排”只是考虑的角度不一样整体概括就是先在章节层面做粗召回然后在章节内容做精召回。第1步章节级粗召回。将用户的提问在章节级别做相似度搜索找出与之最相关的前 N 个章节。这一步的目的不是为了找到最终答案而是快速确定答案最可能藏在哪几个章节里把搜索范围从全库收窄到若干个章节。第2步章节内精召回。在第1步选出的章节中对向量块做相似度搜索找出最终的前 K 个文本块。由于搜索范围已经被限定在语义相关的章节内噪声大幅减少检索结果的准确性也会随之提升。当然如果有必要在这一步中还可以使用上面的双塔结构来做重排序。此时可以看出在构建上述两步的过程中一共需要建立两个向量库并且在构建章节级向量库时可以只使用章节的标题和首段摘内容在构建章节内向量库时使用之前介绍的方法即可。4.6.7 混合式 RAG混合式检索增强生成Hybrid RAG它在两步式 RAG 的基础上引入了更多的中间校验步骤同时保留了部分 Agent 式的动态能力。典型的混合式 RAG 会包含以下几个额外环节查询增强在执行检索之前会先对用户的原始问题进行改写或扩展以提高检索质量。更进一步对于表述模糊的问题还可以自动生成多个问题变体分别检索再合并结果。检索结果校验检索完成后先判断返回的文档片段是否真的与问题相关、是否足够充分如果不满足要求可以再次重写问题新检索而不是直接把不相关的内容喂给大模型。回答校验模型生成回答之后还会有一个环节来检验答案的准确性、完整性以及是否与检索到的原文保持一致必要时可以触发模型重新生成回答。可以看出这种架构适合查询本身比较模糊、或者对回答质量要求很高的场景比如医疗、法律等领域的专业问答系统。在第4.10节内容中我们也将搭建一个类似的混合结构。当然对于大多数场景来说从两步式 RAG 起步就已经够用当你发现问题足够复杂、单次检索无法覆盖、或者需要访问多个数据源时再考虑引入 RAG Agent如果业务对答案质量有更高的保障要求再叠加混合式的校验机制。4.6.8 总结到此对于两阶段索引的基本原理就介绍完了。总结起来就是双塔解决的是如何在海量数据中快速找到可能相关的内容而单塔解决的是这些候选内容里哪一个真的回答了问题。一句话双塔负责规模单塔负责精度双塔保证能找到单塔保证找得对。同时对于两阶段索引扩展和混合式 RAG 来说也可以在实际场景中按需选择由浅入深地叠加而不是一开始就搭建一个复杂的结构。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】