小白/程序员必看:掌握RAG、Graph RAG和Agentic RAG

本文系统对比三种RAG架构:普通RAG基于向量检索实现单跳事实查询;Graph RAG构建知识图谱支持多跳推理与跨文档关系追踪;Agentic RAG引入AI Agent实现动态任务规划、多工具调用与多步执行。三者面向不同问题类型,可独立使用或组合落地,强调按需选型而非线性升级,避免过度工程化。

本文介绍了三种主流的RAG技术:普通RAG、Graph RAG和Agentic RAG,分别对应着从资料库中找答案、分析资料间关系以及自主规划任务和调用工具的能力。普通RAG通过向量相似度检索相关内容,适合FAQ和知识库查询;Graph RAG构建知识图谱,擅长追踪实体关联,支持多跳推理,适用于复杂知识库和关联分析;Agentic RAG引入AI Agent,能动态规划步骤、调用工具,适合多数据源分析和复杂任务处理。文章强调,这三种架构并非逐级升级,可根据实际问题类型选择或组合使用,建议从普通RAG入手,逐步引入更复杂的技术,以避免过度增加系统复杂度。

现在做 AI 应用,RAG 几乎是绕不开的技术。

但很多人不知道,普通 RAG、Graph RAG 和 Agentic RAG 虽然名字相似,解决的问题却不一样。

一句话总结:普通 RAG 擅长找资料,Graph RAG 擅长找关系,Agentic RAG 擅长自主规划任务、调用工具和整合多方信息。

图片

一、普通 RAG:让 AI 从资料库里找答案


RAG,全称 Retrieval-Augmented Generation,也就是「检索增强生成」。

它的工作流程很简单:

  1. 把文档切分成多个文本片段。

  2. 将文本转换成向量,存入向量数据库。

  3. 用户提问时,通过语义相似度找到相关片段。

  4. 把检索结果交给大模型,让 AI 根据资料生成答案。

比如,你问:

「公司的退款政策是什么?」

系统从知识库中检索到退款规则,再交给 AI 总结回答。

这种方式很适合 FAQ、企业知识库、产品文档查询等场景。

但普通 RAG 有一个短板:它擅长找相似内容,却不一定能找到隐藏在多份文档之间的关联。

二、Graph RAG:不仅找资料,还要搞清楚资料之间的关系


普通 RAG 主要依赖向量相似度,而 Graph RAG 会额外构建一层「知识图谱」。

在建立知识库时,大模型会识别文档中的实体,以及实体之间的关系。

例如:

  • 结账服务 → 调用 → 支付 API
  • 支付 API → 部署在 → cluster-3
  • cluster-3 → 计划于周五 → 维护

当用户问:

「周五的维护会不会影响结账服务?」

普通 RAG 可能找到「结账服务调用支付 API」和「cluster-3 周五维护」这两条信息,却遗漏中间的关键关系:支付 API 实际部署在 cluster-3。

因为中间这条信息没有直接提到「结账服务」或「周五维护」,单纯依赖向量相似度时,它可能无法进入检索结果。

Graph RAG 则可以沿着知识图谱中的关系进行查询:

图片

结账服务 → 支付 API → cluster-3 → 维护

这样,系统就能把分散在不同文档里的信息串起来,推导出更完整的答案。

Graph RAG 的核心价值:不只检索相关内容,还能追踪实体之间的关联,支持多跳推理。

适合的场景包括:

  • 企业复杂知识库
  • 金融风险关联分析
  • 供应链依赖关系查询
  • 复杂故障排查
  • 需要跨文档追踪关系的问题

当然,知识图谱需要额外构建和维护,开发成本也通常更高。

三、Agentic RAG:让 AI 自己决定怎么查、查什么


Agentic RAG 的思路又不一样。

传统 RAG 通常按照预先设定好的流程检索资料;Agentic RAG 则引入能够自主规划的 AI Agent。

用户提出问题后,Agent 可以根据任务动态决定:

  • 需要调用哪些工具?
  • 应该查询哪个数据源?
  • 是否需要搜索多个系统?
  • 当前信息够不够?
  • 是否需要再次检索、执行代码或调用 API?
  • 最后如何整合结果并给出答案?

举个例子:

用户问:

「分析一下最近的服务故障,判断是否与周五的集群维护有关,并给出处理建议。」

Agent 可能会依次执行:

  1. 查询内部故障记录。

  2. 检索相关技术文档。

  3. 查询集群维护计划。

  4. 调用监控 API,检查服务状态。

  5. 对照服务依赖关系,分析可能的影响路径。

  6. 如果证据不足,再查询其他数据源。

  7. 汇总证据,输出故障分析和处理建议。

这里的重点不只是「检索」,而是 Agent 根据任务动态规划步骤,并在需要时调用不同工具。

Agentic RAG 的核心价值:让 AI 不再局限于一次固定检索,而是能够围绕目标反复检索、调用工具和整合信息。

适合的场景包括:

  • 多数据源研究分析
  • 自动化故障诊断
  • 企业业务流程助手
  • 需要调用 API 的智能客服
  • 复杂任务型 AI Agent

不过,Agentic RAG 也会带来更多工程挑战,例如调用成本、执行延迟、工具权限控制和结果可靠性。

四、三种架构怎么选?


对比维度普通 RAGGraph RAGAgentic RAG
核心能力检索相关资料追踪实体关系动态规划与工具调用
检索方式向量相似度等知识图谱+检索根据任务动态选择
典型问题某项规则是什么?A 与 B 有什么关联?如何调查并解决一个复杂问题?
多跳推理能力有限,取决于实现擅长关系路径查询可通过多轮检索和工具调用完成
数据源通常以知识库为主依赖图谱及相关数据可整合多种数据源和工具
实现成本相对较低需要构建和维护图谱需要 Agent、工具及执行流程
主要挑战检索遗漏、上下文质量图谱构建、更新与准确性成本、延迟、权限与执行可靠性

五、一个关键认知:它们不是必须逐级升级的三个阶段


很多人会以为:

普通 RAG → Graph RAG → Agentic RAG,是从简单到高级的升级路线。

其实不一定。

它们针对的是不同的问题类型:

  • 单跳事实查询: 优先考虑普通 RAG。
  • 跨文档、多实体关联查询: 考虑 Graph RAG。
  • 需要动态选择数据源、调用工具和多步执行的任务: 考虑 Agentic RAG。

更重要的是,这三种架构并不互斥。

实际项目完全可以组合使用:

Agentic RAG + Graph RAG + 向量检索

例如,Agent 先判断问题类型,再调用向量数据库查找相关文档,利用知识图谱追踪实体关系,最后整合证据并生成答案。

这往往比单纯追求某一种架构更实用。

六、落地建议:不要为了技术名词而增加复杂度


如果你准备开发自己的 RAG 系统,可以按下面的思路选择:

  1. 先做普通 RAG。 验证文档解析、切片、检索、重排和答案生成是否有效。

  2. 遇到关系查询瓶颈,再引入 Graph RAG。 重点解决跨文档关联和多跳查询。

  3. 遇到复杂任务,再引入 Agentic RAG。 让 Agent 按需调用搜索、数据库、API 或其他工具。

  4. 最后考虑组合架构。 根据问题类型选择检索方式,而不是所有问题都走同一条流程。

记住一个原则:

RAG 解决「去哪找资料」,Graph RAG 解决「资料之间有什么关系」,Agentic RAG 解决「为了完成任务,下一步应该做什么」。

架构没有绝对的优劣,只有是否适合你的业务场景。

大模型的知识又多又杂,到底怎么学?

做这行久了,被问最多的问题就一个:大模型的知识又多又杂,我到底先学啥?翻了一堆资料,看啥都像重点,结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍,零基础、应届生、转行的都适用。跟着走,至少方向不乱、不瞎忙,学完拿得出手。

第一阶段(10天):初阶应用

这一阶段就一个目标:把大模型真正"玩明白",不是只会聊天那种,而是能调教它、能用代码把大模型和业务接起来。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …
第二阶段(30天):高阶应用

这阶段正式进实战,目标很实在:做出两个能拿出手的东西——一个私有知识库,一个 agent 对话机器人。

  • 为什么要做 RAG

  • 搭建一个简单的 ChatPDF

  • 检索的基础概念

  • 什么是向量表示(Embeddings)

  • 向量数据库与向量检索

  • 基于向量检索的 RAG

  • 搭建 RAG 系统的扩展知识

  • 混合检索与 RAG-Fusion 简介

  • 向量模型本地部署

  • …

走完这 30 天,Python 或 JavaScript 背景的基本能独立做一套 RAG 应用,简历上也敢写"大模型应用开发"了。

第三阶段(约20天):动手微调

学到这,你已经开始 “造” 模型了 —— 通过微调,搞出垂直领域的专用小模型。

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗?

想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!在这里插入图片描述

第四阶段(20天):商业闭环,部署落地

技术学完,落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

想要入坑大模型的朋友,给大家准备了一份2026 年最新 AI 大模型全套学习资料:

1、大模型系统化学习路线

请添加图片描述

2、大模型学习视频教程

在这里插入图片描述

3、大模型学习书籍&电子文档

在这里插入图片描述

4、AI大模型最新行业报告

img

5、大模型项目实战&配套源码

img

6、2026大模型大厂面试真题

img

7、为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

在这里插入图片描述

在这里插入图片描述

8、适合谁学?
  • 传统后端 / Java / 前端开发,想转型 AI 应用
  • 大学生、应届生,想拿更好的 offer
  • 产品经理、运营,想武装职业竞争力
  • 技术负责人,想给团队落地提效

学习是反人性的,但回报是真金白银。技术会更新,赛道会切换,但只要你先动手,机会就永远站在你这边。

9、这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
在这里插入图片描述
在这里插入图片描述

想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!在这里插入图片描述

好了,就写到这。路线是死的,人是活的,卡住了随时来问我。觉得有用就点个收藏,别让它进收藏夹吃灰——动起来比啥都强。

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值