什么是 双编码器(Bi-Encoder)?
双编码器(Bi-Encoder)是一种检索模型架构,它分别把查询和文档编码为嵌入向量,使二者可以通过相似度搜索高效比较。
工作原理
双编码器使用一个编码器处理查询、另一个编码器处理文档,二者通常共享权重,然后用点积、余弦相似度或其他向量度量比较嵌入。由于文档嵌入可以提前计算,双编码器足够高效,适合大规模检索,也广泛用作 RAG 的第一阶段检索器。代价是模型在检索时不会联合阅读完整查询-文档对,因此细粒度相关性判断通常交给交叉编码器重排器。
主要特点
- 将查询和文档独立编码到同一向量空间
- 允许文档嵌入预先计算并存入向量数据库
- 适合在大规模语料上做第一阶段候选召回
- 在细粒度相关性判断上通常不如交叉编码器精确
- 生产 RAG 管线中常用于重排之前的快速召回
常见用途
- 为 RAG 索引中的文档分块生成嵌入
- 从向量数据库检索 top-k 候选结果
- 为大型知识库提供低延迟语义搜索
- 使用兼容嵌入构建多语言检索系统
- 把快速候选召回与较慢的交叉编码器重排结合
示例
loading...
Loading code...常见问题
为什么双编码器速度快?
文档嵌入可以离线计算。查询时系统只需要编码查询,并执行向量相似度搜索。
查询编码器和文档编码器一定是同一个模型吗?
不一定。有些系统共享权重,也有系统使用针对查询和文档不同分布训练的非对称编码器。
双编码器的主要限制是什么?
它比较的是压缩后的向量表示,而不是联合阅读完整查询和文档,因此可能遗漏细粒度相关性信号。
双编码器和交叉编码器是什么关系?
双编码器通常用于快速召回,交叉编码器则在较小候选集上进行更精确的成对打分和重排。