跳到主内容
快讯直播
AI智模界
AI 词典

双编码器(Bi-Encoder):检索快,但不够细

一句话定义:双编码器(Bi-Encoder)是把查询(query)和文档(document)分别送进编码器,各自压缩成一个向量(vector),检索时只比较两个向量的距离。

它怎么工作

"双"不是因为一定有两个模型,而是同一套编码器被叫了两次:一次把用户的问题变成一串数字,一次把每篇文档变成同样长度的数字。两边各干各的,互相不知道对方存在。

打个比方:招聘时给每位候选人单独拍一张证件照,再给岗位要求单独拍一张,然后靠比照片相似度来挑人。好处是候选人照片可以提前拍好、批量归档;坏处是照片里看不出这个人和这份工作"聊不聊得来"。

落到工程上就是:所有文档离线编码一次,存进向量库;用户提问时只算一次查询向量,再做近似最近邻搜索(Approximate Nearest Neighbor, ANN)。文档规模到百万级,响应依然在毫秒量级。

和交叉编码器的区别

交叉编码器(Cross-Encoder)把问题和文档拼成一条输入,让两边每个词都互相"打招呼"(注意力交互),判断质量高得多。代价是无法预计算——一万篇文档就得跑一万次模型,检索阶段根本扛不住。

维度双编码器 Bi-Encoder交叉编码器 Cross-Encoder
编码方式查询、文档各自独立拼在一起联合编码
交互粒度无,只在末尾比向量词级全交互
文档可否预计算可以,一次编码反复用不可以,每对都要重跑
速度快,适配海量召回慢,适合小规模精排
精度够用但偏粗
典型角色召回(retrieval)重排(rerank)

它丢了什么

查询和文档从没"见过面",所有信息都要挤进一个固定长度的向量里。词级匹配、否定词、条件限定、数字范围这些细节很容易在压缩中糊掉。所以向量相似度高,不等于答案真的好——"不支持退货"和"支持退货"的向量可能挨得很近。

多向量(multi-vector)检索是折中方案:不把整篇压成一个点,而是保留若干个小向量,索引会变大,计算也更重。

对实际工作的意义

今天主流的AI 词典:检索增强生成">检索增强生成(Retrieval-Augmented Generation, RAG)系统基本都是两段式:双编码器负责从百万文档里捞出几十条候选,交叉编码器再从中精排出前几条喂给大模型。前者决定"有没有捞到",后者决定"排得对不对",两者的调优目标并不相同。

对普通用户来说:搜索能在一瞬间返回结果,多半是它的功劳;偶尔遇到"看着像但答非所问"的召回,也是它为了速度付出的代价。具体的向量维度、模型选型与索引参数,以各官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。