RAG 架构的四代演进

检索增强生成(Retrieval-Augmented Generation, RAG)已经走过了三个年头。从 2023 年最初的概念验证,到 2026 年的今天,RAG 架构经历了四次重大范式转移。本文将系统梳理这条演进路线,并给出 2026 年的最佳实践。

第一代:Naive RAG(2023)

最朴素的 RAG 架构,核心流程是:文档分块 → 向量化 → 相似度检索 → 拼接 Prompt → LLM 生成。

用户提问 → Embedding → 向量检索 Top-K → 拼接上下文 → LLM 生成答案

问题:检索质量差、缺乏上下文理解、无法处理多跳推理。

第二代:Advanced RAG(2024)

引入了 Query 重写、重排序(Rerank)、混合检索等优化:

# Advanced RAG 典型流程
def advanced_rag(query: str, vector_db, keyword_db):
    # 1. Query 重写
    rewritten_query = llm.rewrite_query(query)
    
    # 2. 混合检索:向量 + 关键词
    vector_results = vector_db.search(rewrite_query, top_k=20)
    keyword_results = keyword_db.search(rewrite_query, top_k=20)
    
    # 3. 合并去重
    candidates = merge_and_dedupe(vector_results, keyword_results)
    
    # 4. 重排序
    reranked = reranker.rerank(rewritten_query, candidates, top_k=5)
    
    # 5. 生成
    return llm.generate(query, context=reranked)

提升:检索召回率提升 30-50%,但仍然缺乏全局视角。

第三代:Modular RAG(2025)

模块化设计,引入路由、迭代检索、自我修正等机制:

模块功能技术方案
Query 路由意图识别与分流LLM 分类器 / 规则引擎
检索策略多路并行检索向量 + 关键词 + 图谱
重排序精细化排序Cross-Encoder / LLM Rerank
生成控制幻觉抑制引用标注 / 自我验证
反馈循环迭代优化CRAG / Self-RAG

第四代:GraphRAG + Agent(2026)

2026 年的最前沿架构,将知识图谱、Agent 推理和 RAG 深度融合:

用户提问
Agent 意图理解 & 任务拆解
┌─────────────┬──────────────┬───────────────┐
│ 向量检索     │ 图谱遍历      │ Web 搜索      │
│ (语义相似)   │ (关系推理)    │ (实时信息)    │
└─────────────┴──────────────┴───────────────┘
Agent 信息整合 & 交叉验证
多步推理生成 + 引用溯源

GraphRAG 核心实现

GraphRAG 的核心在于将文档抽取为知识图谱,再通过图遍历增强检索:

from graphrag import GraphRAGPipeline

# 1. 文档处理与图谱构建
pipeline = GraphRAGPipeline(
    llm=model,
    entity_extraction_prompt=ENTITY_PROMPT,
    community_detection=LeidenAlgorithm(),
    embedding_model="bge-m3"
)

# 2. 构建知识图谱
graph_index = pipeline.build_index(
    documents=doc_collection,
    entity_types=["Person", "Organization", "Concept", "Event"],
    relation_types=["works_at", "created", "related_to", "part_of"]
)

# 3. 查询时双路检索
def graphrag_query(question: str):
    # 路径A:传统向量检索
    vector_hits = vector_store.search(question, top_k=10)
    
    # 路径B:图谱社区检索
    community_hits = graph_index.query_communities(question)
    
    # 路径C:实体关系遍历
    entities = entity_linker.extract(question)
    graph_context = graph_index.traverse(entities, max_hops=2)
    
    # Agent 整合
    context = agent.synthesize(
        question=question,
        vector_context=vector_hits,
        graph_context=graph_context,
        community_context=community_hits
    )
    
    return llm.generate(question, context=context)

架构对比:四代 RAG 全景

维度Naive RAGAdvanced RAGModular RAGGraphRAG+Agent
检索方式纯向量混合检索多路模块化向量+图谱+Agent
上下文理解Query 重写意图路由Agent 推理
多跳推理部分 ✅
全局视角✅ 社区摘要
可解释性高(溯源)
延迟<1s1-2s2-5s3-10s
部署复杂度很高
适用场景简单QA企业知识库复杂业务专家级推理

2026 年最佳实践建议

1. 分层架构设计

L1: 快速通道 — Naive RAG 处理简单事实型问题(<1s)
L2: 标准通道 — Modular RAG 处理常规业务问题(2-3s)
L3: 深度通道 — GraphRAG+Agent 处理复杂推理问题(5-10s)

通过 Query Router 动态选择通道,在体验和成本间取得平衡。

2. 缓存策略

# 语义缓存:相似问题命中缓存
semantic_cache = SemanticCache(
    embedding_model="bge-m3",
    similarity_threshold=0.95,
    ttl=3600
)

3. 可观测性

  • 检索质量监控:召回率、精确率、MRR
  • 生成质量监控:幻觉率、引用准确率
  • 系统指标:P50/P99 延迟、缓存命中率

总结

RAG 架构在 2026 年已经从简单的"检索+生成"演化为复杂的推理系统。GraphRAG+Agent 代表了当前最先进的范式,但并不意味着所有场景都需要它。根据业务复杂度选择合适的架构层级,才是工程上的最优解。

关键趋势:Agent 将成为 RAG 系统的"大脑",负责检索策略选择、信息整合和质量把控,而 RAG 则是 Agent 的"记忆系统"。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。