[控场AI]
教程攻略· 9 分钟阅读· 4,698 字

从传统RAG到Agentic RAG:核心原理与实现详解

从传统RAG到Agentic RAG:核心原理与实现详解

从传统RAG到Agentic RAG:让大模型具备自主决策和多轮迭代的检索能力

文章系统阐述了传统RAG(检索增强生成)的固定流程及其局限性,并介绍了Agentic RAG如何通过将检索、文件读取等能力封装为工具,赋予大模型自主决策、多轮迭代和动态调整的能力。以开源项目ChatBox为例,展示了基于LangGraph框架通过四个核心工具实现Agentic RAG的具体方案,实现了从"检索即回答"到"思考-行动-观察"智能体范式的技术跃迁。

引言:传统RAG的困境

你是否遇到过这样的场景:花了大量时间搭建的RAG系统,模型回答却答非所问;检索到一堆看似相关却毫无用处的内容;用户问"你有哪些文档",系统直接宕机——因为它只会查,不会想;检索不到答案时就"摆烂",而不是尝试换一种问法或翻阅上下文重试。

传统RAG的固定流程已经无法满足复杂场景的需求。本文将从传统RAG的基本原理出发,逐步揭示它如何进化为Agentic RAG,并通过开源项目ChatBox的实现方式,带你理解这一技术跃迁的核心逻辑。

Agentic RAG技术演进

传统RAG的实现原理

离线链路:文档切片→向量化→存储

传统RAG的第一个环节是离线链路,与用户无关,主要完成数据准备工作:

  1. 文档加载:将PDF、Word等文档读入内存
  2. 文本切片:由于文档内容可能有数万字,无法一次性全部输入大模型,需要将文档切分为固定长度的段落(如256字符),段落之间保持一定重叠以保证语义连贯。切片策略的选择直接影响检索质量——切片太大会引入噪声,太小则可能丢失上下文语义,常见的重叠率在10%-20%之间。
  3. 向量化:使用Embedding模型将每个段落转换为固定维度的向量。Embedding模型是将文本转换为高维向量空间中数值表示的神经网络模型,常见的包括OpenAI的text-embedding-ada-002(输出1536维向量)、开源的BGE系列等。这些模型通过大规模语料预训练,使得语义相近的文本在向量空间中距离更近,从而支持基于余弦相似度的语义检索。
  4. 存储:将向量存入向量数据库(如Chroma DB)。向量数据库专门针对高维向量的近似最近邻(ANN)搜索进行了优化,使用HNSW、IVF等索引算法在百万级数据中实现毫秒级检索。

在线链路:检索→拼接→生成

当用户提出问题后,在线链路开始工作:

  1. Query改写:用户的原始问题可能不适合直接检索,需要进行改写优化。例如用户问"怎么退货",可能需要改写为"退货流程 退货政策 退货条件"以提高检索召回率。
  2. 双路检索:同时使用BM25关键词检索和向量相似度检索,各返回一批相关片段。BM25是一种经典的基于词频统计的信息检索算法,通过计算查询词在文档中的词频(TF)和逆文档频率(IDF)来评估相关性。双路检索的设计理念在于互补——向量检索擅长理解同义词和语义关系(如"退货"和"退换商品"),BM25则在精确术语匹配上更可靠(如产品型号、专有名词)。
  3. 合并与重排序:将两路结果合并后进行重排序(Reranking),筛选出最相关的Top-K片段。重排序通常使用交叉编码器(Cross-Encoder)模型,它将查询和文档片段拼接后联合编码,相比向量检索的双塔架构能捕捉更精细的语义交互。
  4. Prompt拼接与生成:将检索到的片段作为Context注入提示词模板,交给大模型生成最终答案

整个过程是单向、固定、一次性的——从用户问题出发,经过检索、拼接、生成,一条直线走到底。

传统RAG的致命缺陷

当第一轮检索无法获得有效信息时,传统RAG无能为力。模型可能想要重新检索、换一种方式检索、或使用某个工具获取更多上下文,但固定流程不允许这些操作发生。例如,当用户问"知识库里有哪些文档"时,传统RAG完全无法回答——因为它的本质是检索部分内容后交给模型回答,而非理解整个知识库的全貌。

Agentic RAG:从流水线到智能闭环

核心思想:工具化+自主决策

Agentic RAG是对整个RAG流程的根本性升级。它将RAG中的各个环节——Query改写、向量检索、关键词搜索、文件读取等——全部封装为可调用的工具(Tools),并允许大模型在生成答案之前进行自主决策、多轮调用和动态调整。

这里的"工具调用"依赖于大模型的Function Calling特性,这是OpenAI在2023年6月首次引入的能力。模型在推理时可以输出结构化的函数调用请求(包含函数名和参数),由外部系统执行后将结果返回模型。并非所有模型都支持此特性,目前支持Function Calling的模型包括GPT-4系列、Claude系列、通义千问广告、GLM-4等,这也是ChatBox需要先判断模型是否支持工具调用的原因。

简言之,Agentic RAG不再是一条直线走到底,而是一个可循环的智能体行为闭环:思考→调用工具→观察结果→再思考→再行动,直到生成最终答案。

三大核心能力

Agentic RAG的实现依赖模型具备以下三类核心能力:

  • 规划能力(Planning):体现在Chain-of-Thought推理过程中,模型能规划执行步骤并反思结果。Chain-of-Thought(思维链)是Wei等人在2022年提出的提示技术,通过引导模型逐步推理而非直接给出答案,显著提升了复杂任务的表现。
  • 工具调用能力:模型能自主决定调用哪些工具,包括多Agent协作
  • 多步迭代能力:在回答最终答案之前,能够进行多步工具调用,这是Agentic概念的核心。与传统的单轮交互不同,模型可以在一次用户请求中执行5-10次甚至更多的工具调用,每次调用的结果都会追加到对话上下文中供模型参考。

运行流程对比

传统RAG:用户查询 → 向量检索 → 检索结果 → 生成答案(一次性完成)

Agentic RAG:

  • 第一轮搜索:使用query search进行语义搜索,发现查询命中率低
  • 观察与改写:模型判断需要改写查询词
  • 第二轮搜索:使用改写后的query重新检索,命中相关chunk
  • 第三轮补充:通过read_file_chunk获取相邻上下文
  • 最终生成:基于充分整理的信息完成回答

ChatBox的Agentic RAG实现解析

架构设计:用时间换智能

开源项目ChatBox的实现逻辑很有代表性。当用户问题进入系统后:

  1. 判断模型是否支持工具调用
    • 若不支持:通过Prompt判断问题是否需要检索。不需要则直接回复;需要则进行语义搜索后生成答案
    • 若支持:将所有工具注册到模型中,让模型自主决策调用哪些工具

这种设计比在Prompt中让模型"忽略无关context"更优,因为它用两个模型做了决策,理论上效果更好。同时这也意味着Agentic RAG会消耗更多的Token和推理时间——这正是"用时间换智能"的含义,以更高的计算成本换取更准确的回答。

四大核心工具

ChatBox设计了四个特色工具:

工具名功能价值
query_search基础语义检索RAG的基本能力
list_files列出知识库文件清单兜底能力,回答"有哪些文档"类问题
read_file_chunk按文档ID精确读取片段不依赖语义检索,可主动读取前后chunk补充上下文
get_file_metadata读取文件元数据获取文件属性信息

其中list_files解决了传统RAG无法回答"知识库有哪些文档"的痛点;read_file_chunk则让模型在发现信息不完整时,能主动读取相邻上下文进行补充,摆脱对语义相似度检索的单一依赖。这种设计类似于人类阅读文档的行为——先通过搜索找到大致位置,然后翻阅前后页获取完整信息。

代码实现核心

ChatBox基于LangGraph框架的create_react_agent实现Agentic RAG,核心参数仅三个:

  1. 大模型实例:负责推理和决策
  2. 工具列表:注册四个核心工具
  3. 系统提示词:引导模型如何使用工具、分步执行
agent = create_react_agent(
    model=llm,
    tools=[query_search, list_files, read_file_chunk, get_file_metadata],
    system_prompt=system_prompt
)
result = agent.invoke({"messages": [user_query]})

LangGraph是LangChain团队开发的图结构编排框架,create_react_agent封装了ReAct(Reasoning + Acting)循环逻辑——这是Yao等人在2022年提出的让大模型交替进行推理和行动的范式。在底层实现中,它构建了一个状态图:模型节点负责推理并决定是否调用工具,工具节点负责执行并返回结果,两者循环直到模型决定输出最终答案。

代码看似简单,却赋予了模型自主决策、动态调整的能力。正如视频作者所说:"国内很多套壳应用,核心逻辑就是这么实现的。"

关键差异总结

维度传统RAGAgentic RAG
流程单向固定,一次性循环迭代,多步执行
模型角色仅在生成阶段使用从判断开始全程参与决策
检索失败处理直接返回"不知道"改写query重试、补充上下文
能力边界只能回答检索到的内容可回答文件列表、精确读取等
核心理念检索+生成规划+调用+反思+迭代
成本低(单次检索+生成)高(多轮推理+多次工具调用)

结语

传统RAG是"检索即回答"的线性思维,而Agentic RAG是"思考-行动-观察"的智能体范式。工具赋予能力,而智能在于选择。真正的Agentic RAG,始于检索,成于决策。

对于大模型应用开发者而言,理解这一演进路径至关重要。核心工作不仅在于如何切分文档、优化Embedding,更在于如何设计合理的工具集,让模型能够在复杂场景下自主规划、灵活应对。值得注意的是,Agentic RAG并非银弹——它带来更高的延迟和成本,在简单问答场景中传统RAG可能仍是更优选择。真正的工程智慧在于根据场景复杂度选择合适的方案。

核心要点

  • 传统RAG是单向固定流程(切片→向量化→检索→生成),无法处理检索失败或信息不完整的情况
  • Agentic RAG将检索、文件读取等能力封装为工具,赋予大模型自主决策和多轮迭代能力
  • ChatBox通过四个核心工具(query_search、list_files、read_file_chunk、get_file_metadata)实现Agentic RAG
  • Agentic RAG从用户输入开始就使用大模型进行决策,而非仅在生成阶段才调用模型
  • 基于LangGraph的create_react_agent可以用极简代码实现Agentic RAG的核心逻辑
分享:

相关推荐