RAG的三次进化:从朴素检索到Agentic RAG 📅 发布时间:2026/7/16 3:09:28 👁️ 浏览次数: RAG的三次进化从朴素检索到Agentic RAG你有没有问过ChatGPT一个它不知道的问题结果它编了一个看起来很真的答案这就是幻觉。RAG检索增强生成是解决幻觉最主流的技术。这篇文章从向量检索的数学原理讲起带你走完RAG从朴素搜索到智能检索的三次进化。一、幻觉从何而来从LLM的本质说起Day1我们讲过LLM的本质是预测下一个字。问它2024年诺贝尔物理学奖得主是谁如果训练数据截至2023年它不知道答案。但它不会说我不知道——因为它的训练数据里很少有不知道对应的文本模式。它会从概率分布中挑一个听起来很合理的答案输出给你。这就是幻觉。RAG的思路很朴素别让LLM凭记忆先帮它查资料。普通LLM: 问题 → 回忆训练数据 → 回答可能编造 RAG: 问题 → 查资料 → 把资料和问题一起给LLM → 基于资料回答二、Level 1朴素RAG —— 用向量搜索替代关键词搜索2.1 为什么不直接用关键词搜索传统搜索比如CtrlF的原理是文档中有和搜索词相同的词就认为匹配。这有一个根本问题用户搜索怎么让系统更快——但文档里用的是性能优化方案。关键词完全不同但实际上在讲同一件事。这就是语义鸿沟。2.2 向量搜索的原理向量搜索的基本思路是把文字变成数字用数字之间的距离来衡量意思有多接近。准备文档把所有文档切成小块比如每块500字向量化用一个嵌入模型Embedding Model把每块文字变成一串数字向量存入数据库把向量存到支持向量搜索的数据库pgvector搜索时用户问题 → 同样用嵌入模型变成向量 → 在数据库中找最接近的向量 → 返回对应的文档块2.3 嵌入模型在做什么你可能会好奇文字怎么能变成数字而且意思相近的文字变成数字后自然就距离接近简单解释嵌入模型是一个被训练了海量文本的神经网络。训练过程中经常出现在同一上下文中的词会被拉近很少一起出现的词会被推远。训练完毕后这个模型就学会了词语的语义空间——相似的词在这个空间中距离相近。比如国王 - 男人 女人 ≈ 女王——这不是魔法是向量空间的运算性质。2.4 余弦相似度衡量两个向量的靠近程度用的是余弦相似度Cosine Similarity不是欧氏距离。为什么想象两个向量代表两篇文档。如果一篇文档很长向量数值很大一篇很短用欧氏距离会认为它们很远——但这只是因为长度不同不代表内容不同。余弦相似度只看方向不看长度。两个文档讨论相似的话题 → 向量方向接近 → 余弦相似度高。和文档长度无关。余弦相似度 cos(θ) (A·B) / (|A| × |B|) 取值范围: -1 到 11表示完全相同0表示无关2.5 朴素RAG的问题搜一次拿到什么用什么。如果搜出来的东西不相关呢LLM还是会基于这些不相关的材料编答案。这叫垃圾进垃圾出。而且LLM不知道检索结果是错的。它信任你给它的所有材料。三、Level 2Agentic RAG —— 让Agent判断检索质量3.1 核心改进加入质量评估朴素RAG: 问题 → 检索 → 直接回答 Agentic RAG: 问题 → Agent判断是否需要检索 ├─ 不需要 → 直接回答 └─ 需要 → 检索 → Agent检查结果质量 ├─ 质量好(相似度0.8) → 回答 ├─ 勉强(0.5-0.8) → 改写关键词重搜 └─ 差(0.5) → 告知用户关键改进是第二处的Agent判断。Agent不再盲目接受检索结果——它会检查相似度评分判断结果是否足够可靠。3.2 为什么这个改进如此重要举个例子。用户问“Spring AI和LangChain在MCP支持上有什么区别”第一次搜索queryMCP 支持区别 → 5条结果相似度分别是 0.45, 0.42, 0.38, 0.35, 0.31 → 平均相似度 0.38远低于阈值 0.5 Agent判断结果不可靠改关键词重搜。 第二次搜索querySpring AI MCP集成 LangChain MCP集成 对比 → 5条结果相似度 0.78, 0.75, 0.72, 0.68, 0.65 → 平均 0.72超过阈值 Agent判断结果可靠基于此回答。Agent有了质量意识它不再机械地接受第一次结果。这就是Agentic RAG和朴素RAG的本质区别。3.3 相似度阈值的经验阈值不是固定值需要根据嵌入模型调整。相似度含义行动 0.8高度相关直接回答0.5-0.8部分相关考虑重搜 0.5基本无关必须重搜或告知用户BGE系列模型在中文上的相似度分布和OpenAI embedding不同需要实测后调整阈值。四、切片策略RAG中最被低估的环节向量检索的精度是块。一个块太大检索不准太小语义不全。4.1 为什么切片这么重要想象你有一个2000字的文档切成4块每块500字 → 粗粒度搜索可能找不到具体信息40块每块50字 → 细粒度但一个完整的段落被切成10块语义被切断4.2 我们的切片算法每块500字符相邻块重叠50字符。 优先在段落边界(\n\n)处切分 → 保持语义完整。 找不到段落边界 → 按行(\n)切分。 实在找不到 → 强行截断。重叠的作用是保险——防止关键信息恰好落在两个chunk的边界上被切断。4.3 更高级的做法语义切片不是固定长度而是根据语义相似度动态决定切分点。两个相邻句子的embedding向量突然变远了 → 说明话题变了 → 应该从这里切开。但计算成本比固定切片高一个数量级。五、HNSW索引为什么搜索这么快如果数据库里有100万个向量每个搜索都要对100万个向量逐个算余弦相似度——那会很慢。pgvector用HNSWHierarchical Navigable Small World算法构建索引。简单解释5.1 通俗理解HNSW想象你要在100万个陌生人中找和你最相似的人。你会怎么做HNSW的做法是先建一个社交网络。每个人认识最相似的16个人m16。搜索时从上层稀疏连接快速定位到目标区域然后在下层密集连接精确搜索。这和跳表Skip List的原理很像高层做大方向导航底层做精确查询。5.2 我们的配置CREATEINDEXdocuments_embedding_idxONdocumentsUSINGhnsw(embedding vector_cosine_ops)WITH(m16,ef_construction200);m16每层每个节点最多16个邻居。越大越精确但索引越大。ef_construction200构建时的搜索宽度。越大越精确但构建越慢。六、三点总结语义检索不等于语义理解Embedding只是把字符变成了数字。LLM需要判断检索结果是否真的回答了问题。Agentic RAG的核心是反馈循环不是更好的检索算法而是检索→评估→修正的闭环。细节决定效果切片策略、重叠大小、相似度阈值、索引参数——每个参数都影响最终效果。项目链接项目代码day6-agent
MetaTube:Jellyfin/Emby媒体库管理的终极解决方案 MetaTube:Jellyfin/Emby媒体库管理的终极解决方案 【免费下载链接】jellyfin-plugin-metatube MetaTube Plugin for Jellyfin/Emby 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metatube MetaTube是一款革命性的Jellyfin和Emby元数据插件&… 2026/7/16 3:09:28
救命!2026年AI论文工具排行榜,写论文卡壳的学生党直接抄作业 作为熬了 3 年论文、前后踩过十几款 AI 写作工具坑的老学长,今天直接给大家上硬货 ——2026 年 AI 写论文工具排行榜!结合《2025 论文写作工具白皮书》的用户实测数据,还有我从本科毕设到硕士小论文的全程使用体验,精选出 7 款真正… 2026/7/16 3:07:27
VSCode 多光标与批量编辑:从基础操作到实战提效 1. 多光标编辑:从零开始的效率革命第一次在VSCode里看到同事同时修改十几行代码时,我盯着屏幕上闪烁的多个光标足足愣了五秒——这简直像科幻电影里的场景。多光标编辑作为现代代码编辑器的标配功能,本质上允许你在多个位置同步输入或修改内容… 2026/7/16 3:07:27
从天线到扬声器:超外差收音机核心电路模块深度解析 1. 天线与输入电路:捕捉空中电波的"渔网"想象一下收音机的天线就像一张无形的渔网,专门用来捕捉漂浮在空中的无线电波。我拆解过几十台老式收音机,发现不同机型的天线设计差异很大。便携式收音机常用磁棒天线,这种黑色长… 2026/7/16 5:07:53
Python实战:破解在线考试系统字体加密反爬,实现题库自动解密与整理 1. 项目概述与核心挑战最近在帮朋友处理一个在线考试系统的复习资料时,遇到了一个挺有意思的技术问题。这个系统为了“保护”题库,对题目和选项的文本内容进行了字体加密。简单来说,你在网页上看到的清晰文字,在HTML源码里却是一堆… 2026/7/16 5:07:53
Ad Hoc网络:从竞赛算法到现实世界的自组织通信 1. 当算法思维遇上无线网络:Ad Hoc的双重含义第一次听到"Ad Hoc"这个词是在大学算法课上,教授指着黑板上一道没有标准解法的题目说:"这就是典型的Ad Hoc问题"。几年后,当我开始研究无线通信技术时,… 2026/7/16 5:07:53
高精度3D人脸模型在VR中的实时渲染优化与工程实践 1. 项目概述:当高清3D人脸遇见VR实时渲染 最近在折腾一个挺有意思的项目,核心就是把一个叫HRN的高精度3D人脸重建算法生成的结果,直接扔到VR头显里进行实时渲染,目标是打造一种前所未有的、能“面对面”观察数字人的沉浸式体验。这… 2026/7/16 5:05:46
HLW8110电能计量芯片的硬件选型与软件校准实战指南 1. HLW8110芯片基础认知与选型策略第一次接触HLW8110时,我被它SOP-8封装里蕴含的强大功能震撼到了——这个比指甲盖还小的芯片,居然能同时测量电压、电流、功率等十余种电参数。在实际项目中踩过几次坑后,我总结出选型时必须关注的三个核心指… 2026/7/16 5:05:46
Trae集成Coze实时API:5分钟完成流式语音智能体开发 1. 项目概述:Trae 不是“另一个 IDE”,而是 API 集成的加速器“使用 Trae 工具轻松搞定扣子智能体API集成”——这个标题里藏着一个被多数人忽略的关键事实:它根本不是在讲“怎么用 Trae 写代码”,而是在讲“怎么用 Trae 这个专为… 2026/7/16 5:03:43
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并 摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代… 2026/7/16 0:00:26
HAM未来路线图:下一代高可用迁移技术的发展方向与展望 HAM未来路线图:下一代高可用迁移技术的发展方向与展望 【免费下载链接】ham Based on the remote memory access capability and high bandwidth of the UB, deterministic duration virtual machine live migration is achieved, addressing planned downtime issu… 2026/7/16 0:04:27
月球是否是从地球分离出去的?——容度原理解释 月球是否是从地球分离出去的?——容度原理解释一、月球起源的“三大假说”与容度原理的重新审视月球起源的三大假说——捕获说(月球是太阳系中独立的星体,被地球引力捕获)、共生说(月球与地球同时从原始星云中形成&… 2026/7/16 0:06:27
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/16 3:47:53
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41