重排序器
使用重排序器提高搜索准确性! 了解高级模型如何优化初始结果,以获得最佳相关性和用户满意度。
重选器是多级信息系统中使用的一种复杂模型,用于完善和改进初始候选列表的排序。
的排序。初级系统被称为检索器,它能快速收集广泛的潜在相关项目。
相关条目,而重选器则对这个较小的预过滤集进行更详细的计算密集型分析、
它的目标是对这些项目进行重新排序。它的目标是对这些项目进行重新排序,把最相关的项目放在最前面,从而提高最终输出的精确度和召回率。
最终输出的精确度和召回率。这个
这两步流程可以让系统在速度和准确性之间取得平衡,从而高效地提供高质量的结果。
重排序器的工作原理
重新排名通常涉及现代语义搜索和推荐系统中常见的两阶段架构。
语义搜索和推荐系统中常见的两阶段架构:
-
第一阶段检索:快速但不太精确的模型(检索器)会扫描海量数据库,以快速找到大量候选项。
快速找到大量候选项。在
在计算机视觉中,这可能是一个初始
模型,为物体生成大量潜在的
物体的边界框。这里的首要任务是
高记忆率--确保不遗漏任何相关项目。
-
第二阶段重新排名:然后将初始候选者集传递给重新排序器。这通常是
一个更复杂、更强大的模型,如
Transformer神经网络。重排序器
会更详细地检查候选词,考虑微妙的上下文、语义关系和复杂的特征,而这些都是第一阶段检索器所忽略的。
这些都是第一阶段检索器为了提高速度而忽略的。然后,它会为每个条目计算出一个新的、更准确的相关性分数,并相应地对列表进行重新排序。
项目,并相应地对列表重新排序。
这种方法的计算效率很高,因为昂贵的重排模型只处理总数据中的一小部分。
这些数据已经被速度更快的检索器过滤过了。
重排序器与第一阶段检索器
区分重排序器和第一阶段检索器非常重要。
-
第一阶段寻回犬:优化速度和召回能力。它的工作是快速筛选大量数据
它的工作是快速筛选海量数据,并创建一个广泛、包容的候选名单。它使用较简单的评分方法,如关键字
匹配或基本嵌入。
-
Reranker:针对精确性和相关性进行了优化。它从检索器中获取可管理的列表
并应用深入的上下文感知分析来生成最终的高精度排名。它速度较慢,更
资源密集型,但数据集要小得多。
从本质上讲,寻回者撒下一张大网,而再寻回者则仔细检查捕获物,找出最有价值的物品。
物品。
应用和示例
重新排名器是许多最先进的人工智能(AI)技术的重要组成部分。
人工智能 (AI)
应用的重要组成部分:
-
网络搜索引擎:公司,如 Google和
Microsoft 必应等公司使用多级排名系统,在该系统中,reerankers 起着至关重要的作用。
的作用。在初始检索获取数千个网页后,复杂的重排序器会分析用户意图和内容质量等因素,从而提供最相关的结果。
意图和内容质量等因素,从而提供最相关的结果。这是现代
信息检索研究的核心部分。
-
电子商务平台:亚马逊等网站使用 rerankers
完善产品搜索结果。最初的搜索可能会显示所有的 "跑步鞋",但reeranker 会
分析用户评论、购买记录和品牌受欢迎程度,以显示用户最有可能购买的商品。
亚马逊科学》对此进行了详细探讨。
-
检索增强生成(RAG):在使用
大型语言模型(LLM)的系统中、
RAG首先从知识库中检索相关
文档。然后,再筛选器会对这些文档进行筛选,以确保将事实最准确、与上下文最相关的信息传递给用户。
和上下文相关的信息传递给
LLM,从而大大提高
生成响应的质量。像Cohere Rerank API这样的服务就是专门为此目的而设计的。
等服务就是专门为此目的而设计的。
-
计算机视觉中的类比:后处理技术,如
物体检测模型中的非最大值抑制 (NMS)
物体检测模型中的后处理技术,如
Ultralytics YOLO11的核心理念相同。一个
对象检测器首先会提出许多潜在的边界框。然后,NMS 会根据这些候选对象的置信度分数和重叠度(.....NMS
根据它们的置信度分数和重叠度 (IoU),抑制多余的边界框,只保留最好的边界框。这种细化对于准确预测至关重要。
您可以探索性能基准并查找
这些模型的模型训练技巧。
以下代码演示了如何在推理NMS 配置为边界框的重排器
配置 ultralytics 模型
from ultralytics import YOLO
# Load an official YOLO11 model
model = YOLO("yolo11n.pt")
# Run inference on an image with custom NMS settings
# The 'iou' threshold filters out boxes with high overlap, similar to how a
# reranker removes less relevant, redundant items from a list.
results = model.predict("path/to/image.jpg", iou=0.5, conf=0.25)
# Print the results
results[0].show()