你的 RAG 到底答得准不准? 给它做评估 + 混合检索与重排
你兴冲冲地把 chunk 大小从 300 调到 500感觉「好像变好了」——但真的变好了吗还是错觉没有一把尺子你永远在凭感觉打转。RAG 优化的第一性原理是先能度量才谈得上改进。今天我们先造出这把尺子评估再用它验证两个最有效的升级动作——混合检索和重排。学完你就从「凭感觉调参」升级成「用数字驱动」。01RAG 分两段评估也分两段回忆 006RAG 检索生成。这两段会各自出错得分开评环节失败长什么样怎么量检索压根没找到该用的资料巧妇难为无米之炊命中率 Hit Rate、召回 Recallk、MRR生成资料对了但答案跑偏或编造忠实度 Faithfulness、答案相关性 Answer Relevancy 先诊断再下药分开评估的意义在于定位病根如果检索命中率就很低那再强的模型也救不回来——该去改切块/检索如果检索没问题但忠实度低那是 prompt 或模型的问题——去改生成。不分段你连该修哪儿都不知道。02评估检索先攒一份「金标准」评估的前提是有一份评估集golden set一批问题以及每个问题「本应命中」的文档。几十条人工标注即可起步。基于 009 的 Chroma 库每段有 id命中率就是一段简单代码# 复用 009 的 kbChroma collection。金标准问题 → 应命中的文档 id GOLD [ { q : 生鲜能退吗 , want : a2 }, { q : 退款几天到账 , want : a3 }, { q : 什么时候发货 , want : d1 }, ] def hit_rate (k 3 ): hits 0 for item in GOLD: got kb.query(query_texts[item[ q ]], n_resultsk)[ ids ][ 0 ] hits (item[ want ] in got) # 命中的正确文档在 top-k 里就算 1 分 return hits / len (GOLD) print ( fHit3 {hit_rate():.0%} ) # 例如 Hit3 67%∑ 三个常用检索指标Hit Ratek正确文档出现在 top-k 里的比例0/1最直观。Recallk一个问题有多个相关文档时top-k 命中了其中几成。MRR平均倒数排名正确文档排在第 1 名给 1 分、第 2 名给 1/2、第 3 名给 1/3……——不仅关心「找没找到」还关心「排得够不够靠前」。03评估生成让「AI 当裁判」LLM-as-judge生成质量没有标准答案可对比怎么打分主流做法是LLM-as-judge——请一个模型当裁判。最重要的一把尺子是忠实度Faithfulness答案里的每句话是不是都能在检索到的资料里找到依据这直接量化了「有没有幻觉」。import anthropic client anthropic.Anthropic() def judge_faithful (question, context, answer): prompt ( 你是严格的评审。判断【答案】是否完全由【资料】支撑、没有编造。\n 只回复一个词YES完全有据或 NO含无据/编造内容。\n\n f资料\n{context}\n\n问题{question}\n\n答案{answer} ) resp client.messages.create( model claude-opus-4-8 , max_tokens 10 , messages[{ role : user , content : prompt}], ) verdict next (b.text for b in resp.content if b.type text ).strip().upper() return verdict.startswith( YES )另一把常用尺子是答案相关性Answer Relevancy答案切不切题、有没有答非所问同样可以让裁判打 1~5 分。把这些分数在整个评估集上一平均你就有了一块能对比不同版本的「仪表盘」。⚠️ 裁判也会看走眼LLM-as-judge 又快又便宜但不是真理。务必① 用比被测更强的模型当裁判② 给裁判清晰的评分标准和示例③人工抽检一部分裁判结果校准它是否可信。把它当「自动化初筛」而非「终审法官」。04提分利器一混合检索向量 关键词纯向量检索008/009擅长「语义相近」但有个短板专有名词、编号、代码、精确字符串它常常抓不住。你搜「订单号 SF12345」向量觉得它和一堆「订单相关」的话都挺像却未必能精准锁定那一条。**混合检索Hybrid Search**把两种检索的结果融合向量检索语义懂「意思相近」如「重置密码」↔「忘记口令」。关键词检索如 BM25字面懂「精确匹配」如「SF12345」「log4j」「第 7 条」。两路各取所长用 **RRFReciprocal Rank Fusion倒数排名融合**之类的方法把两个排名合成一个。很多向量库/框架已内置混合检索一个开关的事。 一句话向量检索管「意思像」关键词检索管「字面对」。真实问题两种都有所以混合检索几乎总比单用一种更稳——这是性价比最高的一次升级。05提分利器二重排Rerank检索为了快用的是「双塔」式的近似匹配问题、文档各自编码后比距离召回快但不够精。重排的思路是「粗召回 精排序」两段式重排器reranker通常是个cross-encoder把「问题 候选文档」一起喂进模型算一个精准的相关分。它比双塔准得多但慢——所以只用它给粗召回的一小批候选精排。代码只多几行# pip install sentence-transformers from sentence_transformers import CrossEncoder reranker CrossEncoder( cross-encoder/ms-marco-MiniLM-L-6-v2 ) def retrieve_rerank (q, k 3 , pool 20 ): cand kb.query(query_texts[q], n_resultspool)[ documents ][ 0 ] # ① 粗召回 20 条 scores reranker.predict([(q, c) for c in cand]) # ② 逐条精排打分 order sorted ( range ( len (cand)), key lambda i: -scores[i]) return [cand[i] for i in order[:k]] # ③ 取精排后的 top-306把它跑成一个闭环数字驱动优化有了尺子和两个升级动作正确的工作方式是一个迭代闭环1建评估集攒一批有代表性的真实问题 金标准答案/应命中文档。2跑基线先测出当前系统的 Hitk 与忠实度记下来当对照。3只改一个变量比如「加重排」或「换混合检索」——一次只动一处。4重跑评估、看分数分数涨了就留下没涨/退步就回滚。用数字说话。eval.py — 对比实验$ python eval.py ━━ 基线纯向量 top-3━━ Hit3 0.67 忠实度 0.80 ━━ 重排粗召回20 → 精排3━━ Hit3 0.92 ▲ 0.25 忠实度 0.93 ▲ 0.13 ✅ 重排带来明显提升采纳。关键纪律一次只改一个变量。同时改切块、换嵌入、又加重排分数变了你也不知道是谁的功劳——科学实验的基本功在这里同样适用。07常见坑⚠️ 评估里最容易翻车的地方①评估集不代表真实问题都是你自己顺手编的、太简单分数虚高上线现原形。要收集真实用户问题覆盖长尾和刁钻情况。②只看平均分均值会掩盖灾难性坏例。一定要翻出得分最低的几条逐个看——真正的洞察都在坏例里。③裁判偏见LLM 裁判可能偏爱长答案、或偏爱和自己风格像的答案。抽检 明确评分标准来对冲。④评估集泄漏进 prompt别把金标准答案不小心塞进上下文那是自欺欺人。08今日小测验Q1 为什么 RAG 评估要把「检索」和「生成」分开评**答**为了定位病根。检索没找对再强的模型也答不好该去改切块/检索检索对了但答案跑偏/编造那是生成层(prompt/模型)的问题。不分段就不知道该修哪儿。Q2 忠实度Faithfulness衡量的是什么它对应哪个老毛病**答**衡量答案里的每句话是否都能在检索到的资料中找到依据。它直接量化「有没有幻觉」——忠实度低 模型在编造资料没说的内容。Q3 混合检索为什么常比纯向量检索更稳**答**向量擅长语义相近但不擅长精确匹配编号、专名、代码关键词(BM25)正好相反。混合把两路结果融合各取所长覆盖更全。Q4 重排为什么要「先粗召回再精排」而不直接用重排器搜全库**答**重排器是 cross-encoder把问题文档一起算准但慢无法对全库每条都跑。所以先用快的向量检索粗召回一小批(如 top-50)再用重排器只对这批精排——快与准兼得。学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%免费】

相关新闻

一套漫画看懂什么是 RAG

一套漫画看懂什么是 RAG

很多人第一次接触 RAG 时,都会有同一种感觉: 这个词在 AI 圈里很常见,但真正解释清楚时,往往又容易变得很技术、很抽象。 所以这次我换一种方式——直接用一套知识漫画,把 RAG 讲明白。 如果先用一句最直白的话概括&am…

2026/10/21 15:24:01 阅读更多 →
告别模组混乱:AML启动器带你轻松管理XCOM 2与奇美拉小队模组

告别模组混乱:AML启动器带你轻松管理XCOM 2与奇美拉小队模组

告别模组混乱:AML启动器带你轻松管理XCOM 2与奇美拉小队模组 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mir…

2026/10/21 7:54:14 阅读更多 →
OpenClaw全平台安装与AI开发框架部署指南

OpenClaw全平台安装与AI开发框架部署指南

1. OpenClaw全平台安装指南:从零到精通的完整方案 OpenClaw作为一款新兴的AI智能体开发框架,凭借其模块化设计和多模型支持能力,正在开发者社区快速走红。我最近在三个不同平台(Windows 11、Ubuntu 22.04和macOS Ventura&#xff…

2026/10/21 17:19:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 19:06:46 阅读更多 →