ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

RAG实战指南:从朴素检索到Agentic RAG的进阶路线

2026/9/6 13:36:04 拓冰建站 浏览量
RAG实战指南:从朴素检索到Agentic RAG的进阶路线 很多人以为RAG就是把文档塞进向量库再丢给大模型一问了事。等到真把手上的PDF、财报、客服聊天记录扔进去才发现生成的答案要么张冠李戴要么翻来覆去就那几句正确的废话。这个场景我太熟悉了因为我自己就是从“能跑通”到“能用”这一路踩过来的。NirDiamant/RAG_Techniques这个项目是我目前见过的对RAG技术栈覆盖最完整的一份开源资料它几乎把所有实战中会碰到的关键节点——索引、检索、评估、图结构、智能体编排——都拆开揉碎讲了一遍。这篇文章不打算复述项目里的每一行代码而是想聊清楚几件事这个仓库到底值不值得钻进去它的技术路线是怎么一步步从朴素RAG演进到Agentic RAG的评估为什么是整个项目里最容易被低估的部分以及向量化、分块、混合检索这些看似基础的操作里究竟藏着多少坑。内容主要面向两类人一类是刚接触RAG、想找一条系统学习路径的开发者另一类是已经做出Demo但效果不稳定想搞清楚问题出在哪个环节的实战派。1. 这份开源项目到底覆盖了RAG的哪些关键环节1.1 一个被低估的技术栈全景图NirDiamant/RAG_Techniques在GitHub上的定位是“全面的RAG技术栈学习指南”但我觉得它更像一张按实战顺序排列的排雷图。仓库从最基础的朴素RAG开始一路延伸到评估方法论、查询转换、索引优化、高级检索、文档解析、图RAG、认知RAG、智能体RAG最后还落到生产部署和成本优化。如果只看目录你可能会觉得这不过是个教程合集但真正钻进去之后你会发现作者是按照一个RAG系统从0到1、再从1到100的完整生命周期来组织内容的。项目里有一批命名规范、注释清晰、代码可独立运行的Jupyter Notebook技术栈以LangChain和LlamaIndex为主同时穿插了spaCy、Ollama、RAGAS等工具。它不是某一框架的死忠教程而是带着你理解框架背后的原理。这点很关键因为LangChain和LlamaIndex之间API差异很大如果你只在其中一个框架里写过检索很难建立起对RAG的通用认知。项目里很多章节会让你用两种框架分别实现同一个功能这种对照学习的价值远大于跟着单一框架的官方Demo跑一遍。1.2 为什么说它是“实战字典”而不是“入门PPT”我见过太多RAG教程只停留在“导入库、建索引、调接口”三步走看起来很快但一旦出了问题你根本不知道去哪里排查。RAG_Techniques不同它有一个明确的导向告诉你每一个环节为什么存在、什么时候需要、怎么做选择。比如文档解析章节里作者会讨论PDF扫描件、表格、嵌套列表这些“脏数据”该怎么处理又比如查询转换章节里它会对比Multi-Query、HyDE、Step-Back Prompting这些不同策略分别解决什么问题。这种细节密度才是项目和普通教程拉开差距的地方。还有一个容易被忽略的点项目的Issue区非常活跃作者本人也会直接回复技术问题。这意味着你看到的不是一份静止的PDF而是一个还在演进的活项目。对于想学RAG的人来说这种“有人答疑、持续更新、有真实反馈循环”的资料比买一本纸上谈兵的技术书划算得多。2. 从Naive RAG到Agentic RAG项目里藏着一条清晰的技术演进路径2.1 朴素RAG的局限递归检索救不了的问题项目最开始的几个Notebook会让你实现一个标准的朴素RAG流程加载文档、切块、向量化、检索、拼接上下文、生成回答。这一套流程跑通只需要几十分钟但它暴露的问题也很直接当你的问题依赖多个文档片段、需要多跳推理、或者用户提问的措辞和文档原文差异很大时朴素RAG的表现会迅速下滑。原因在于向量检索本质上是在做语义相似度搜索它能帮你找到“看起来相关”的片段但不保证这些片段拼在一起能形成一个完整、正确的答案。项目里在讲到这一层时非常强调一个观点RAG的瓶颈往往不在生成而在检索。如果你的检索结果里前几名全是噪音后面接什么大模型都救不回来。所以项目引出查询转换和高级检索策略本质上都是在干同一件事——提升检索命中的质量。2.2 查询转换让用户的问题先变得“更好检索”FixThisCode是进阶RAG里很值得研究的一环。它不直接改检索器而是让LLM先把用户问题“翻译”成几个更适合检索的查询。比如用户问“去年各季度营收变化”你可能需要拆成四个季度分别去查这就是Multi-Query的思路。而HyDE是反过来先生成一个假设性的回答文档再用这个文档去检索以此提高和文档片段的语义接近度。Step-Back Prompting则是把具体问题抽象成更宽泛的问题再检索适合“这几种方案各自的优缺点”这类问题。这些方法听起来都不复杂但它们的价值在于给你提供了“检索效果不好时的一套干预手段”。项目里对这些方法都配有完整的对比实验告诉你它们分别在什么条件下提升多少而不是只丢给你一段代码。2.3 为什么项目要把Graph RAG和Agentic RAG放在后面Graph RAG和Agentic RAG在项目里被安排在进阶位置是有原因的。它们解决的问题已经不是单个检索器的优化而是整个RAG系统架构的重新设计。Graph RAG通过把实体和关系组织成图结构来解决跨文档关联、多跳推理这类问题它适合的是金融研报、医疗文献、法律条文这种实体关系密集的场景。而Agentic RAG更进一步让LLM像一个智能体一样判断“该调哪个工具”“该搜哪段知识”“搜索不充分时要不要再查一轮”它的核心是决策而不是单纯的相似度计算。这些高级话题之所以放在Naive RAG和Advanced RAG之后是因为你得先理解基础检索的局限才能真正理解它们存在的意义。项目这样的章节排序其实是在教你一种技术选型的思维方式根据问题的复杂度选择匹配的RAG架构而不是一律上最炫的方案。2.4 高级RAG的工程实现从LangChain到LlamaIndex项目在高级RAG章节里给了大量LangChain和LlamaIndex的双实现示例包括多层索引、递归检索、上下文压缩、自动合并检索器这些工程上非常常用的手段。我个人觉得LlamaIndex在索引和检索模块的抽象上更灵活而LangChain胜在生态集成丰富。两个框架配合起来学你会对“哪些能力是框架封装的、哪些是模型本身的、哪些是检索算法的”有更清醒的认知。这个认知在工作中做技术选型时会特别有用。3. RAG测评怎么做项目里最容易被低估的评估章节3.1 先定义“好”再谈“优化”很多团队做RAG项目优化的方式是“拍脑袋”觉得答案不够好就换个大模型或者加个提示词。但项目在评估章节里明确提出了一个框架要先用一套可量化的指标定义“好”然后再去优化。它把评估分成两大部分检索质量上下文精度、上下文召回率和生成质量忠实度、答案相关性。这套体系和RAGAS的指标设计高度一致但又给出了更细的落地建议。给你的实操建议是先选20到50个有标准答案的业务问题作为评测集。标注工作很痛但你绕不开。没有评测集后续所有优化动作都是在盲目飞行。3.2 检索质量评估目标不是“相关”而是“够用”评价检索质量时项目强调了一个很容易被忽略的观点检索结果的相关性不是越高越好而是要覆盖答案所需的所有必要信息。有些片段单独看很相关但拼在一起仍缺关键信息另一些片段初看无关却恰恰是补全上下文的关键。因此上下文召回率比上下文精度更值得关注。在拣选评测问题时至少要包含一定比例的多跳问题否则你测出来的召回率会虚高埋下隐患。3.3 生成质量评估忠实度与答案相关性要分开看生成质量的评估也不难理解忠实度衡量的是模型有没有胡编乱造答案相关性衡量的是回答是否切题、是否解决了用户诉求。一个容易踩的坑是模型回答很流畅也切题但里面有一半内容检索上下文里根本没有这种回答在业务上是不可接受的。项目推荐的做法是使用RAGAS这类评估框架用LLM做裁判自动生成多个维度的评分。但我也要提醒一句LLM裁判自己的评分会有偏好所以定期抽取几十条结果做人工二次校验仍然很有必要。项目里还专门讨论了如何设计评估数据集、如何避免评估偏差这些内容值得反复去读每读一遍你对评估的理解就会更深一层。4. 索引、向量化和检索优化真正决定RAG效果的细节4.1 向量化流程中的Embedding模型选型Embedding模型的选择对检索效果的提升往往比更换大模型更明显。项目里提到了一个很实用的选型思路先看你的语料是中文、英文还是多语言再看你的文本是长文档还是短片段然后去MTEB这类榜单上对比模型在对应任务上的得分。这里有个小技巧很多人会忽略Embedding模型会和你的任务特征绑定。比如你处理的都是客服对话那就要找对话语料上表现好的模型而不是拿一个通用榜单冠军直接用。我的经验是可以多准备两个备选Embedding模型构建一个小规模评测集用召回率对比来决定用哪一个这比凭空猜效果靠谱得多。4.2 分块策略怎么切比切多大更重要项目在索引优化章节里详细对比了固定大小分块、递归字符分块、语义分块和父子分块这几种常见策略。我自己试下来最大的感受是固定大小分块在文本结构复杂的场景下经常会把一句话从中间腰斩导致检索出来的是残缺含义的片段。递归字符分块会先尝试按段落、句子边界去切效果更自然。而父子分块算是进阶中的进阶它让你既能按照更小的子块做精准检索又能把父块的完整上下文送回模型这非常契合项目里“检索用小块、生成用大块”的思路。4.3 稠密向量搜索与混合检索的取舍RAG中dense vector search的意义是用语义相似度来匹配近义词不同表述。但它在数字、代码、产品型号这类精确匹配场景下经常失效——比如你搜“iPhone 15”向量搜索可能把“iPhone 14”也捞出来因为语义太接近了。这正是项目里强调混合检索的原因用BM25稀疏检索解决关键词精确匹配用稠密向量检索解决语义扩展再用Rerank把两边召回的候选取重排序选出真正有价值的。4.4 Rerank检索性价比最高的一环如果说Embedding决定了检索的上限Rerank就是在不改变Embedding的前提下把实际命中效果尽量推向这个上限。它的思路是对检索回来的Top 20到Top 50个候选逐条打分比Embedding计算的向量相似度精细得多。实际落地时可以先用轻量向量检索召回Top 30再让Rerank模型取Top 5进上下文。这样既控制延迟又避免污染上下文。你完全可以把这个环节当成RAG效果调优的杠杆点来优先尝试。5. Graph RAG与Ontology RAG项目里的高阶主题拆解5.1 Graph RAG用图搜索解决多跳关联问题Graph RAG的目标不是取代向量检索而是补上它在实体关系推理上的短板。在处理知识密集型任务时文档里的关键信息往往是分散的A公司的财报里提到了收购B公司B公司的产品线又分散在另一份研报里。传统向量检索很难把这种跨文档关系串起来而图结构可以把“公司A收购公司B”这种关系显式建模出来。搜索时你不只找“有多少个片段提到公司B”而是直接沿图结构去遍历和公司A相关联的实体做多跳推理。项目里的实现思路是先从文档中用LLM抽取实体和关系构建知识图谱再结合向量检索设计混合检索路径。这一块的落地成本不低但对于研报分析、法规问答这类强关系型场景收益也极为显著。5.2 Ontology RAG给LLM的“知识骨架约束”Ontology RAG听起来高级本质上是把领域知识里的类和关系约束以本体定义的形式传给LLM或检索器让它生成的查询、抽取的实体都符合这个结构约束。比如在法律场景里你会定义“当事人”“诉讼请求”“判决结果”这些类以及它们之间的关系让检索结果自动落到这些维度上。做这个方案时先把领域内核心实体和关系梳理出来不追求穷尽重点是把高频查询涉及的骨架固定下来再让LLM按这个骨架去抽取和检索比直接让模型自由发挥稳定得多。5.3 项目里的认知RAG等前沿方向值的但不是所有人认知RAG这类方向的定位是探索性的。它尝试模拟人类认知过程中的“系统性分析”阶段让LLM在生成最终答案前先刻意检索并审查可能互相矛盾的证据再综合结论。这个思路非常适合“争议性强”“需要正反两面证据”的问题。但它的响应时间较长、对基础模型能力要求也高并不是所有业务场景都值得上。我的建议是先把基础检索优化、评估体系搭建好再考虑这些进阶方向。如果你连评测集都没有就急于冲Graph RAG和认知RAG大概率会陷入“看起来很高级但无法落地”的困境。6. 我的学习路线建议怎样把RAG_Techniques真正“吃透”6.1 别按目录顺序刷按“场景链路”刷很多人拿到这种资料喜欢从第一页顺序看到最后一页但我的建议是不必这样。你可以先把这个仓库完整浏览一遍了解它有哪些章节然后根据自己的业务场景选一条主链路如果你要做一个客服知识库重点看文档解析、分块策略、评估、混合检索。如果你要做研报分析重点看Graph RAG、Ontology RAG、多跳检索。如果你要做一个通用对话助手重点看查询转换、Agentic RAG和部署优化。这样做的目的是让每一个概念都落在你熟悉的业务上下文里而不是学完就忘。6.2 复现时做三个“刻意练习”第一每个Notebook第一遍按官方原样跑通第二遍把框架换成另一个再跑一遍体会两者的抽象差异。第二改数据把项目里的英文示例换成你自己领域的中文文档通常这一步会暴露出大量问题比如分词差异、Embedding效果骤降、PDF解析质量差。第三改指标把你自己的业务问题套进项目里的评测脚本每次都记录指标变化。坚持这样做两三周后你会发现自己从“会用RAG的人”变成了“会调RAG的人”。6.3 部署与架构扩展项目后半部分涉及的部署主题更偏工程实践包括缓存策略、流式输出、异步索引等。对我个人影响最大的一个建议是缓存可能会被很多RAG教程忽略但对于高频重复查询场景引入语义缓存能大幅降低延迟和成本。这比更换昂贵的大模型或堆机器更符合成本效益思维。6.4 最后补点心理建设RAG学习最难的不是代码而是问题定位。答案不对时你要能判断出是Embedding问题、分块问题、检索器问题、Rerank问题还是生成阶段的问题。判断的依据就是持续积累的评测数据。抱着这个心态去刷RAG_Techniques你会越学越顺否则很容易在只会跑通Demo的层次上原地打转。它值得成为你的案头手册常读常新。