10-使用Reranker提升RAG回答准确率
使用 Reranker重排模型提升 RAG 知识库回答准确率系列从零构建企业 RAG 知识库第 10 篇1. 为什么召回后还要重排第一阶段检索追求“别漏掉”通常快速取 20—100 个候选生成模型上下文却只适合少量高质量证据。大范围召回高 Recall → Reranker 精排高 Precision → 去重与上下文预算 → 生成Embedding 常将问题和文档分别编码再比较向量Cross-Encoder 类 Reranker 同时读取“问题 候选”能进行更细致的相关性判断但计算更慢。2. 重排接口必须保留候选身份fromdataclassesimportdataclassfromtypingimportProtocoldataclass(frozenTrue)classCandidate:chunk_id:strdocument_id:strtenant_id:strtext:strretrieval_score:floatdataclass(frozenTrue)classRerankedCandidate:candidate:Candidate rerank_score:floatoriginal_rank:intclassReranker(Protocol):defscore(self,query:str,texts:list[str])-list[float]:返回与 texts 一一对应的相关性分数。3. 安全的批量重排defrerank(query:str,candidates:list[Candidate],reranker:Reranker,top_n:int5,)-list[RerankedCandidate]:ifnotquery.strip():raiseValueError(查询不能为空)ifnot1top_n20:raiseValueError(top_n 必须在 1 到 20 之间)ifnotcandidates:return[]scoresreranker.score(query,[item.textforitemincandidates])iflen(scores)!len(candidates):raiseRuntimeError(Reranker 分数数量与候选数量不一致)ifany(notisinstance(score,(int,float))forscoreinscores):raiseRuntimeError(Reranker 返回了非数值分数)ranked[RerankedCandidate(candidate,float(score),original_rank)fororiginal_rank,(candidate,score)inenumerate(zip(candidates,scores),start1,)]ranked.sort(keylambdaitem:(-item.rerank_score,item.original_rank,item.candidate.chunk_id,))returnranked[:top_n]原始排名作为同分排序依据让结果稳定且可诊断。4. 用确定性 Fake Reranker 测流程classKeywordReranker:教学替身只验证控制流不代表真实重排模型。defscore(self,query:str,texts:list[str])-list[float]:query_charsset(query)return[float(len(query_charsset(text)))/max(len(query_chars),1)fortextintexts]deftest_relevant_candidate_moves_forward()-None:candidates[Candidate(c1,d1,t1,退款政策总览,0.95),Candidate(c2,d2,t1,退款申请需要人工审核,0.80),]resultrerank(退款申请如何审核,candidates,KeywordReranker(),top_n1,)assertresult[0].candidate.chunk_idc2assertresult[0].original_rank25. 真实 Cross-Encoder 的适配示意classSentenceTransformersReranker:示意适配器模型名称和许可证需按当前官方资料选择。def__init__(self,model)-None:self.modelmodeldefscore(self,query:str,texts:list[str])-list[float]:pairs[(query,text)fortextintexts]raw_scoresself.model.predict(pairs)return[float(value)forvalueinraw_scores]# 示例初始化方式需要安装并锁定 sentence-transformers# from sentence_transformers import CrossEncoder# model CrossEncoder(经过团队评测并批准的模型路径)# reranker SentenceTransformersReranker(model)本文没有下载或运行具体重排模型不声称任何模型在企业数据上的准确率。6. 重排之后还要处理上下文defselect_context(ranked:list[RerankedCandidate],max_chars:int,min_score:float,)-list[Candidate]:selected:list[Candidate][]used0seen_documents:set[str]set()foriteminranked:ifitem.rerank_scoremin_score:continuesizelen(item.candidate.text)ifusedsizemax_chars:continue# 示例限制每份文档一个 Chunk避免近重复结果占满上下文ifitem.candidate.document_idinseen_documents:continueselected.append(item.candidate)seen_documents.add(item.candidate.document_id)usedsizereturnselected真实预算应使用目标生成模型 Tokenizer而不是字符数。7. 可复验的失败测试classBrokenReranker:defscore(self,query:str,texts:list[str])-list[float]:return[1.0]# 故意返回错误数量deftest_broken_reranker_is_rejected()-None:candidates[Candidate(c1,d1,t1,A,0.9),Candidate(c2,d2,t1,B,0.8),]try:rerank(问题,candidates,BrokenReranker())exceptRuntimeError:passelse:raiseAssertionError(错误的分数数量必须被拒绝)8. 如何证明重排有效固定第一阶段候选比较重排前后MRR、NDCGK 和 PrecisionK正确证据进入最终 Context 的比例最终答案正确性与忠实度P95 延迟、吞吐和成本长文、编号、否定条件和多语言切片。如果第一阶段没有召回正确证据Reranker 无法凭空找回它。9. 对抗性审查权限过滤必须在重排前完成限制候选数量和单条长度避免资源耗尽文档中的注入文本仍是不可信数据记录召回分数、重排分数和模型版本模型升级重新跑固定评测集Reranker 故障可降级到原始检索排序但要标记降级状态。10. 总结Reranker 的价值是把“可能相关”的大候选集压缩成“更适合进入上下文”的小集合。它优化排序而不是创造证据必须建立在高召回、权限正确和可评测的第一阶段检索之上。

相关新闻

大模型与AI代理开发实战指南

大模型与AI代理开发实战指南

1. 大模型与AI代理技术全景解析在人工智能技术快速迭代的当下,大模型与AI代理已成为开发者必须掌握的核心技能。不同于传统的单任务模型,现代AI代理系统通过大语言模型(LLM)作为核心处理器,配合工具调用、记忆存储和任…

2026/8/5 17:15:53 阅读更多 →
09-关键词与向量结合-Hybrid-Search混合检索实战

09-关键词与向量结合-Hybrid-Search混合检索实战

关键词检索与向量检索结合:Hybrid Search(混合检索)实战 系列:从零构建企业 RAG 知识库(第 9 篇) 1. 为什么两种检索互补 向量检索擅长同义表达和语义相关;关键词检索擅长精确编号、产品名、错…

2026/8/5 17:15:53 阅读更多 →
18-Prompt-AB测试实战-用数据选择更好的提示词

18-Prompt-AB测试实战-用数据选择更好的提示词

Prompt A/B 测试实战:用数据选择更好的提示词 系列:Python FastAPI 大模型应用基础(第 18 篇) 1. A/B 测试不是随机发两个版本就结束 Prompt A/B 测试要回答因果问题:在其他条件尽量一致时,版本 B 是否改…

2026/8/5 17:15:53 阅读更多 →

最新新闻

RDPWrap完全指南:免费解锁Windows多用户远程桌面限制

RDPWrap完全指南:免费解锁Windows多用户远程桌面限制

RDPWrap完全指南:免费解锁Windows多用户远程桌面限制 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini RDPWrap是一个开源项目,通过巧妙的配置文件机制…

2026/8/5 17:56:07 阅读更多 →
KMS_VL_ALL_AIO终极指南:Windows和Office一键激活的完整解决方案

KMS_VL_ALL_AIO终极指南:Windows和Office一键激活的完整解决方案

KMS_VL_ALL_AIO终极指南:Windows和Office一键激活的完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活而烦恼吗?KMS_VL_ALL_AIO智能激活…

2026/8/5 17:56:07 阅读更多 →
WorkshopDL:解锁Steam创意工坊跨平台下载的终极解决方案

WorkshopDL:解锁Steam创意工坊跨平台下载的终极解决方案

WorkshopDL:解锁Steam创意工坊跨平台下载的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾因在GOG或Epic Games Store购买游戏而无法访问Stea…

2026/8/5 17:56:07 阅读更多 →
TimescaleDB 2.29.1 版本发布:性能提升、漏洞修复,官方建议用户尽快升级

TimescaleDB 2.29.1 版本发布:性能提升、漏洞修复,官方建议用户尽快升级

TimescaleDB 2.29.1 版本:性能与安全双提升TimescaleDB 2.29.1 版本正式发布,此版本带来了自该版本以来的性能改进,同时着重进行了错误修复和安全漏洞修复。安全漏洞修复涉及多个方面,相关信息可查看[安全公告](https://github.co…

2026/8/5 17:56:07 阅读更多 →
OpenTX开源遥控器固件:终极自定义遥控器系统完整指南

OpenTX开源遥控器固件:终极自定义遥控器系统完整指南

OpenTX开源遥控器固件:终极自定义遥控器系统完整指南 【免费下载链接】opentx OpenTX custom firmware for Transmitters 项目地址: https://gitcode.com/gh_mirrors/op/opentx OpenTX是一款革命性的开源遥控器固件,专为航模爱好者和无人机玩家打…

2026/8/5 17:56:07 阅读更多 →
5分钟零配置打包:PakePlus让网页变桌面应用的终极指南

5分钟零配置打包:PakePlus让网页变桌面应用的终极指南

5分钟零配置打包:PakePlus让网页变桌面应用的终极指南 【免费下载链接】PakePlus Turn any webpage/HTML/Vue/React and so on into desktop and mobile app under 5M with easy in few minutes. 轻松将任意网站/HTML/Vue/React等项目构建为轻量级(小于5M)多端桌面应…

2026/8/5 17:55:07 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →