news 2026/4/23 14:39:52

3.2 重排序 (Reranker)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.2 重排序 (Reranker)

目录

1. 核心概念:什么是重排序?

2. Cross-Encoder 模型:重排序的利器

2.1 整体架构

2.2 输入表示层 (Input Representation)

2.3 Transformer 编码器层

2.4 输出层与目标函数

1.[CLS] 标记的特殊作用

2.分类/回归头

2.5 与双塔模型的对比

3. 训练方式与损失函数

4. BGE-Reranker 介绍

5. 实践步骤:如何在RAG中集成重排序

6. 优势与考量

总结


1. 核心概念:什么是重排序?

在典型的“检索-生成”两阶段流程中:

  1. 召回(Retrieval):使用快速的向量检索模型(如BGE-Embedding, 双塔模型)从海量文档库中初步筛选出Top-K(例如100个)最相关的候选文档。
  2. 重排序(Reranking):使用一个更强大但更耗时的模型,对召回阶段得到的Top-K个候选文档进行精细化评分和重新排序,筛选出最相关的Top-N(例如3-5个)文档,再交给大模型生成最终答案。

为什么需要重排序?

  • 向量检索的局限性:第一阶段的向量检索(双塔模型)追求速度,文档和查询被分别编码为向量,通过向量相似度(如余弦相似度)快速匹配。这种“独立编码”方式无法捕捉查询和文档之间深层次的、细粒度的语义交互,可能导致排序不够精准。
  • 精度提升:重排序模型(通常是Cross-Encoder)虽然慢,但它能对“查询-文档”对进行深度交互和联合编码,更准确地判断两者的相关性,从而将真正最相关的文档排到最前面,提升最终答案的质量和减少大模型的幻觉。

2. Cross-Encoder 模型:重排序的利器

Cross-Encoder是实现精排的核心架构。

2.1 整体架构

它将查询(Query)和文档(Document)拼接成一个完整的序列,输入到Transformer编码器(如BERT、RoBERTa)中。 模型通过自注意力机制,让查询和文档的每一个词元(Token)进行充分的、双向的交互,从而理解它们之间复杂的语义关系。

输入: [CLS] Query [SEP] Document [SEP] ↓ 嵌入层 (Embedding Layer) ↓ Transformer 编码器堆叠 (12-24层,BERT/RoBERTa等) ↓ [CLS] 标记的隐藏状态 ↓ 分类/回归头 (Head) ↓ 输出: 相关性分数
2.2 输入表示层 (Input Representation)

(1)序列构建

格式:[CLS] 用户查询 [SEP] 候选文档文本 [SEP]

例如:[CLS] 机器学习是什么 [SEP] 机器学习是人工智能的一个分支... [SEP]

(2)三重嵌入组合(同bert)

# 伪代码表示 final_embedding = token_embedding + segment_embedding + position_embedding

2.3 Transformer 编码器层

Cross-Encoder 使用标准的 Transformer 编码器堆叠,通常为12或24层。

https://blog.csdn.net/qq_54708219/article/details/148997862?spm=1011.2415.3001.5331https://blog.csdn.net/qq_54708219/article/details/148997862?spm=1011.2415.3001.5331https://blog.csdn.net/qq_54708219/article/details/157139026https://blog.csdn.net/qq_54708219/article/details/157139026

2.4 输出层与目标函数
1.[CLS] 标记的特殊作用
  • 序列的第一个 token[CLS]的最终隐藏状态作为整个序列的聚合表示
  • 经过 Transformer 的多层处理,[CLS]编码了查询和文档交互的全局信息
2.分类/回归头
h_[CLS] = 最后一层Transformer的[CLS]隐藏状态 (维度: 768) 分数 = W·h_[CLS] + b # 线性变换

不同任务形式

  • 二分类sigmoid(分数)→ 相关概率
  • 回归:直接使用分数或经过缩放
  • 多级分类softmax(W·h_[CLS] + b)→ 多个相关性等级
2.5 与双塔模型的对比

特性

双塔模型(Bi-Encoder)

交叉编码器(Cross-Encoder)

编码方式

查询和文档分别独立编码为向量。

查询和文档拼接后联合编码。

速度

极快。适合从百万级文档库中快速召回。

很慢。需要对每个查询-文档对单独计算,适合对少量候选做精排。

精度

相对较低,损失了细粒度交互信息。

非常高。能捕获深层次的语义相关性。

典型应用

大规模召回/检索阶段。

小规模(如Top-100)重排序阶段。

3. 训练方式与损失函数

重排序模型通常使用以下两种范式进行训练:

  1. 点式学习(Pointwise)
    • 将重排序视为一个回归或分类任务。
    • 输入一个(Query, Document)对,模型直接输出一个相关性分数(如0-1之间),或者预测一个相关等级(如“不相关/相关/高度相关”)。
    • 损失函数: 均方误差损失(MSE):
      交叉熵损失(Cross-Entropy):
    • 优点:简单直接。
  2. 列表式学习(Listwise)
    • 更接近实际应用场景。模型一次性看到针对同一个查询的一组候选文档,学习如何为它们进行相对排序
    • 常用损失函数
      • RankNet/ListNet
        学习文档对之间的偏序关系:
        s_i = model(query, doc_i) # 更相关的文档
        s_j = model(query, doc_j) # 较不相关的文档
        i 比 j 更相关的概率:
      • 对比学习损失(如InfoNCE)
        对于一个查询,有一个正样本和多个负样本
        拉大正样本(相关文档)和负样本(不相关文档)得分的差距:
        正样本:s_pos = model(query, doc_pos)
        负样本:s_negs = [model(query, doc_neg) for doc_neg in neg_docs]
        总损失:
    • 优点:能学习到更好的全局排序能力,效果通常优于点式学习。

BGE-Reranker等先进模型通常采用列表式对比学习进行训练,使用难负例挖掘技术,使其在区分高度相似的文档方面表现优异。

4. BGE-Reranker 介绍

BGE-Reranker是智源研究院推出的开源重排序模型系列,是基于Cross-Encoder架构、专为中文和英文优化的大规模预训练重排模型。

  • 特点
    • 强大性能:在MTEB中文重排榜等多个权威评测中名列前茅。
    • 多尺寸:提供BAAI/bge-reranker-base,BAAI/bge-reranker-large,BAAI/bge-reranker-v2-m3等多种尺寸,满足不同精度和速度需求。
    • 易用性:与Transformers库和FlagEmbedding库无缝集成,几行代码即可调用。
    • 多语言:在中文和英文上均表现优异。

5. 实践步骤:如何在RAG中集成重排序

以下是典型的集成步骤:

# 伪代码示例 from transformers import AutoModelForSequenceClassification, AutoTokenizer import torch # 1. 召回阶段 query = "如何学习机器学习?" retrieved_docs = vector_store.similarity_search(query, k=100) # 使用向量库召回Top-100 # 2. 加载重排序模型 model_name = "BAAI/bge-reranker-large" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) model.eval() # 3. 对召回结果进行重排序 pairs = [[query, doc.page_content] for doc in retrieved_docs] # 构建(Query, Doc)对 with torch.no_grad(): inputs = tokenizer(pairs, padding=True, truncation=True, return_tensors='pt', max_length=512) scores = model(**inputs, return_dict=True).logits.view(-1, ).float() # 获取相关性分数 # 4. 根据新分数重新排序 reranked_indices = scores.argsort(descending=True) # 按分数降序排列 final_top_k_docs = [retrieved_docs[i] for i in reranked_indices[:5]] # 选取新的Top-5 # 5. 将精排后的文档输入给LLM生成答案 context = "\n".join([doc.page_content for doc in final_top_k_docs]) prompt = f"基于以下上下文:\n{context}\n\n请回答:{query}" final_answer = llm.generate(prompt)

6. 优势与考量

优势

  • 显著提升相关性:能将最相关文档的排名大幅提升,是提升RAG答案质量性价比最高的手段之一。
  • 降低大模型负担和幻觉:给大模型更精准的上下文,减少其胡言乱语或依赖错误信息的可能。
  • 模块化设计:与召回和生成阶段解耦,可以独立优化和升级重排序模型。

考量与挑战

  • 计算开销:Cross-Encoder需要对每个(Query, Doc)对进行前向计算,当k较大时(如100),会显著增加延迟。需要在精度和速度间权衡。
  • 上下文长度限制:Transformer有最大长度限制(如512),长文档可能需要截断或分块处理,可能损失信息。
  • 训练数据:高质量的(Query, Relevant Doc, Irrelevant Doc)三元组数据对模型效果至关重要。

总结

引入Cross-Encoder 模型进行重排序,是构建高性能RAG系统的关键优化步骤。它通过查询和文档的深度语义交互,弥补了快速向量检索在精度上的不足,像一道“质检关卡”,确保最终输入给大模型的上下文是最相关、最可靠的。BGE-Reranker等优秀开源模型的出现,使得这一技术变得触手可及,能有效提升问答系统、搜索引擎等应用的核心体验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 16:52:24

从零开始部署Qwen儿童图像AI:ComfyUI界面操作完整指南

从零开始部署Qwen儿童图像AI:ComfyUI界面操作完整指南 你是不是也遇到过这样的情况——想给孩子准备一张专属的卡通动物壁纸,或者为幼儿园手工课找些萌趣插图,又或者只是想陪孩子一起“变出”一只会跳舞的熊猫?以前可能得翻图库、…

作者头像 李华
网站建设 2026/4/23 13:56:52

最新研究:在AI搜索时代,网站翻译能带来高达327%的SEO可见性提升

自谷歌的AI概览在2024年全面推出以来,可见性就成为了必研课题。 但当AI开始负责策划和总结搜索结果时,我们的网站,尤其是面向多语言市场的网站,到底该如何赢得可见性? 大型语言模型在引用一个语言的内容时&#xff0…

作者头像 李华
网站建设 2026/4/23 13:56:57

Unsloth开发者必看:梯度检查点避坑技巧

Unsloth开发者必看:梯度检查点避坑技巧 在使用Unsloth进行大语言模型微调时,你是否遇到过显存突然爆满、训练中断、OOM错误频发,甚至模型明明能加载却卡在第一步无法启动的情况?这些问题背后,十有八九和一个看似“省显…

作者头像 李华
网站建设 2026/4/22 18:37:24

Qwen All-in-One用户体验调研:真实反馈分析报告

Qwen All-in-One用户体验调研:真实反馈分析报告 1. 为什么我们决定做一次真实的用户反馈调研 最近上线的 Qwen All-in-One 实验项目,不是又一个“跑通 demo 就收工”的技术展示。它从第一天起就面向真实用户开放——没有登录墙、不设白名单、不依赖 GP…

作者头像 李华
网站建设 2026/4/23 11:30:37

YOLO26训练参数调优:Batch Size影响分析

YOLO26训练参数调优:Batch Size影响分析 在目标检测模型的实际工程落地中,训练参数的选择往往比模型结构本身更直接影响最终效果。尤其对于新一代YOLO26这类高吞吐、低延迟设计的模型,Batch Size 不再只是一个简单的数据加载单位&#xff0c…

作者头像 李华
网站建设 2026/4/23 2:02:23

灵脉AI 4.4 | 解锁AI越权检测,代码安全智能体再进化!

AI更智能 01.AI能力再进化,精准破解权限与配置痛点 1)新增AI越权检测,攻克复杂场景盲区 通过利用大语言模型(LLM)结合代码语义分析,对应用源代码中的权限校验逻辑进行自动化识别和越权风险检测。通过理解…

作者头像 李华