本次查询:Bi-Encoder
中文解释:双编码器
常见场景:搜索引擎 / 智能客服 / 推荐系统
一句话解释
Bi-Encoder 是一种使用两个独立的神经网络(或共享权重的同一网络)分别对查询和文档进行编码,得到两个固定长度的向量,再通过余弦相似度或点积计算匹配分数的架构。它常用于需要对大量候选文档进行快速排序的检索系统。
为什么会被关注
在大规模信息检索场景中,实时计算查询与每个文档的深度交互(如 Cross-Encoder)成本极高。Bi-Encoder 允许提前将所有文档编码为向量并存入向量数据库,检索时只需对查询编码一次,然后通过近似最近邻搜索(ANN)快速召回候选,极大降低了推理延迟。
随着嵌入模型(如 Sentence-BERT、DPR)的成熟,Bi-Encoder 已成为现代搜索、问答和推荐系统的核心组件,尤其在需要平衡精度和速度的生产环境中备受青睐。
核心逻辑
Bi-Encoder 的核心是“独立编码,后计算相似度”。查询和文档分别经过编码器(通常是 BERT 或其轻量变体)得到 CLS 向量或均值池化向量。这两个向量在高维空间中代表各自的语义,相似度通过内积或余弦度量得出。
关键在于编码器可以共享权重(Siamese 网络)或各自独立训练。独立训练时,通常使用对比损失(如 InfoNCE)拉近匹配对、推开非匹配对。这种设计使得文档向量可以离线预计算,在线推理时只需编码一次查询。
常见场景
搜索引擎:用户输入查询后,系统先通过 Bi-Encoder 从亿级文档库中快速召回 top-k 候选,再使用更精细的 Cross-Encoder 重排序。这种两阶段架构兼顾效率与精度。
智能客服:将常见问题(FAQ)预先编码为向量,用户提问时编码查询,通过余弦相似度匹配最相似的 FAQ 并返回答案。Bi-Encoder 能处理冷启动,无需实时训练。
推荐系统:将用户历史行为序列和候选物品分别编码,计算用户向量与物品向量的内积产生推荐分数,尤其适合基于内容的召回和协同过滤的向量化实现。
容易混淆的点
Bi-Encoder 与 Cross-Encoder:Cross-Encoder 将查询和文档拼接后输入一个编码器,通过注意力交互捕捉细粒度关系,精度更高但计算量巨大。Bi-Encoder 则牺牲交互深度换取速度,适合做第一阶段的粗筛。
Bi-Encoder 与单塔模型:单塔模型通常指输入只有一个序列(如编码用户或物品),而 Bi-Encoder 同时处理两个独立输入。此外,“双塔模型”是 Bi-Encoder 在推荐领域的常用别名,但核心思想一致。
Bi-Encoder 与向量检索工具:Bi-Encoder 产生向量,而 Milvus、FAISS 等是存储和搜索这些向量的引擎。二者配合使用,并非替代关系。
