news 2026/6/15 15:02:35

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/6/15 13:48:02

Qwen3-4B-Instruct部署避坑指南:常见错误与最佳实践汇总

Qwen3-4B-Instruct部署避坑指南:常见错误与最佳实践汇总 1. 为什么你第一次跑Qwen3-4B-Instruct会卡在“加载模型”? 你兴冲冲拉起镜像,点开网页端,输入一句“你好”,光标闪了三分钟——页面还是空白。不是网络问题&…

作者头像 李华
网站建设 2026/6/15 13:52:28

提升AI抠图精度的关键:输入图分辨率建议

提升AI抠图精度的关键:输入图分辨率建议 在实际使用 cv_unet_image-matting 图像抠图 WebUI 过程中,很多用户反馈“同样一张人像,别人抠得干净利落,我的却毛边明显、发丝断裂、边缘发虚”。经过大量实测与参数交叉验证&#xff0…

作者头像 李华
网站建设 2026/6/15 14:13:23

YOLO26降本部署实战:低成本GPU方案费用省40%

YOLO26降本部署实战:低成本GPU方案费用省40% 你是不是也遇到过这样的问题:想跑YOLO26做目标检测或姿态估计,但一查云服务器报价就皱眉——A10显卡月租2800元,V100直接飙到4500元?训练一次模型光算力成本就要几百块&am…

作者头像 李华
网站建设 2026/6/15 13:52:01

SGLang后端运行时优化揭秘:多GPU协作部署实战

SGLang后端运行时优化揭秘:多GPU协作部署实战 1. 为什么需要SGLang?从“能跑”到“跑得快”的真实痛点 你有没有遇到过这样的情况:模型明明加载成功了,但一并发请求上来,响应就卡顿;或者好不容易搭好服务…

作者头像 李华
网站建设 2026/6/15 13:48:24

用Node.js调用Qwen-Image-Edit-2511,打造API服务接口

用Node.js调用Qwen-Image-Edit-2511,打造API服务接口 你是否遇到过这样的场景:设计团队急需批量修改商品图的背景风格,运营同事想把一张产品照片实时转成“科技感线稿金属质感”,而当前的图像编辑工具要么操作繁琐、要么效果生硬…

作者头像 李华
网站建设 2026/6/15 14:58:51

A-59P 模组:100dB 消回音 + AI 降噪 + 双麦波束

AI降噪升级版多功能语音降噪消回音模组A-59P在智能门禁、远程会议、车载通信、智能工牌等多元化音频场景中,设备接口不兼容、噪音干扰严重、拾音方向受限、回音无法根除等问题,一直是开发者的核心痛点。A-59P 多功能语音处理模组的重磅升级,以…

作者头像 李华