召回 → 重排两阶段
召回 → 重排两阶段
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] # 进入上下文重排分数与向量分数不在同一量纲:依赖分数阈值时以重排分为准单独校准。