GEOZ

RAG 两年三代演进:为什么多数场景 Advanced RAG 才是性价比之选

2026/8/30
RAG 两年三代演进:为什么多数场景 Advanced RAG 才是性价比之选

AIAI Summary (BLUF)

本文系统梳理了RAG技术三代演进:Naive RAG基础架构、Advanced RAG的检索优化(查询重写、HyDE、Reranker、混合检索、上下文压缩),以及Agentic RAG的智能体化(规划、工具调用、自我纠错)。通过对比和代码示例,帮助读者理解各代特点及2026年最新进展。

核心洞察

这篇文章最有意思的点,是它把 RAG 的演进速度说清楚了。两年时间,从"检索+拼接"走到 Agentic RAG,这个迭代节奏在工程史上不太常见。不过说实话,我看到不少团队直接把 Agentic 架构堆上生产,结果延迟翻了三倍,收益却没体现出来。你读完这篇可以冷静评估一下,自己到底在哪个阶段。


核心结论

  1. RAG 技术两年内完成三代演进:Naive RAG(2023)→ Advanced RAG(2024)→ Agentic RAG(2025-2026),核心变化是从“单次静态检索”走向“动态多轮检索 + 工具调用 + 自我纠错”。

  2. Naive RAG 的四个核心缺陷是:固定分块破坏语义连贯性、向量相似≠实际相关、Top-K 冗余消耗上下文窗口、无跨文档推理能力,因此无法处理多跳问题。

  3. Advanced RAG 的关键优化有明确数据收益:HyDE 在技术文档检索场景可将召回率提升 15-25%;Anthropic Contextual Retrieval 在分块前用 LLM 补上下文,可将召回失败率降低约 49%,配合 Reranker 可降低 67%。

  4. Agentic RAG 的核心能力包括:Planner 将复杂问题拆解为子问题、按需调用向量库/BM25/Web/数据库等多工具、通过 Self-RAG 动态决定是否检索并验证答案是否有文档支撑,适用于多跳推理和多文档复杂分析。

  5. 选型需要匹配场景复杂度:简单问答用 Advanced RAG 已足够,复杂多文档分析才需要 Agentic RAG + GraphRAG;但直接堆 Agentic 架构可能导致推理延迟增加约 3 倍,收益不一定体现。建议从 Reranker 开始逐步升级,再引入 HyDE、混合检索,最后再上 Agentic 能力。

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

摘要:RAG 技术在短短两年内经历了三代演进,从最初简单的"检索+生成"拼接,到模块化优化的 Advanced RAG,再到如今具备多跳推理、工具调用和自我纠错能力的 Agentic RAG。这篇文章把三代架构的核心差异、关键技术节点和 2026 年的最新落地实践完整梳理了一遍。

一、为什么 RAG 还需要"升级"

2023 年 ChatGPT 爆火之后,RAG 成了企业落地大模型最主流的工程方案。但随着应用规模越来越大,场景越来越复杂,早期 Naive RAG 的短板一个个暴露出来:

  • 检索召回率低,文档里藏着答案也搜不到
  • 单次检索处理不了多跳问题,比如"A 的上级是 B,B 的职责是什么"
  • LLM 对检索内容照单全收,幻觉率一直压不下来
  • 感知不到上下文意图,换个问法检索结果就完全不同

这些问题倒逼着 RAG 往第二、第三代走。我们挨个看。

二、第一代:Naive RAG(2023 年主流)

架构简介

Naive RAG 是最基础的实现,流程简单到一句话就能说完:

用户 Query → 向量化 → 向量库检索 Top-K → 拼接 Prompt → LLM 生成答案

技术栈(典型配置)

组件 常用方案
文档解析 LangChain DocumentLoader
分块策略 RecursiveCharacterTextSplitter(512 tokens)
Embedding text-embedding-ada-002 / bge-large-zh
向量库 FAISS / Chroma
生成 GPT-3.5-turbo / GPT-4

核心缺陷

1. 固定分块破坏语义连贯性

按字符数硬切文档,会把一段完整的论述拦腰截断。检索到的 chunk 往往缺头少尾,模型靠猜补上下文。

2. 语义检索的"最后一公里"问题

向量相似度高和实际相关是两码事。"苹果手机"和"水果商店"在向量空间里可能离得很近,语义上却八竿子打不着。

3. Context Window 浪费

Top-K 召回一堆冗余文档全塞进 Prompt,Token 烧得快,模型注意力也被稀释,答案质量反而下降。

4. 无推理能力

Naive RAG 只会回答单跳问题。遇到"请对比 A 公司和 B 公司的 Q4 财报差异"这种需要跨文档推理的问题,直接束手无策。

三、第二代:Advanced RAG(2024 年成熟)

Advanced RAG 是对 Naive RAG 的系统性优化,在检索前(Pre-Retrieval)、检索中(Retrieval)和检索后(Post-Retrieval)三个阶段分别引入了增强手段。

架构概览

┌─────────────────────────────────────────────────────────┐
│                   Advanced RAG 流程                      │
│                                                         │
│  Query → [Pre-Retrieval] → 向量库 → [Post-Retrieval]    │
│             ↓                           ↓               │
│        查询重写/扩展                Reranker精排          │
│        假设文档生成                上下文压缩             │
│        子问题分解                  来源验证               │
└─────────────────────────────────────────────────────────┘

关键技术详解

1. 查询重写(Query Rewriting)

用户的问题往往含糊,直接用原话去检索效果很差。用 LLM 把模糊问题转化成更精确的检索语句:

from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import LLMChainFilter

# 查询重写示例
rewrite_prompt = """
你是一个专业的搜索查询优化助手。
将用户问题重写为更利于向量检索的形式,输出 3 个不同角度的查询。

用户问题:{question}

重写后的查询(每行一个):
"""

2. 假设文档嵌入(HyDE)

思路很有意思:先让 LLM 生成一个"假设答案",再用假设答案去检索真实文档。假设答案和真实文档在语义空间里通常比原始 Query 挨得更近。

# HyDE 实现示意
hypothetical_answer = llm.generate(f"请回答:{query}(即使不确定也要尽量回答)")
retrieved_docs = vector_store.similarity_search(hypothetical_answer)

在技术文档检索场景下,这个办法能把召回率平均拉高 15-25%。

3. Reranker 精排

向量检索只是粗筛,精细打分还得靠 Cross-Encoder。这类模型把 Query 和文档拼在一起过一遍深度网络,打分比向量余弦相似度靠谱得多。

from FlagEmbedding import FlagReranker

reranker = FlagReranker('BAAI/bge-reranker-v2-m3', use_fp16=True)
scores = reranker.compute_score([[query, doc] for doc in retrieved_docs])
ranked_docs = sorted(zip(retrieved_docs, scores), key=lambda x: x[1], reverse=True)

4. 混合检索(Hybrid Search)

向量检索擅长抓语义,BM25 擅长抓精确关键词,两者互补。双路召回后,用 Reciprocal Rank Fusion 把排名融合起来:

from langchain.retrievers import BM25Retriever, EnsembleRetriever

bm25_retriever = BM25Retriever.from_documents(docs)
faiss_retriever = vectorstore.as_retriever(search_kwargs={"k": 10})

ensemble_retriever = EnsembleRetriever(
    retrievers=[bm25_retriever, faiss_retriever],
    weights=[0.4, 0.6]  # BM25:向量 = 4:6
)

5. 上下文压缩(Contextual Compression)

用 LLM 从检索结果里再捞一遍,只保留和问题最相关的句子,Prompt 长度能压下来一大截:

from langchain.retrievers.document_compressors import LLMChainExtractor

compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor,
    base_retriever=retriever
)

Advanced RAG 的局限

Advanced RAG 解决了大部分基础问题,但还有两个硬伤:

  1. 线性单轮检索:检索流程再优化,本质上还是只做一次,多步推理的问题依然没解
  2. 无自我纠错能力:模型生成错误答案时,系统完全感知不到,不会回头重新检索

四、第三代:Agentic RAG(2025-2026 年主流)

Agentic RAG 把 RAG 和 AI Agent 技术揉在一起,核心理念就一句话:让 LLM 自己决定何时检索、检索什么、怎么验证结果

架构对比

特性 Naive RAG Advanced RAG Agentic RAG
检索轮次 1 次 1 次 动态多轮
查询规划 部分 完整
工具调用 多工具
自我纠错
多跳推理 有限
适合场景 简单问答 中等复杂度 复杂推理/多文档

核心组件

1. 规划器(Planner)

把复杂问题打散成子任务序列。这一步决定了系统的上限,拆得好不好直接关系到最终答案的质量:

planning_prompt = """
你是一个信息检索规划专家。
给定用户问题,将其分解为需要分别检索的子问题。

用户问题:{question}

分析:
1. 这个问题需要哪些独立的信息片段?
2. 各信息片段之间的依赖关系是什么?
3. 最优检索顺序是什么?

输出 JSON 格式的子问题列表:
"""

2. 工具调用层(Tool Use)

Agentic RAG 的工具箱不再局限于向量库,按需组合:

tools = [
    Tool(name="vector_search", func=vector_retriever.invoke,
         description="语义向量检索,适合找概念相关文档"),
    Tool(name="keyword_search", func=bm25_retriever.invoke,
         description="关键词检索,适合找精确名词/代码/版本号"),
    Tool(name="web_search", func=tavily_search.invoke,
         description="实时网络搜索,获取最新信息"),
    Tool(name="sql_query", func=db_chain.invoke,
         description="结构化数据库查询,获取精确数值"),
    Tool(name="calculator", func=calculator.invoke,
         description="数学计算工具"),
]

3. 自我反思机制(Self-RAG)

Self-RAG 是 2024 年提出的框架,让 LLM 在生成过程中动态判断每一步是否需要检索:

生成 Token → 预测 [Retrieval] Token → 决定是否检索
     ↓                                      ↓
如需检索 → 检索相关文档 → 评分 [Relevant] → 继续生成
     ↓
最终输出 → 预测 [Supported] Token → 验证答案是否有文档支持

几个特殊 Token 是关键:

  • [Retrieval] / [No Retrieval]:这一步要不要检索
  • [Relevant] / [Irrelevant]:检索回来的东西相关不相关
  • [Fully supported] / [Partially supported] / [No support]:答案有多少文档支撑

4. 基于 LangGraph 的 Agentic RAG 实现

LangGraph 把整个流程建模成一个状态图,每个节点执行一个动作,边决定状态流转:

from langgraph.graph import StateGraph, END
from typing import TypedDict, List

class AgentState(TypedDict):
    question: str
    sub_questions: List[str]
    retrieved_docs: List[str]
    intermediate_answers: List[str]
    final_answer: str
    iterations: int

def plan_node(state: AgentState):
    """分解问题为子问题"""
    sub_questions = planner.invoke(state["question"])
    return {"sub_questions": sub_questions}

def retrieve_node(state: AgentState):
    """对每个子问题并行检索"""
    docs = []
    for sq in state["sub_questions"]:
        tool = router.select_tool(sq)  # 动态选择检索工具
        docs.extend(tool.invoke(sq))
    return {"retrieved_docs": docs}

def grade_node(state: AgentState):
    """评估检索质量,决定是否重新检索"""
    quality_score = grader.evaluate(state["question"], state["retrieved_docs"])
    if quality_score < 0.7 and state["iterations"] < 3:
        return {"iterations": state["iterations"] + 1}
    return state

def generate_node(state: AgentState):
    """基于检索结果生成最终答案"""
    answer = generator.invoke({
        "question": state["question"],
        "context": state["retrieved_docs"]
    })
    return {"final_answer": answer}

def hallucination_check(state: AgentState):
    """验证答案是否有文档支撑"""
    supported = hallucination_grader.check(
        state["final_answer"],
        state["retrieved_docs"]
    )
    return "useful" if supported else "re_generate"

# 构建图
workflow = StateGraph(AgentState)
workflow.add_node("plan", plan_node)
workflow.add_node("retrieve", retrieve_node)
workflow.add_node("grade", grade_node)
workflow.add_node("generate", generate_node)

workflow.set_entry_point("plan")
workflow.add_edge("plan", "retrieve")
workflow.add_edge("retrieve", "grade")
workflow.add_conditional_edges("grade", hallucination_check,
    {"useful": END, "re_generate": "retrieve"})

app = workflow.compile()

五、2026 年 Agentic RAG 最新进展

1. 多模态 RAG(Multimodal RAG

文本之外,图表、表格、图片也能进检索链路了。ColPali 这个方向值得关注,它直接把 PDF 页面当图像编码,省掉了文档解析这一步:

# ColPali: 直接对 PDF 页面图像做向量检索,无需解析文本
from colpali_engine.models import ColPali, ColPaliProcessor

# 将 PDF 页面转为图像,直接编码为向量
page_embeddings = model.encode_images(pdf_pages)
query_embedding = model.encode_queries([user_query])

2. GraphRAG 知识图谱增强

微软开源的 GraphRAG 走了另一条路:先构建实体关系图,再拿图结构辅助检索。处理"谁和谁有什么关系"这类问题时,效果比纯向量检索好:

# GraphRAG 构建知识图谱
from graphrag.index import run_pipeline

# 提取实体和关系
entities, relations = extractor.extract(documents)

# 构建社区摘要(Leiden 算法)
communities = community_builder.build(entities, relations)

# 查询时结合图结构检索
results = graphrag_search.local_search(query, context_size=5000)

3. Contextual Retrieval(Claude 方案)

Anthropic 的思路更直接:在分块之前,先用 LLM 给每个 chunk 补一段上下文描述。原来的 chunk 缺上下文,补完之后模型就知道这段内容到底在讲谁:

原始 chunk:
"公司的 Q3 净利润为 1.2 亿元,同比增长 35%。"

加入上下文后的 chunk:
"这段内容来自 XX 公司 2025 年 Q3 财报(2025-10-30 发布)。
公司的 Q3 净利润为 1.2 亿元,同比增长 35%。"

这个做法把召回失败率降低了约 49%,配合 Reranker 能降 67%。

六、如何选择适合你的 RAG 方案

┌─────────────────────────────────────────────────────────┐
│                   RAG 方案选型决策树                     │
│                                                         │
│  问题类型是什么?                                        │
│      │                                                  │
│      ├── 简单问答(单跳)→ Advanced RAG 已足够           │
│      │                                                  │
│      ├── 多文档对比/综合分析 → Agentic RAG + GraphRAG    │
│      │                                                  │
│      ├── 实时信息需求 → Agentic RAG + Web Search Tool   │
│      │                                                  │
│      └── 图表/PDF 解析 → Multimodal RAG + ColPali       │
└─────────────────────────────────────────────────────────┘

预算参考:

方案 开发复杂度 推理延迟 适用规模
Naive RAG PoC / Demo
Advanced RAG ⭐⭐⭐ 中小型生产环境
Agentic RAG ⭐⭐⭐⭐⭐ 高(多轮) 企业级复杂场景

七、总结

RAG 的演进路径很清晰:Naive RAG → Advanced RAG → Agentic RAG。每一代都是盯着上一代的痛点做文章。

2026 年,Agentic RAG 已经是企业落地 AI 问答系统的主流选择。几个核心能力点:

  • 动态多轮检索:根据中间结果决定下一步,不是一条路走到黑
  • 工具多样化:向量库、BM25、Web 搜索、数据库按需组合
  • 自我纠错:幻觉检测加上自动重新生成,不用人盯着
  • 多模态支持:输入不再限于纯文本

如果你的系统还在 Naive 阶段,动手升级可以从 Reranker 开始,再逐步引入 HyDE 和混合检索,最后再考虑用 LangGraph 搭 Agentic 能力。步子迈太大容易扯着。

参考资料


本文约 3800 字,如有技术勘误欢迎评论区指出。

标签:#RAG #大模型 #LLM #Agentic RAG #LangGraph #向量数据库 #AI应用开发

常见问题(FAQ)

RAG技术经历了哪几代演进?

RAG从2023年到2026年历经三代:第一代Naive RAG基础架构,第二代Advanced RAG的检索优化(查询重写、HyDE、Reranker、混合检索、上下文压缩),第三代Agentic RAG的智能体化(规划、工具调用、自我纠错)。

Advanced RAG中的HyDE是什么?

HyDE即假设文档嵌入,先让LLM生成一个假设答案,再拿假设答案去检索真实文档。由于假设答案与真实文档在语义空间上更接近,相比原Query能显著提升召回率,在技术文档场景下平均提升15-25%。

Agentic RAG与Naive RAG的区别是什么?

Agentic RAG相比Naive RAG,具备智能体能力:能进行多跳推理、调用外部工具、并在生成错误时自我纠错。Naive RAG仅做单次检索拼接,无推理和纠错,智能体RAG能处理复杂跨文档问题,但延迟可能翻三倍。

晓婷深圳
本文由 晓婷 审核,最后更新于 2026年8月30日
联系编辑 →
← 返回文章列表
分享到:微博

版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。

文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。

若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。