2026/6/20 0:06:24
网站建设
项目流程
做微信公众号微网站,seo网站推广全程实例,网站设置搜索时间,seosem推广目录 1. 核心概念#xff1a;什么是重排序#xff1f;
2. Cross-Encoder 模型#xff1a;重排序的利器
2.1 整体架构
2.2 输入表示层 (Input Representation)
2.3 Transformer 编码器层
2.4 输出层与目标函数
1.[CLS] 标记的特殊作用
2.分类/回归头
2.5 与双塔模型的…目录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. 核心概念什么是重排序在典型的“检索-生成”两阶段流程中召回Retrieval使用快速的向量检索模型如BGE-Embedding 双塔模型从海量文档库中初步筛选出Top-K例如100个最相关的候选文档。重排序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_embedding2.3 Transformer 编码器层Cross-Encoder 使用标准的 Transformer 编码器堆叠通常为12或24层。https://blog.csdn.net/qq_54708219/article/details/148997862?spm1011.2415.3001.5331https://blog.csdn.net/qq_54708219/article/details/148997862?spm1011.2415.3001.5331https://blog.csdn.net/qq_54708219/article/details/157139026https://blog.csdn.net/qq_54708219/article/details/1571390262.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. 训练方式与损失函数重排序模型通常使用以下两种范式进行训练点式学习Pointwise将重排序视为一个回归或分类任务。输入一个(Query, Document)对模型直接输出一个相关性分数如0-1之间或者预测一个相关等级如“不相关/相关/高度相关”。损失函数 均方误差损失MSE交叉熵损失Cross-Entropy优点简单直接。列表式学习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, k100) # 使用向量库召回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, paddingTrue, truncationTrue, return_tensorspt, max_length512) scores model(**inputs, return_dictTrue).logits.view(-1, ).float() # 获取相关性分数 # 4. 根据新分数重新排序 reranked_indices scores.argsort(descendingTrue) # 按分数降序排列 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等优秀开源模型的出现使得这一技术变得触手可及能有效提升问答系统、搜索引擎等应用的核心体验。