首页/AI/RAG 与向量库速查/Cross-Encoder 交叉编码重排
本包目录(229 条)

Cross-Encoder 交叉编码重排

重排用交叉编码模型把「查询 + 候选片段」拼成一对送进模型打分:比向量检索的双塔余弦更准但更慢,因此只对召回候选池(几十条)精排,不用于全库检索。

RAG 与向量库速查AI更新于 2026-10-12

召回 → 重排两阶段

召回 → 重排两阶段
import numpy as np
from sentence_transformers import CrossEncoder

reranker = CrossEncoder("BAAI/bge-reranker-base")

candidates = vector_store.search(q_vec, top_k=50)      # 粗排
pairs = [(query, c.text) for c in candidates]
scores = reranker.predict(pairs)                        # 逐对打分
ranked = [c for _, c in sorted(zip(scores, candidates), key=lambda x: -x[0])]
top_docs = ranked[:8]                                   # 进入上下文
重排分数与向量分数不在同一量纲:依赖分数阈值时以重排分为准单独校准。

易错点

  • 把全部文档都过一遍交叉编码器,延迟从毫秒级涨到秒级
  • 重排后按原始向量分数再排一次,把精排结果打乱

数据来源与参考

  • Sentence Transformers 官方文档(Cross-Encoder / Reranking)
  • Nogueira & Cho, Passage Re-ranking with BERT (arXiv:1901.04085)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌