你的 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/9/17 0:47:30 阅读更多 →
告别模组混乱: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/9/6 16:32:42 阅读更多 →
OpenClaw全平台安装与AI开发框架部署指南

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

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

2026/9/18 10:12:27 阅读更多 →

最新新闻

Python接口设计与设计模式实践指南

Python接口设计与设计模式实践指南

1. Python 中的接口哲学与设计模式基础在静态类型语言如Java或C中,接口(interface)是面向对象设计的基石。但Python作为动态类型语言的代表,采用了完全不同的设计哲学。理解这种差异是掌握Python设计模式的关键。Python的"鸭子类型"(Duck Typi…

2026/9/19 9:27:13 阅读更多 →
汽车电子可靠性功能状态等级:从Class A到Class E的分级降级策略与工程实践

汽车电子可靠性功能状态等级:从Class A到Class E的分级降级策略与工程实践

1. 汽车电子产品可靠性功能状态等级的核心逻辑1.1 从一个真实的失效案例说起前两年跟一个做域控制器的朋友聊天,他提到一个很典型的场景:某车型在高温高湿环境下跑了不到两千公里,仪表盘突然报出转向助力降级的警告,车主感受到方向…

2026/9/19 9:27:13 阅读更多 →
稀疏矩阵Cholesky分解原理与优化实践

稀疏矩阵Cholesky分解原理与优化实践

1. Cholesky分解基础概念稀疏对称正定矩阵的Cholesky分解是数值线性代数中的核心算法之一。给定一个nn的稀疏对称正定矩阵A,其Cholesky分解可以表示为A LLᵀ,其中L是一个下三角矩阵,且对角元素均为正数。1.1 稀疏矩阵的特性稀疏矩阵是指绝大…

2026/9/19 9:27:13 阅读更多 →
OpenHands 实战:TaoToken 跑通一个 pytest 仓库的 flaky fixture 修复

OpenHands 实战:TaoToken 跑通一个 pytest 仓库的 flaky fixture 修复

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

2026/9/19 9:27:13 阅读更多 →
Java transient修饰符:序列化中的关键控制

Java transient修饰符:序列化中的关键控制

1. 深入理解Java中的transient修饰符在Java开发中,对象序列化是一个常见需求,但并非所有对象属性都需要或能够被序列化。这就是transient修饰符发挥作用的地方。想象一下,你正在开发一个需要保存用户会话状态的Web应用,但会话中可…

2026/9/19 9:27:13 阅读更多 →
工程数学习题答案的深层价值:从解题到工程能力跃迁

工程数学习题答案的深层价值:从解题到工程能力跃迁

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

2026/9/19 9:26:13 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →