13. Agentic RAG 是什么?与传统 RAG 有什么区别?

整理 Agentic RAG 是什么?与传统 RAG 有什么区别? 的核心概念、工程要点与面试回答。

简单回答

Agentic RAG 是把 Agent 能力引入 RAG 系统,让系统具备自主决策、多步推理和工具调用的能力,而不是像传统 RAG 那样走一个固定的"检索→生成"流水线。传统 RAG 是被动式的一问一答,Agentic RAG 能主动判断是否需要检索、检索什么、检索几次、是否需要调用其他工具,实现更复杂的信息获取和推理。

详细解释

传统 RAG 的局限

传统 RAG 的流程是固定的:query 进来 → 检索 → Rerank → 拼 Prompt → 生成。这个流水线有几个明显的限制。

每个 query 只检索一次。如果第一次检索的结果不够好,没有纠正机会。用户的问题可能需要分步检索、逐步深入,但传统 RAG 不具备这种"回头看"的能力。

检索策略是固定的。不管 query 是什么类型,都走同样的检索流程。但实际上有些问题根本不需要检索(纯闲聊或模型自己就能答好的知识),有些问题需要检索多个不同的知识库,有些问题需要先做计算再去检索。

不具备推理和规划能力。传统 RAG 不会"思考"应该怎么回答这个问题,不会分解复杂问题,不会判断检索结果是否足够。

Agentic RAG 怎么做

Agentic RAG 的核心变化是引入了一个 Agent 层,由 LLM 充当"决策者",在整个 RAG 流程中做自主规划和行动。

具体来说,一个 Agentic RAG 系统的 Agent 可以做以下事情:

判断是否需要检索。如果用户的问题是"你好"或者是常识性问题,Agent 可以直接回答,跳过检索环节。这避免了不必要的检索开销和上下文污染。

选择检索来源。如果系统接入了多个知识库(产品文档、FAQ、工单系统、API 文档),Agent 可以根据 query 类型选择从哪个知识库检索,甚至同时检索多个库然后合并。

多步检索和推理。对于复杂问题,Agent 可以做多轮检索。第一轮检索拿到初步信息后,分析信息是否充分,如果不充分就生成新的检索 query 做第二轮。这就是前面讲的多跳检索,但在 Agentic RAG 中它是由 Agent 自主决定的,而不是预设好的流程。

调用外部工具。除了检索知识库外,Agent 还可以调用计算器、数据库查询、API 接口等工具。比如用户问"上个月的销售额同比增长了多少",Agent 可以先查数据库拿到销售额数据,然后计算同比增长率。

自我反思和纠错。Agent 在生成回答后可以做一轮自检——"这个回答有没有回答了问题?有没有依据不足的部分?"如果自检不通过,可以重新检索和生成。

和传统 RAG 的核心区别

传统 RAG 是一个确定性的流水线,每个 query 走完全相同的路径。Agentic RAG 是一个自适应的决策系统,不同的 query 可能走完全不同的路径——有的直接回答,有的检索一次,有的检索三次并调用两个工具。

传统 RAG 的"智能"集中在最后的生成环节(LLM 生成答案),前面的检索流程都是固定逻辑。Agentic RAG 把"智能"前移到了整个流程的决策层面——怎么检索、检索什么、检索几次,都由 LLM 决定。

工程挑战

Agentic RAG 的灵活性带来了工程上的复杂性。Agent 的决策是不确定的——同一个 query 可能走不同路径,导致延迟不可控(有时一轮就出结果,有时三轮)。Agent 可能做出错误决策(不该检索的时候去检索了,该用知识库 A 的时候去了知识库 B)。调试也更困难——传统 RAG 排查问题只要看检索结果和生成结果,Agentic RAG 还要看 Agent 每一步的决策逻辑。

所以 Agentic RAG 需要更完善的日志和 tracing 系统,记录 Agent 每一步的 thought 和 action。也需要设置 guardrails——比如最大检索轮数限制、超时控制、对 Agent 调用工具的权限控制。

典型实现

LangGraph、LlamaIndex 的 Agent 模块都可以用来构建 Agentic RAG。核心组件包括:一个 LLM 做决策(planning),一组 tools(检索工具、数据库查询工具等),一个 tool 调用的循环(ReAct loop)。Agent 在每一步决定调用哪个 tool、传什么参数,拿到结果后决定是否继续还是输出最终答案。

面试时可以这样答

Agentic RAG 是把 Agent 的决策能力引入 RAG 系统。传统 RAG 是一个固定流水线——query 进来,检索一次,拼 Prompt,生成答案。Agentic RAG 则由一个 Agent 来做自主决策:要不要检索、检索哪个知识库、检索几次、要不要调用其他工具。

核心区别在于灵活性。传统 RAG 每个 query 走一样的路径,Agentic RAG 可以根据问题的复杂度自适应地选择处理策略。简单问题直接回答,复杂问题多轮检索逐步深入。这对跨知识库推理、需要多步信息聚合的场景特别有价值。

但灵活性带来了不确定性。Agent 的决策不可控,延迟不可预测,调试也更困难。工程上需要完善的 tracing 和 guardrails,比如最大轮数限制、超时控制。实际落地中,不是所有场景都需要 Agentic RAG,很多时候把传统 RAG 做好、加几个明确的条件分支就够了,不要过度设计。

常见追问

  1. Agentic RAG 的延迟怎么控制?用户能接受等多久?
  2. Agent 做了错误的检索决策怎么办?有没有 fallback 机制?
  3. Agentic RAG 和 Multi-Agent RAG 有什么区别?