本文深入探讨了在RAG检索流程中应用重排序技术的必要性及其核心优势。文章首先阐述了重排序技术如何通过优化检索结果、增强上下文相关性及应对复杂查询来提升整体检索效果。接着详细介绍了重排序模型的工作原理包括粗排与精排的概念以及重排序模型如何计算相关性分数并重新排序文档。此外文章还列举了市面上可用的重排序模型并分析了其在生产环境中可能面临的资源和效率问题。最后通过实战案例展示了如何使用BGE的bge-reranker-v2-m3模型进行重排序提供了具体的代码实现和操作步骤。 目录一、为什么要使用重排序技术二、重排序技术的几个优势三、重排序模型 (Reranking Model)四、重排序技术实战一、为什么要使用重排序技术在 RAG 检索流程中重排序技术Reranking通过对初始检索结果进行重新排序改善检索结果的相关性为生成模型提供更优质的上下文从而提升整体 RAG 系统的效果。尽管向量检索技术能够为每个文档块生成初步的相关性分数但引入重排序模型仍然至关重要。向量检索主要依赖于全局语义相似性通过将查询和文档映射到高维语义空间中进行匹配。然而这种方法往往忽略了查询与文档具体内容之间的细粒度交互。重排序模型大多是基于双塔或交叉编码架构的模型在此基础上进一步计算更精确的相关性分数能够捕捉查询词与文档块之间更细致的相关性从而在细节层面上提高检索精度。因此尽管向量检索提供了有效的初步筛选重排序模型则通过更深入的分析和排序确保最终结果在语义和内容层面上更紧密地契合查询意图实现了检索质量的提升。二、重排序技术的几个优势优化检索结果在 RAG 系统中初始的检索结果通常来自于向量搜索或基于关键词的检索方法。然而这些初始检索结果可能包含大量的冗余信息或与查询不完全相关的文档。通过重排序技术我们可以对这些初步检索到的文档进行进一步的筛选和排序将最相关、最重要的文档置于前列。增强上下文相关性RAG 系统依赖于检索到的文档作为生成模型的上下文。因此上下文的质量直接影响生成的结果。重排序技术通过重新评估文档与查询的相关性确保生成模型优先使用那些与查询最相关的文档从而提高了生成内容的准确性和连贯性。应对复杂查询对于复杂的查询初始检索可能会返回一些表面上相关但实际上不太匹配的文档。重排序技术可以根据查询的复杂性和具体需求对这些结果进行更细致的分析和排序优先展示那些能够提供深入见解或关键信息的文档。三、重排序模型 (Reranking Model)RAG 流程有两个概念粗排和精排。粗排检索效率较快但是召回的内容并不一定强相关。精排效率较低因此适合在粗排的基础上进行进一步优化。精排的代表就是重排序Reranking。重排序模型Reranking Model查询与每个文档块计算对应的相关性分数并根据这些分数对文档进行重新排序确保文档按照从最相关到最不相关的顺序排列并返回前 top-k 个结果。与嵌入模型不同重排序模型将用户的查询Query和文档块作为输入直接输出相似度评分而非生成嵌入向量。目前市面上可用的重排序模型并不多商用的有 Cohere开源的有 BGE、Sentence、Mixedbread、T5-Reranker 等甚至可以使用指令Prompt让大模型GPT、Claude、通义千问、文心一言等进行重排大模型指令参考如下以下是与查询 {问题} 相关的文档块[1] {文档块1}[2] {文档块2}更多文档块请根据这些文档块与查询的相关性进行排序以 “1,2,3,4”文档块数字及逗号隔开的形式输出排序结果。在生产环境中使用重排序模型会面临资源和效率问题包括计算资源消耗高、推理速度慢以及模型参数量大等问题。这些问题主要源于重排序模型在对候选项进行精细排序时因其较大参数量而导致的高计算需求和复杂耗时的推理过程从而对 RAG 系统的响应时间和整体效率产生负面影响。因此在实际应用中需要根据实际资源情况在精度与效率之间进行平衡。四、重排序技术实战在实战中我们使用来自北京人工智能研究院 BGE 的bge-reranker-v2-m3作为 RAG 项目的重排序模型这是一种轻量级的开源和多语言的重排序模型。更多模型相关信息参考可访问 bge-reranker-v2-m3 官方介绍站点 https://huggingface.co/BAAI/bge-reranker-v2-m3。对应的代码在 Gitee https://gitee.com/techleadcy/rag_app.git上托管项目。此文章的代码文件为rag_app_lesson6_2.py。拉取最新代码git clone https://gitee.com/techleadcy/rag_app.git创建并激活虚拟环境若已创建则无需重复执行python3 -m venv rag_env命令行中拉取仓库的最新代码执行依赖库安装命令本课时对应的是 FlagEmbedding 向量操作库和 Peft 大语言模型操作库source rag_env/bin/activatepip install -U pip FlagEmbedding Peft jieba rank_bm25 chromadb langchain langchain_community sentence-transformers dashscope unstructured pdfplumber python-docx python-pptx markdown openpyxl pandas -i https://pypi.tuna.tsinghua.edu.cn/simple代码中设置大模型 qwen_modelqwen_api_key 参数访问阿里云百炼大模型服务平台 https://www.aliyun.com/product/bailian 。执行课程代码python rag_app/rag_app_lesson6_2.py此章节涉及的代码改动均已在 rag_app_lesson6_2.py 文件中添加详细注释主要包括以下内容引入依赖库from FlagEmbedding import FlagReranker # 用于对嵌入结果进行重新排序的工具类增加 reranking 方法def reranking(query, chunks, top_k3): # 初始化重排序模型使用BAAI/bge-reranker-v2-m3 reranker FlagReranker(BAAI/bge-reranker-v2-m3, use_fp16True) # 构造输入对每个 query 与 chunk 形成一对 input_pairs [[query, chunk] for chunk in chunks] # 计算每个 chunk 与 query 的语义相似性得分 scores reranker.compute_score(input_pairs, normalizeTrue) print(文档块重排序得分:, scores) # 对得分进行排序并获取排名前 top_k 的 chunks sorted_indices sorted(range(len(scores)), keylambda i: scores[i], reverseTrue) reranking_chunks [chunks[i] for i in sorted_indices[:top_k]] # 打印前三个 score 对应的文档块 for i in range(top_k): print(f重排序文档块{i1}: 相似度得分{scores[sorted_indices[i]]}文档块信息{reranking_chunks[i]}\n) return reranking_chunksretrieval_process方法 # 使用重排序模型对检索结果进行重新排序输出重排序后的前top_k文档块 reranking_chunks reranking(query,vector_chunks bm25_chunks, top_k) print(检索过程完成.) print(********************************************************) # 返回重排序后的前top_k个文档块 return reranking_chunks假如你从2026年开始学大模型按这个步骤走准能稳步进阶。接下来告诉你一条最快的邪修路线3个月即可成为模型大师薪资直接起飞。阶段1:大模型基础阶段2:RAG应用开发工程阶段3:大模型Agent应用架构阶段4:大模型微调与私有化部署配套文档资源全套AI 大模型 学习资料朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】配套文档资源全套AI 大模型 学习资料朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】
RAG检索秒变神级!揭秘重排序技术如何让你的AI效果起飞!
发布时间:2026/6/28 21:16:46
本文深入探讨了在RAG检索流程中应用重排序技术的必要性及其核心优势。文章首先阐述了重排序技术如何通过优化检索结果、增强上下文相关性及应对复杂查询来提升整体检索效果。接着详细介绍了重排序模型的工作原理包括粗排与精排的概念以及重排序模型如何计算相关性分数并重新排序文档。此外文章还列举了市面上可用的重排序模型并分析了其在生产环境中可能面临的资源和效率问题。最后通过实战案例展示了如何使用BGE的bge-reranker-v2-m3模型进行重排序提供了具体的代码实现和操作步骤。 目录一、为什么要使用重排序技术二、重排序技术的几个优势三、重排序模型 (Reranking Model)四、重排序技术实战一、为什么要使用重排序技术在 RAG 检索流程中重排序技术Reranking通过对初始检索结果进行重新排序改善检索结果的相关性为生成模型提供更优质的上下文从而提升整体 RAG 系统的效果。尽管向量检索技术能够为每个文档块生成初步的相关性分数但引入重排序模型仍然至关重要。向量检索主要依赖于全局语义相似性通过将查询和文档映射到高维语义空间中进行匹配。然而这种方法往往忽略了查询与文档具体内容之间的细粒度交互。重排序模型大多是基于双塔或交叉编码架构的模型在此基础上进一步计算更精确的相关性分数能够捕捉查询词与文档块之间更细致的相关性从而在细节层面上提高检索精度。因此尽管向量检索提供了有效的初步筛选重排序模型则通过更深入的分析和排序确保最终结果在语义和内容层面上更紧密地契合查询意图实现了检索质量的提升。二、重排序技术的几个优势优化检索结果在 RAG 系统中初始的检索结果通常来自于向量搜索或基于关键词的检索方法。然而这些初始检索结果可能包含大量的冗余信息或与查询不完全相关的文档。通过重排序技术我们可以对这些初步检索到的文档进行进一步的筛选和排序将最相关、最重要的文档置于前列。增强上下文相关性RAG 系统依赖于检索到的文档作为生成模型的上下文。因此上下文的质量直接影响生成的结果。重排序技术通过重新评估文档与查询的相关性确保生成模型优先使用那些与查询最相关的文档从而提高了生成内容的准确性和连贯性。应对复杂查询对于复杂的查询初始检索可能会返回一些表面上相关但实际上不太匹配的文档。重排序技术可以根据查询的复杂性和具体需求对这些结果进行更细致的分析和排序优先展示那些能够提供深入见解或关键信息的文档。三、重排序模型 (Reranking Model)RAG 流程有两个概念粗排和精排。粗排检索效率较快但是召回的内容并不一定强相关。精排效率较低因此适合在粗排的基础上进行进一步优化。精排的代表就是重排序Reranking。重排序模型Reranking Model查询与每个文档块计算对应的相关性分数并根据这些分数对文档进行重新排序确保文档按照从最相关到最不相关的顺序排列并返回前 top-k 个结果。与嵌入模型不同重排序模型将用户的查询Query和文档块作为输入直接输出相似度评分而非生成嵌入向量。目前市面上可用的重排序模型并不多商用的有 Cohere开源的有 BGE、Sentence、Mixedbread、T5-Reranker 等甚至可以使用指令Prompt让大模型GPT、Claude、通义千问、文心一言等进行重排大模型指令参考如下以下是与查询 {问题} 相关的文档块[1] {文档块1}[2] {文档块2}更多文档块请根据这些文档块与查询的相关性进行排序以 “1,2,3,4”文档块数字及逗号隔开的形式输出排序结果。在生产环境中使用重排序模型会面临资源和效率问题包括计算资源消耗高、推理速度慢以及模型参数量大等问题。这些问题主要源于重排序模型在对候选项进行精细排序时因其较大参数量而导致的高计算需求和复杂耗时的推理过程从而对 RAG 系统的响应时间和整体效率产生负面影响。因此在实际应用中需要根据实际资源情况在精度与效率之间进行平衡。四、重排序技术实战在实战中我们使用来自北京人工智能研究院 BGE 的bge-reranker-v2-m3作为 RAG 项目的重排序模型这是一种轻量级的开源和多语言的重排序模型。更多模型相关信息参考可访问 bge-reranker-v2-m3 官方介绍站点 https://huggingface.co/BAAI/bge-reranker-v2-m3。对应的代码在 Gitee https://gitee.com/techleadcy/rag_app.git上托管项目。此文章的代码文件为rag_app_lesson6_2.py。拉取最新代码git clone https://gitee.com/techleadcy/rag_app.git创建并激活虚拟环境若已创建则无需重复执行python3 -m venv rag_env命令行中拉取仓库的最新代码执行依赖库安装命令本课时对应的是 FlagEmbedding 向量操作库和 Peft 大语言模型操作库source rag_env/bin/activatepip install -U pip FlagEmbedding Peft jieba rank_bm25 chromadb langchain langchain_community sentence-transformers dashscope unstructured pdfplumber python-docx python-pptx markdown openpyxl pandas -i https://pypi.tuna.tsinghua.edu.cn/simple代码中设置大模型 qwen_modelqwen_api_key 参数访问阿里云百炼大模型服务平台 https://www.aliyun.com/product/bailian 。执行课程代码python rag_app/rag_app_lesson6_2.py此章节涉及的代码改动均已在 rag_app_lesson6_2.py 文件中添加详细注释主要包括以下内容引入依赖库from FlagEmbedding import FlagReranker # 用于对嵌入结果进行重新排序的工具类增加 reranking 方法def reranking(query, chunks, top_k3): # 初始化重排序模型使用BAAI/bge-reranker-v2-m3 reranker FlagReranker(BAAI/bge-reranker-v2-m3, use_fp16True) # 构造输入对每个 query 与 chunk 形成一对 input_pairs [[query, chunk] for chunk in chunks] # 计算每个 chunk 与 query 的语义相似性得分 scores reranker.compute_score(input_pairs, normalizeTrue) print(文档块重排序得分:, scores) # 对得分进行排序并获取排名前 top_k 的 chunks sorted_indices sorted(range(len(scores)), keylambda i: scores[i], reverseTrue) reranking_chunks [chunks[i] for i in sorted_indices[:top_k]] # 打印前三个 score 对应的文档块 for i in range(top_k): print(f重排序文档块{i1}: 相似度得分{scores[sorted_indices[i]]}文档块信息{reranking_chunks[i]}\n) return reranking_chunksretrieval_process方法 # 使用重排序模型对检索结果进行重新排序输出重排序后的前top_k文档块 reranking_chunks reranking(query,vector_chunks bm25_chunks, top_k) print(检索过程完成.) print(********************************************************) # 返回重排序后的前top_k个文档块 return reranking_chunks假如你从2026年开始学大模型按这个步骤走准能稳步进阶。接下来告诉你一条最快的邪修路线3个月即可成为模型大师薪资直接起飞。阶段1:大模型基础阶段2:RAG应用开发工程阶段3:大模型Agent应用架构阶段4:大模型微调与私有化部署配套文档资源全套AI 大模型 学习资料朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】配套文档资源全套AI 大模型 学习资料朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】