当前位置: 首页 > news >正文

RAG 系统做不好?可能是你少了这一步:重排序(Reranking)

检索增强生成RAG流程里向量检索只是第一步。真正决定生成质量的往往是对检索结果的二次精排——这一步叫 Reranking。本文详解三种主流重排策略附完整代码看完就能用。一、为什么需要重排序RAG 的标准流程是用户提问 → 向量检索 → 取 Top-K 片段 → 送给 LLM 生成答案。但向量检索有个天然缺陷召回率高精准度低。它擅长把相关文档捞回来但不擅长判断哪个最相关。结果就是Top-10 里混着高度相关、有点相关、擦边相关的内容LLM 拿到的是一堆噪声。重排序的作用对初始检索结果做二次打分排序把最相关的推到前面提升最终生成质量。二、方法一RRF 多路召回融合简单快速核心思路同时从多个角度检索同一问题然后用倒数排名融合Reciprocal Rank Fusion, RRF把多路结果合并成一个综合排名。公式很简单score Σ 1 / (rank_i k)rank_i某篇文档在第 i 路查询中的排名k调节参数默认 60k 越大排名差异影响越小适合场景多路召回合并向量检索 关键词检索 BM25 等高并发、低延迟要求的生产环境不想引入额外算力成本的场景优势与局限代码实现from langchain.retrievers import MergerRetriever from langchain.retrievers.multi_query import MultiQueryRetriever from langchain_community.vectorstores import Milvus from langchain_openai import ChatOpenAI, OpenAIEmbeddings # 初始化向量库和 Embedding embeddings OpenAIEmbeddings(model text-embedding-3-small ) vectorstore Milvus( embeddings, connection_args{ host : localhost , port : 19530 }, collection_name rag_docs ) # 生成 4 个不同角度的查询 llm ChatOpenAI(model glm-4 , temperature 0 ) retriever MultiQueryRetriever.from_llm( retrievervectorstore.as_retriever(search_kwargs{ k : 10 }), llmllm ) # RRF 融合LangChain 内置 docs retriever.invoke( 悦享餐饮 2020-2023 年财务分析 )三、方法二RankLLM 语义重排深度理解核心思路直接用 LLM 对每篇候选文档打分比如 0-10 分按分数重排。本质是把排序问题变成这篇文档对回答这个问题有多大帮助的评判问题LLM 的语义理解能力在这里完胜任何统计方法。适合场景专业问答、复杂推理任务对排序可解释性有要求的场景候选文档数量不多50的情况优势与局限代码实现from langchain_openai import ChatOpenAI from langchain.schema import HumanMessage llm ChatOpenAI(model glm-4 , temperature 0 ) def rank_with_llm ( query: str, docs: list ) - list : 用 LLM 对每篇文档打分返回排序后的文档列表 scored_docs [] for doc in docs: prompt f 请对以下文档与问题的相关性打分0-10 分10 分最相关。 问题{query} 文档内容 {doc.page_content} 只输出一个数字分数不要输出其他内容。 response llm.invoke([HumanMessage(contentprompt)]) score float (response.content.strip()) scored_docs.append((doc, score)) # 按分数降序排列 scored_docs.sort(key lambda x: x[ 1 ], reverse True ) return [doc for doc, score in scored_docs] # 使用方式 reranked_docs rank_with_llm( 悦享餐饮 2020-2023 年财务分析 , docs)四、方法三CrossEncoder 精排精度最高核心思路CrossEncoder 把查询和文档拼接在一起用 BERT 做双向注意力编码直接从语义交互中预测相关性分数。和向量检索的 BiEncoder查询和文档分别编码相比CrossEncoder 能捕捉更细粒度的语义交互排序精度显著更高。架构示意输入[CLS] 查询 [SEP] 文档内容 [SEP] ↓ BERT 双向编码 [CLS] 输出向量 → 全连接层 → 相关性分数适合场景搜索系统的精排阶段候选 100对排序精度要求极高的场景已有初筛结果只需对少量候选做精排优势与局限代码实现from sentence_transformers import CrossEncoder # 加载预训练模型ms-marco-MiniLM 是通用排序模型 reranker CrossEncoder( cross-encoder/ms-marco-MiniLM-L-12-v2 ) def rerank_crossencoder ( query: str, docs: list, top_k: int 5 ) - list : 用 CrossEncoder 对候选文档精排 # 构造 query-document 对 pairs [[query, doc.page_content] for doc in docs] # 批量预测相关性分数 scores reranker.predict(pairs) # 按分数排序 doc_score_pairs list ( zip (docs, scores)) doc_score_pairs.sort(key lambda x: x[ 1 ], reverse True ) return [doc for doc, score in doc_score_pairs[:top_k]] # 使用方式先向量检索初筛再用 CrossEncoder 精排 initial_docs vectorstore.similarity_search( 悦享餐饮财务分析 , k 20 ) final_docs rerank_crossencoder( 悦享餐饮 2020-2023 年财务分析 , initial_docs, top_k 5 )五、三种方法对比总结六、实战推荐组合实际生产系统里三种方法往往组合使用各司其职用户提问 ↓ 向量检索 关键词检索多路召回 ↓ RRF 融合排序快速合并 ↓ CrossEncoder 精排 Top-50 → Top-5精度过滤 ↓ 可选RankLLM 对 Top-5 做最终语义校验 ↓ 送给 LLM 生成答案这个流水线在召回率、精准度、成本之间取得了比较好的平衡。七、关键参数参考RRF 的 k 值默认 60可以根据业务调整。k 越小排名靠前的优势越大k 越大各路结果越公平。文档切分chunk_size300, chunk_overlap50是通用起点根据文档类型调整。CrossEncoder 候选量建议初筛后候选不超过 100 篇否则推理延迟会明显上升。RankLLM 候选量建议不超过 20 篇API 成本考虑。总结RAG 系统的效果瓶颈往往在检索质量而不在生成质量。重排序是把粗糙的检索结果打磨成高质量上下文的关键一步要快、要便宜 → RRF要深度语义理解、要可解释 → RankLLM要精度、要平衡成本和效果 → CrossEncoder三步组合拳才能让 RAG 真正可用。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
http://www.zskr.cn/news/1387427.html

相关文章:

  • 跨平台播放器技术困局:zyfun如何用Electron架构重塑全平台媒体体验?
  • 告别信息孤岛:基于MCP与智能体集群编排构建下一代AI应用
  • Unity实时视觉交互工程:GPU直通零拷贝YOLO部署方案
  • TorchRL工程实践:模块化设计与PyTorch原生RL开发
  • Lailloken-UI:流放之路自动化界面增强工具的技术架构解析
  • 终极指南:如何免费解锁WeMod专业版功能
  • Unity资源工作流:UPM镜像代理与离线可重现方案
  • 无机布防火卷帘门报价透明,包工包料,一次说清所有费用
  • AI原生应用部署实战:从预览到生产的四大陷阱与解决方案
  • Web-vmstats:终极Linux系统监控可视化工具 - 告别枯燥的命令行vmstat
  • Unity资源提取实战指南:工具、工程与效率三维框架
  • AI如何赋能小团队开发:从成本颠覆到利基SaaS实践
  • 上海亚卡黎实业有限公司2026登高设备供应商精选:直臂式登高车/剪式高空作业平台/ 曲臂式升降机厂家优选上海亚卡黎实业 - 栗子测评
  • LLM API安全攻防实战:从提示词注入到自动化测试方案
  • 新手必看:汇川Inoproshop里CIA402轴配置的保姆级避坑指南
  • 收藏干货|2026 年版 一文读懂大模型完整预训练全过程
  • A2A与MCP协议全解析:不是谁取代谁,而是AI智能体的两条腿
  • 手把手教你用Synopsys VIP搭建APB验证环境(从System Env到Agent配置)
  • 终极指南:如何免费批量下载抖音视频和直播回放
  • 竟然还在手动逐句整理抖音干货做总结?2026年这4款抖音总结app1分钟搞定全内容
  • 2026年比较好的四川卤味火锅底料/四川美蛙鱼火锅底料/牛油火锅底料优质公司推荐 - 行业平台推荐
  • 基于U-Net与匹配滤波的高光谱甲烷泄漏AI检测系统实践
  • 2026年比较好的青椒火锅底料/牛油火锅底料/番茄火锅底料主流厂家对比评测 - 品牌宣传支持者
  • Burp Suite本地测试环境从零搭建实战指南
  • 从USB转TTL接线到手机热点配网:ESP8266无线通信保姆级避坑指南(附软件包)
  • 别再乱用USB转串口了!手把手教你用Python直连山特UPS(C3K型号)读取实时数据
  • 数据标注:外包还是自建团队?成本对比与实战分析
  • 四旋翼变形控制:RL与MPC在混合动力学中的对比
  • Apache Fesod终极指南:3大策略破解百万级Excel数据内存瓶颈
  • Nitronic50不锈钢厂商那家好?推荐几家Nitronic50线材国内厂商 - 品牌2025