系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

reranker-tuning

重排模型调优:TopK、模型大小、领域微调与分数校准

补充说明

重排(reranking)在向量召回之后,用 cross-encoder 对 query 和候选文档逐对打分,把最相关的文档排到前面。它比双塔向量模型更准,但延迟更高,所以通常只处理 Top 20–100 个候选。重排的效果取决于召回候选质量、模型与领域匹配度、TopK 和分数阈值。

调优顺序:先保证召回有相关文档,再选重排模型,再调 TopK/批处理/阈值,最后考虑领域微调。不要用重排去弥补召回完全缺失的文档;也不要把重排分数直接当概率。

常用示例

# sentence-transformers CrossEncoder
from sentence_transformers import CrossEncoder

model = CrossEncoder("BAAI/bge-reranker-v2-m3", max_length=512)
pairs = [(query, doc) for doc in candidates]
scores = model.predict(pairs, batch_size=16)
ranked = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)[:5]
# TEI / Infinity 的 rerank 端点
curl http://localhost:8080/rerank \
  -H 'Content-Type: application/json' \
  -d '{"query":"磁盘满怎么排查","texts":["df -h 看分区","Pod 日志排查"]}'
# 领域微调:构造 (query, positive, negative) 三元组
# 用 MarginMSE / CrossEntropy 训练 cross-encoder
# 评估用 nDCG@5、MRR、Recall@5,不要只看 loss
调参起点:
- 召回 TopK:20–50 进重排,最终取 3–8 给 LLM
- batch size:按显存和 P95 延迟调
- 分数阈值:用标注数据校准,不要拍脑袋
- 模型大小:base 通常够用,large 更准但更慢

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 双塔向量模型和 cross-encoder 重排的区别是什么?
  2. 为什么重排只处理 Top 20–100 个候选,而不是全量文档?
  3. 重排分数能直接当相关性概率吗?
答案
  1. 双塔分别编码 query 和文档,速度快、可预计算;cross-encoder 联合编码 query+文档,精度高但每次都要推理,适合小候选集重排。
  2. cross-encoder 计算成本高,全量文档延迟不可接受;先用向量/混合检索缩小候选,再重排。
  3. 不能。不同模型的分数分布不同,未校准的分数不是概率;阈值要用标注数据校准。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令