RAG实战指南:从朴素检索到Agentic RAG的进阶路线
2026/9/6 13:35:39 网站建设 项目流程

很多人以为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的层次上原地打转。它值得成为你的案头手册,常读常新。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询