beg-reranker重排原理浅析

         BGE-RankerBAAI(北京智源研究院) 在 2024 年开源的一款专为 文本检索排序(re-ranking)场景优化的双塔+交互式编码器模型,属于 BGE 系列(BAAI General Embedding)家族中的排序模型。

简单说:

  • Embedding 模型(如 BGE-base)用来把 query 和文档编码成向量,再做余弦相似度检索,拿到 top-k 候选。

  • BGE-Ranker 用来对 top-k 候选进一步交互式排序,提升最终排序准确度。

       和常见 embedding-only 检索不同,BGE-Ranker 是 Cross-Encoder 架构,能建模 query 与文档之间细粒度的交互特征,效果远超向量检索,常用在 RAG 或文档问答场景的 rerank 阶段。

BGE-Ranker 基于 Transformer 编码器,是典型的 Cross-Encoder 结构:

  • querydocument 拼接为一个输入序列:

           [CLS] query tokens [SEP] document tokens [SEP]

  • 输入 Transformer,捕捉 query 与 document 之间的交互特征。

  • 取 [CLS] token 的向量表示,送入一个分类头(一般是一个全连接+Sigmoid/Softmax)输出相关性得分。

完整流程:

  1. 检索阶段:用 BGE embedding 模型或其他向量检索模型,检索 top-k 候选文档。

  2. 重排序阶段

    • query 和 top-k 文档两两拼接,作为 BGE-Ranker 输入。

    • 输出每个文档与 query 的相关性分数。

    • 按得分重新排序,得到最终排序结果。

为什么需要重排序?

        embedding 检索模型(如 BGE-base)会给出 query 和文档的向量相似度,通常用余弦相似度或者内积,检索出 top-k。这是第一轮排序。

但问题是:

  • embedding 检索是无交互、对称的:它是先把 query 和所有文档分别编码成向量,再算相似度,没办法捕捉 query 和文档之间更复杂、细粒度的 token 级别交互信息。

  • embedding 向量是压缩表达,丢失了一部分 query 和 document 的上下文语义联系。

所以即便向量相似度很高:

  • 有些文档其实不相关,但因为 embedding 模型对某些词义偏置或语义模糊,导致打分高。

  • 有些真正相关但用不同表述方式的文档,embedding 向量可能打分不高。

但如果你把 query 和文档放在一个 Cross-Encoder(如 BGE-Ranker)里:

  • 它能对 token 对 token 的上下文交互建模,知道 query 中的“ChatGPT”和“BERT”是对比关系,优先匹配有“ChatGPT”和“BERT”对比描述的文档(比如文档C:“ChatGPT 和 BERT 的主要区别是……”)

  • 这类交互 embedding 模型是捕捉不到的。

        

主要是效率 vs 精度的平衡:

  • embedding 检索快:向量库里几百万上千万条,靠余弦相似度或 ANN(approximate nearest neighbor)算法(比如 Faiss、Milvus)能秒级查 top-50。

  • Cross-Encoder 慢:要把 query 和文档两两拼接,tokenize,再跑 Transformer,速度远不如 embedding 检索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值