Q22RAG 检索增强对比选型AgentAlpha 社区约 6 分钟更新 2026-09-29

Bi-Encoder vs Cross-Encoder:双塔和交叉编码怎么配合

双塔可建库快、交叉编码精度高但算不起全库。这篇给两种编码结构的对比表与「召回找得到、重排排得对」的标准配合链路。

面试官原题

检索为什么用双塔、重排为什么用交叉编码?

面试官 · Agent 岗面试现场

先给结论

在架构设计中,双塔模型与交叉编码器不是替代关系,而是各司其职的配合组合。面对海量文档的建库与初筛,必须选择双塔模型。它的文档向量可离线预计算并建立索引,能支持亿级数据的快速检索。当需要对初筛出的少量候选文档进行精准排序时,则选择交叉编码器,依靠词元级交互判定相关性。

工程标准链路是让双塔模型负责找得到,从全量库中粗筛出几百到几千篇候选文档;由交叉编码器负责排得对,对头部的几十篇文档重排,最后取前几名进入上下文。两者结合在吞吐与精度间取得平衡。

逐项对比

对比维度Bi-EncoderCross-Encoder
定位粗召回阶段重排阶段
强项检索快,支持离线预计算建索引,可扩展至亿级词元级交互充分,相关性判定精度高
弱项交互浅,无交叉注意力,精度有上限无法预计算建库,吞吐低三个数量级
典型场景从全量知识库中召回百千级候选对初步召回的几十篇候选进行重排
成本离线计算集中,在线检索计算量低在线阶段每对文档需实时联合编码,计算量大

双塔模型与交叉编码器的核心差异在于查询与文档的交互时机。双塔模型让查询与文档分别独立编码成向量,通过计算向量距离得出相似度。这种架构允许文档向量离线完成计算并存入数据库,在线检索只需计算查询向量,速度快。但两者在编码阶段无词元级交叉注意力,交互浅,精度有上限。

交叉编码器将查询与文档拼接后联合输入模型,单次编码直接输出相关性分数。这种方式实现了充分的特征交互,精度高。代价是每对查询和文档都需要实时计算,无法提前建库,吞吐量比双塔模型低三个数量级。这就像看简历初筛与单面考核的区别,前者快但看表面,后者深但耗时。

在训练方式上,双塔模型常采用对比学习,依赖批次内的负例拉开向量距离。交叉编码器则依赖人工标注的相关性分数进行监督训练。实际应用中,两者经常使用同一个基础模型底座,只是顶部接入不同预测头适应不同任务。

面试怎么答

遇到此类选择题,建议先界定业务所处的检索阶段,再给出组合使用的标准方案。先说明由于计算复杂度差异,两者在架构中承担不同职责。接着阐述双塔模型用于粗召回,解决亿级数据下找得到的问题;交叉编码器用于精排,解决少量候选排得对的问题。

面试时的典型踩坑点是回答交叉编码器可以替代检索。必须明确指出交叉编码器算不起全量库数据,它只能用于精排少量候选。若强行用其进行全库比对,系统会因吞吐量过低而无法响应。

—— 本场面试完 ——

我们不做玩具级 Demo 教学。训练营的作业是开源项目和论文——我们想陪伴你,做出能改变生活、最后改变世界的项目。