Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Reranker

重排序器会使用交叉编码器等更慢但更准确的模型,对检索器返回的候选列表重新评分,然后再将结果交给用户或 LLM。

重排序器是一种模型,它接收快速第一阶段检索器给出的短候选列表,更仔细地根据查询为每个候选项评分,然后重新排序。搜索引擎、检索增强生成(RAG)流水线和推荐系统都会采用这种方式,因为最准确的相关性模型运行速度太慢,无法处理数百万份文档,但足以处理排名前几十到几百的结果。在文本搜索中,标准的重排序器是交叉编码器:一种Transformer,它同时读取查询和一个候选项,并输出单一相关性分数。Nogueira 和 Cho(2019)以这种方式微调了 BERT,并在 MS MARCO 段落排序排行榜上夺冠,其 MRR@10 相对高于此前最佳结果 27%。

检索后重排序的工作原理#

第一阶段侧重召回率:通过 BM25 进行关键词匹配、对预先计算的嵌入执行向量搜索,或同时使用两者,在几毫秒内从整个集合中提取数百个可能相关的候选项。重排序器侧重精确率:它会对每个查询-候选项组合完整运行一次模型,只有排名靠前的少数结果会展示给用户或放入 LLM 的上下文窗口。Ultralytics 的 VisualAISearch 解决方案就是这类第一阶段检索器:它使用 CLIP ViT-B/32 为文件夹中的图像生成嵌入,按图像与文本查询之间的余弦相似度排序,默认返回相似度高于 0.1 阈值的最多 30 个匹配项。

交叉编码器与双编码器#

双编码器是常见的检索器,它分别为查询和每份文档生成嵌入,因此文档向量可以预先计算并存储在向量数据库中。这种独立性也构成了它的局限:查询已知之前,文档向量就已经固定。交叉编码器将查询和文档拼接为一个输入,因此自注意力可以比较查询中的每个词和文档中的每个词,但查询时必须为每个组合完整执行一次前向传播。ColBERT介于两者之间:它为每篇文档的每个词元存储一个向量,并通过延迟交互将查询词元与这些向量进行匹配。Sentence Transformers 的 CrossEncoder 类会运行诸如 ms-marco-MiniLM-L6-v2 这样的重排序器,该模型使用 MS MARCO 搜索查询进行训练:

from sentence_transformers import CrossEncoder

query = "When was the transformer architecture introduced?"
# Shortlist returned by a fast first-stage retriever, in its original order
candidates = [
    "Transformer models such as GPT and BERT are widely used in natural language processing.",
    "An electrical transformer changes the voltage of an alternating current.",
    "Convolutional neural networks became popular after AlexNet won ImageNet in 2012.",
    "The transformer was introduced in the 2017 paper Attention Is All You Need.",
]

# The cross-encoder reads the query and each candidate together and scores their relevance
reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")
ranked = reranker.rank(query, candidates)

for hit in ranked:
    print(f"{hit['score']:6.2f}  {candidates[hit['corpus_id']]}")

能够回答问题的段落从最后一名升至第一名,得分为 6.97,远高于下一候选项的 -4.48。关于电气变压器的句子虽然与查询共享关键词,但得分为 -5.29。

重排序器的类型#

  • 交叉编码器: 使用相关性标签微调的小型 Transformer,例如 MS MARCO MiniLM 模型和 BAAI 的 bge-reranker 系列,也可以作为托管重排序 API 提供。
  • LLM 重排序器: 通过提示大型语言模型(LLM)为候选项评分,或一次性对整个列表排序。RankGPT展示了 ChatGPT 和 GPT-4 可以通过输出排序后的列表来对段落重排序,并将 ChatGPT 的排序结果蒸馏到一个小型专用重排序器中。
  • 学习排序模型: 推荐和电商系统使用梯度提升树等模型,根据点击历史、价格和时效性等特征对候选项重新排序,并采用 LambdaMART 等排序目标进行训练;LightGBM和 XGBoost都提供了这类模型。
  • 语义搜索: 通常使用双编码器检索器按含义搜索。重排序器可以作为其上方的可选第二阶段。
  • 混合搜索: 合并关键词和向量搜索的结果列表,通常使用互惠排名融合;这种方法无需重新读取内容即可合并排名。重排序器通常会处理合并后的列表。
  • 知识蒸馏: 训练快速检索器模仿慢速重排序器的分数,将部分重排序能力转移到第一阶段。
  • 两阶段目标检测器: 对图像采用相同的模式,先由区域提议阶段生成候选框,再由第二阶段重新评分并细化每个候选框,最后通过非极大值抑制(NMS)去除重叠的重复框。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来