RAG 进阶:从 Naive RAG 到 GraphRAG 与 Agentic RAG

【大模型12步学习路线 · 第4步 · ①原理篇】RAG 全景图:从 Naive RAG 到 GraphRAG,Veri-Copilot 的灵魂组件原理拆解 本文系统介绍了RAG(检索增强生成)技术的演进历程与核心组件。文章首先阐述了RAG在Veri-Copilot系统中的关键作用,指出其解决了GPT-4无法获取私有知识、微调频率不足和上下文长度限制等问题。随后详细分析了RAG的三代演进:从基础的Naive RAG,到加入前后处理的Advanced RAG,再到当前主流的模块化Modular RAG。文章重点剖析了RAG的三大核心组件:索引构建(包括五种Chunking策略)、Embedding模型选型建议(推荐BGE-M3等中文友好模型)以及检索技术(推荐混合 阅读详情

为什么基础 RAG 会遇到瓶颈

基础 RAG 的流程很短:把问题转成向量,取回 Top-K 片段,再让大模型回答。它易于实现,也足以覆盖大量知识问答任务。

但复杂问题会暴露它的局限。例如“过去一年哪些供应风险反复影响多个项目”需要跨文档汇总;“对比两个方案的依赖与成本”可能要查多个数据源;一个含糊问题还可能需要多轮检索才能定位真正意图。

围绕这些问题,RAG 逐渐演化出 Advanced RAG、Modular RAG、GraphRAG 和 Agentic RAG。它们不是严格递进的产品版本,而是解决不同困难的架构思路。
在这里插入图片描述

Naive RAG:先建立可用基线

Naive RAG 通常包含一次向量检索和一次生成:

query_vector = embed(question)
chunks = vector_db.search(query_vector, top_k=5)
answer = llm.generate(prompt(question, chunks))

它的问题包括:查询表达与文档语言不一致;仅靠向量漏掉关键词;Top-K 中存在重复或噪声;长问题的多个子意图没有分别检索。

不过,Naive RAG 仍应作为基线。若基础链路还没有评估集和可观测性,直接叠加复杂模块只会让错误更难定位。

Advanced RAG:在检索前后提高质量

Advanced RAG 通常从三个位置改进。

检索前

系统可以改写查询、拆分子问题、扩展同义词,或先判断应该查询哪个知识库。

原问题:新版本升级后为什么变慢,怎样回退?

子问题 1:新版本已知性能问题有哪些?
子问题 2:当前环境满足哪些回退条件?
子问题 3:标准回退步骤是什么?

检索中

把向量检索与 BM25 等关键词方法结合,并加入元数据过滤。多路结果可用 Reciprocal Rank Fusion 等方式合并。

检索后

对候选片段重排、去重和压缩,再按来源可信度与时间排序。这样送给大模型的不是“最像的几段话”,而是一组更能回答问题的证据。

Modular RAG:把链路拆成可替换组件

当系统同时面对产品文档、工单数据库、网页搜索和实时 API 时,单一检索器不再合适。Modular RAG 将查询理解、路由、检索器、重排器、记忆和生成器拆成独立模块。

route = router.choose(question)

if route == "product_docs":
    evidence = hybrid_retriever.search(question)
elif route == "order_status":
    evidence = order_api.get(question)
elif route == "cross_source":
    evidence = merge(
        hybrid_retriever.search(question),
        order_api.get(question),
    )

模块化的价值不在于节点多,而在于职责清楚、能够独立评估和替换。代价是链路编排、错误处理和监控更复杂。

GraphRAG:当关系比单个片段更重要

向量检索擅长找与问题相似的局部片段,却不天然擅长回答跨文档的整体问题。GraphRAG 会从文档中提取实体、关系和声明,形成图结构,再对社区或子图生成摘要。

[项目 A] --依赖--> [供应商 X]
    |                  |
  使用              交付延迟
    v                  v
[组件 M] <------影响-- [风险事件 R]

面对“供应商 X 影响了哪些项目”时,图上的关系遍历比单纯相似度更自然;面对“所有项目面临的主要风险主题是什么”时,可以利用社区摘要进行全局归纳。

Microsoft 的 GraphRAG 实现会在索引阶段抽取实体、关系和声明,进行社区检测并生成分层摘要;查询侧提供 Local、Global、DRIFT 等模式。当前架构与模式可查看 GraphRAG 官方文档。

一个最小 GraphRAG 试验

官方 CLI 的基本流程是初始化工作区、建立索引,再选择查询方法:

python -m pip install graphrag
graphrag init --root ./ragtest
graphrag index --root ./ragtest
graphrag query --root ./ragtest --method local "实体 A 与事件 B 有什么关系?"

命令与配置可能随版本调整,实际使用前应对照官方快速入门。构建图谱通常会产生多次模型调用,先用小样本估算成本,并人工检查实体合并和关系抽取质量。

GraphRAG 并非通用升级包。若问题主要是“某项制度怎么规定”,普通混合检索通常更直接;若数据中实体关系密集,问题经常跨文档汇总,它才更可能体现价值。

Agentic RAG:让智能体决定下一步

Agentic RAG 把检索看成一种可调用工具。智能体先分析问题,再决定是否检索、查哪个来源、要不要改写问题,以及证据是否足够。

while not done and steps < max_steps:
    plan = agent.decide(question, evidence)

    if plan.action == "search_docs":
        evidence += doc_search(plan.query)
    elif plan.action == "query_database":
        evidence += sql_tool(plan.query)
    elif plan.action == "answer":
        done = True

return agent.compose_answer(question, evidence)

它适合检索路径不固定的研究、排障和多源分析任务。智能体发现结果不足后,可以换关键词、扩大时间范围或调用另一个工具。

与此同时,循环次数会增加成本和延迟;模型可能选错工具或反复检索;同一问题的执行路径也未必完全一致。因此必须设置最大步数、工具权限、超时、预算和停止条件。

单智能体、多智能体与分层协作

一个智能体可以独立完成规划、检索和回答,结构最简单。任务扩大后,也可以按角色拆分:检索智能体负责找证据,分析智能体负责比较,审查智能体检查引用。

协调者
  ├── 文档检索智能体
  ├── 数据查询智能体
  └── 证据审查智能体

多智能体并不会自动提升质量。它会增加消息传递、状态同步和错误归因成本。只有当任务可以按信息源或专业职责清晰拆分,并且每个角色都有独立工具或评估标准时,这种结构才值得使用。

如何选择合适架构

可以按问题复杂度逐级判断:

一次检索能稳定命中?
  是 → 保留 Naive RAG
  否 → 加入查询改写、混合检索和重排

是否存在多个异构数据源?
  是 → 使用 Modular RAG 做路由

是否经常需要跨实体、跨文档归纳?
  是 → 评估 GraphRAG

检索路径是否要根据中间结果动态变化?
  是 → 评估 Agentic RAG

每增加一层能力,都应给出可量化收益:召回率是否提高,复杂问题正确率是否改善,延迟与调用成本增加多少。若无法回答这些问题,复杂架构很可能只是在掩盖基础数据质量问题。

小结

RAG 的进阶方向,本质上是在检索链路中加入更多判断:Advanced RAG 优化检索前后,Modular RAG 路由不同组件,GraphRAG 显式建模实体关系,Agentic RAG 则根据中间结果动态规划。

架构越强,运行和评估成本也越高。先用基础 RAG 建立可靠基线,再只为已经出现的具体问题增加模块,通常比一步搭出最复杂的系统更稳妥。

从零到一:基于Esp32与LVGL的ST7789屏幕驱动全流程实战 本文详细介绍了基于Esp32与LVGL的ST7789屏幕驱动全流程实战,包括环境准备、驱动文件改造、硬件接口配置、LVGL集成与优化等关键步骤。通过VSCode+ESP-IDF开发环境,读者可以快速掌握SPI模式下的屏幕驱动开发,解决常见问题如颜色错乱、画面撕裂等,并实现LVGL的高效集成与性能优化。 阅读详情

相关推荐

星载SAR系统参数设计过程自动化方法研究

 本文提出了一种 SAR系统参数自动化设计的 方法。首先,针对部分参数仍需手工选取的现状 建立了最优化求解模型,并给出了 PRF 和波位位 置的优化选取结果,使参数设计流程更加高效便 捷。然后,针对 SAR 系统参数设计过程中部分技 术指标的评测结果不满足用户需求时无法自动调 节的现状,采用 PID 控制器对方位向天线尺寸、信 号带宽、PRF 等参数进行自动调节,使得方位分辨 率、距离分辨率、方位模糊比等技术指标向用户需 求值逐步靠近。通过仿真实验验证了该方法的可 行性,实现了SAR系统参数设计过程的自动化

qq_43416206的博客 1519

最优化大模型效果之 RAG(一):Naive RAG

案例获取了 OpenAI 研究员 Lilian Weng 博客中的一篇文章,并建立了文章的向量数据库,用户可以通过询问大模型来获取文章内容的详细信息。

2401_84204413的博客 1727

从零开始学习信号完整性(SIPI)--2

上一节我们已经谈过,信号完整性研究的是如何使驱动器输出的信号传输到接收器件并被正确的接收。 信号完整性的三要素包含了:信号、驱动接收芯片、传输通道。 这其中信号是主体,我们要做的主要工作就是设计好信号的传输路径为信号的正确传输扫清障碍。要做信号完整性分析与设计首先要了解信号的特性,以及信号质量的判别标准。 对一个信号进行描述通常需要如下几个指标: 信号特性的描述 摆幅:信号从低电平到高电平之间的电压差,对于单端信号通常由信号的供电电压决......

qq_29476769的博客 2万+

Naive RAG 、Advanced RAG 和 Modular RAG 简介

RAG(Retrieval-Augmented Generation)系统是一种结合了检索(Retrieval)和生成(Generation)的机制,用于提高大型语言模型(LLMs)在特定任务上的表现。随着技术的发展,RAG系统经历了几个阶段的演变,包括Naive RAG、Advanced RAG和Modular RAG。

weixin_41870426的博客 5990

SAP 配额修改 + 修改记录写入实现

采购配额修改并写入修改记录 cdhdr 和 cdpos

GAVIN 1095

【农业生产系统模型】基于R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

APSIM模型有Classic和Next Generation两个系列模型,能模拟几十种农作物、牧草和树木的土壤-植物-大气过程,被广泛应用于精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、环境影响、农业可持续性、农业生态等诸多与农业生产和科研有关的领域。R语言是一门应用场景广泛、简单易学的程序语言,APSIM模型开发了许多R语言辅助包,在APSIM模型的气候、土壤、管理措施等数据准备,自动化模拟,参数优化和结果分析上都发挥着重要的作用。案例一:APSIM模型输入参数和土壤文件的制备。

2303_79243743的博客 1046

RAG原理、综述与应用全解析【万字长文】

1.1 定义检索增强生成 (Retrieval-Augmented Generation, RAG) 是指在利用大语言模型回答问题之前,先从外部知识库检索相关信息。早在2020年就已经有人提及RAG的概念(paper:Retrieval-augmented generation for knowledge-intensive nlp tasks),首版发布在arxiv于2020年5月,当年还是seq2seq的时代,但实验就已经发现,通过检索,能快速从海量知识中找到和原本问题相关的知识,借助知识带来的信息能提

狮子座明仔知识集散场 1万+

SAP-ABAP:SAP数据库视图(Database View)详解-创建

数据库视图是SAP中实现多表关联查询的基础工具,适合简单的跨表查询和权限控制场景。但其功能有限,对于复杂逻辑或高性能需求,建议结合CDS视图或ABAP程序开发。通过合理设计,数据库视图可显著提升开发效率和系统可维护性。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结果。是一种基于物理数据库表的虚拟表,通过关联多个表(使用。

baidu_35680696的博客 1368

什么是Naive RAG,具体包括Infer Pipeline、 Dataset Loader、Retriever Loader、LLM Loader、 Instruction Loader

Naive RAG是一个基础的架构,利用上述组件将信息检索和生成结合起来,提供一个能够回答复杂问题的系统。虽然它的流程比较简单,但对于许多任务来说已经足够有效。这种方法的主要优势在于其直接性和易于实现,而高级 RAG 变体则在其基础上进一步优化和扩展。

yxx122345的博客 1231

基于STM32L4XX 、HAL库的TMC2226-SA-T步进电机驱动器驱动程序应用设计

集成的功率MOSFET可处理高达2A RMS的电机电流,并具备保护与诊断功能,确保运行稳健可靠。作为业界最先进的STEP/DIR步进电机驱动系列,该芯片通过升级设计实现无噪音、高精度运行,为用户提供高性价比且极具竞争力的解决方案。// 用于PDN_UART单线通信。// HAL_UART_Transmit - 注意PDN_UART是单线,收发共线。.huart = &huart1, // PDN_UART连接的USART。均方根步进/方向控制接口,提供8、16、32或64微步针设置,

PP_Cottage的博客 620

uniapp H5刷新页面后返回按钮失效问题完美解决方案

这个问题其实很隐蔽,尤其是uniapp H5 场景下刷新导致栈清理,很多开发者一开始都懵掉了。uniapp 内部对「页面栈只有一个」时的返回逻辑是reLaunch;所以只要在这个分支里替换为自己的逻辑(比如),就能顺利实现预期。目前我在项目里已经跑通了,暂时没发现问题。不得不说,知道源码里这个逻辑后,真的是醍醐灌顶,只能膜拜框架大佬了 🤯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 522

从 Naive 到 Agentic:RAG 技术选型全指南(附企业级落地方案)

当任务为“总结《平凡的世界》中孙少安的一生”时,Naive RAG会检索到分散在小说不同章节的段落(如创业办砖厂、砖厂倒闭、重新崛起等),由于缺乏对事件关联性的梳理,模型输出的内容往往是零散事件的堆砌,无法形成连贯的人生脉络。保证100%免费。

python12345_的博客 907

Qt/C++编写自定义控件42-开关按钮

一、前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ、360卫士、金山毒霸等,都有很多开关控制一些操作,在Qt widgets应用项目上,在项目中应用些类似的开关按钮,估计也会为项目增添不少新鲜感。 总结了大部分的开关按钮控件,基本上有两大类,第一类是纯代码绘制,这种对代码的掌控度要求比较高,但是灵活性比较好...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 3327

RAG 进阶地图:Self-RAG、CRAG、GraphRAG、Agentic RAG 到底有何不同?

回到最初的问题:Self-RAG、CRAG、GraphRAG、Agentic RAG 到底有什么区别?一句话概括——它们不是竞争关系,而是分别补上了朴素 RAG 的一块短板:Self-RAG 管"要不要检索",CRAG 管"检索不好怎么兜底",GraphRAG 管"局部检索搞不定的全局理解",Agentic RAG 管"复杂问题的一次检索不够用"。理解了每个范式背后的痛点,就不会再被这些名词绕晕了。

一个coder的博客 4705

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包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")

从 Naive RAG 到 Agentic RAG:一文读懂 RAG 范式的三代演进

"范式"这个词听起来很学术,其实它就是指从"用户提问"到"生成答案"这条链路上,各个环节的组织方式和工作逻辑。最朴素的 RAG 范式是这样的:用户提问 → 向量检索 → 拼接 prompt → LLM 生成答案这套流程一两天就能跑起来,大多数教程演示的都是这个形态。但一旦进入真实业务场景,问题就接踵而来,而不同的 RAG 范式,本质上就是在回答同一个问题:在"检索"和"生成"之间,系统应该怎么协调、怎么决策、怎么处理各种异常情况。回到最初的问题:RAG 为什么一直在演进?

一个coder的博客 4288

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

RAG进阶之路Advanced RAG, Graph RAG 以及Agentic RAG

大型语言模型(LLM)彻底改变了人工智能领域。从撰写文章到总结研究,它们以前所未有的方式模仿人类语言。但在这智能表象之下,潜藏着一个顽固缺陷:LLM的能力受限于训练数据。它们不知道昨天发生的事,有时甚至会凭空捏造信息。

m0_59163425的博客 1304

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【收藏学习】RAG技术从入门到精通:Naive到Agentic的演进之路

本文详解RAG技术从Naive到Agentic的演进历程,涵盖基础范式、精细化优化、模块化架构、知识图谱整合及智能决策能力。文章探讨多模态、实时化和可信AI等未来趋势,展示RAG如何从"知识搬运工"进化为"智能决策者",为构建下一代智能应用提供技术基础。

datian1234的博客 606

高级 RAG 范式:Self-RAG、CRAG、GraphRAG、Agentic RAG 到底解决什么问题?

很多人第一次做 RAG,流程都差不多:文档切块、向量化、存进向量库,用户提问后召回 Top-K,再把上下文塞给大模型。这个 Demo 很快能跑起来,但到了生产环境,问题马上出现。用户问法可能很口语,向量检索不一定召得准;知识库可能没有覆盖这个问题;复杂问题可能要查多次才能拼出完整答案;有些问题甚至根本不需要检索。朴素 RAG 最大的问题不是“技术不够多”,而是“流程太死”:不管什么问题,都走同一条流水线。

闵浮龙的博客 506

RAG检索增强生成进化之路:从Naive RAG到Agentic RAG

RAG的进化之路远未结束。从Naive RAG到Agentic RAG,每一代都在解决前一代暴露的问题,同时也在创造新的可能性。对于开发者来说,重要的不是追逐最新的RAG范式,而是理解每种范式的适用场景和局限性,选择最适合自己业务需求的方案。RAG没有死,它正在变得更好。

yonggeit的博客 210

四种 RAG 适用的场景:从 Naive RAG 到 Agentic RAG 如何选型

RAG 检索策略并不是使用的技术越多越厉害。在 Agent 时代,更重要的是找准用户画像,并依据用户画像制定存储与检索的重点。

xx_nm98的博客 56

2026 年 RAG 前沿技术全景:从向量检索到 Agentic RAG、GraphRAG 与多模态知识智能体

RAG(Retrieval-Augmented Generation,检索增强生成)最初被理解为“先从向量数据库中找几段文本,再交给大模型回答”。这种方式可以快速构建知识库问答,但在复杂企业场景中,很快会遇到检索不准、多跳问题无法回答、表格图片信息丢失、过期知识污染、答案缺少证据以及权限串库等问题。截至 2026 年,RAG 已经从一条固定的“检索—生成”流水线,演进为一个能够自主规划、选择数据源、循环检索、校验证据并决定是否回答的知识智能体系统。

H.J.J的博客 638

RAG 2026 全面升级:从 Naive RAG 到 Agentic RAG

用户 Query → 向量化 → 向量库检索 Top-K → 拼接 Prompt → LLM 生成答案,每一代都是对上一代痛点的针对性解法。动态多轮检索:根据中间结果决定是否继续检索工具多样化:向量库、BM25、Web 搜索、数据库按需组合自我纠错:幻觉检测 + 自动重新生成多模态支持:不再受限于纯文本文档如果你的 RAG 系统还停留在 Naive 阶段,是时候升级了——从 Reranker 开始,逐步引入 HyDE 和混合检索,再考虑引入 LangGraph 构建 Agentic 能力。

codefan※的博客 2243

收藏 | RAG 从 Naive 到 Agentic,9 种架构一次讲清,小白也能轻松入门

本文详细介绍了 RAG(检索增强生成)的九种主流架构,从最基础的 Naive RAG 开始,逐步深入到 Advanced RAG、Modular RAG、Self-RAG、Corrective RAG、Adaptive RAG、GraphRAG、Agentic RAG 和 Multi-modal RAG。文章不仅解释了每种架构的功能和解决的问题,还提供了实际应用场景的建议。对于初学者,建议从 Naive RAG 开始,逐步优化到 Advanced RAG,并根据具体需求选择合适的架构。

weixin_59191169的博客 368

RAG 深度实践系列(三):RAG 技术演变与核心架构的深度剖析

RAG技术经历了从基础检索到智能决策的演进过程:Naive RAG确立基本范式但存在语义破坏和单一检索局限;Advanced RAG通过查询优化、混合检索和重排序等精细化手段提升性能;Modular RAG实现模块化架构,GraphRAG引入知识图谱增强逻辑推理;最终Agentic RAG结合智能体技术,具备自主决策、任务规划和自我反思能力。这一演进体现了RAG系统从被动知识搬运到主动智能决策的转变,为解决复杂场景下的信息检索和推理问题提供了更强大的解决方案。

白洞,白色的明天在等着我们 8422

RAG 范式演进全解析:从 Naive 到 Agentic RAG 的工程路线图

2020 年 Meta AI Research 团队发表论文正式提出 RAG(检索增强生成)概念,此后这条技术路线经历了剧烈的范式演进。今天的 RAG 已经不再是"检索 + 生成"的简单两段式,而是一个包含查询理解、路由、规划、多轮迭代的复杂系统工程。理解这条演进路线,对架构设计和技术选型都有直接的指导意义——你能清楚地知道自己的系统处在哪个阶段、下一步该往哪个方向走。。早期的 RAG 是"查一下、答一下"的固定管线;

yonggeit的博客 148
上一篇: RAG 文本分块:七种 Chunking 策略与选型方法
下一篇: RAG 应用链路:查询检索、提示词增强、生成与 Dify 实践
jinyishu_
博客等级 码龄1年 53粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值