智能的升格:RAG技术演进全景图

126 阅读10分钟

什么是RAG

1. 什么是 RAG?

1.1 RAG 的起源

RAG 最早由 Meta(原 Facebook)在 2020 年 5 月 提出,论文标题为 "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"(arXiv:2005.11401)。该论文首次将信息检索文本生成相结合,开创了一种全新的 AI 范式。

[!NOTE] RAG 论文的第一作者是 Patrick Lewis,该工作后续被 NeurIPS 2020 会议接收。2024 年被誉为"RAG 突破年",仅 arXiv 上就发布了超过 1200 篇相关论文。

1.2 为什么需要 RAG?

局限

大语言模型(如 GPT、Claude、Gemini)虽然功能强大,但存在几个关键问题:

问题描述RAG 如何解决
幻觉(Hallucination)LLM 可能生成看似真实但完全虚构的信息通过检索真实文档作为依据,减少凭空捏造
知识过时模型训练完成后无法获取新知识外部知识库可实时更新
缺乏可解释性无法知道答案来源可追溯到具体的源文档
领域知识不足对私有或专业领域知识了解有限可接入企业私有知识库

1.3 RAG 的核心思想

 RAG 的核心思想

简单来说,RAG 就是:

用户问题 → 检索相关文档 → 将文档作为上下文 → LLM 生成答案

这就像考试时可以"开卷"——不需要死记硬背所有知识,只需在需要时查阅参考资料。

2. RAG 的工作流程

工作流程

一个标准的 RAG 系统包含三个核心阶段:

flowchart LR
    A[用户提问] --> B[检索 Retrieval]
    B --> C[增强 Augmentation]
    C --> D[生成 Generation]
    D --> E[返回答案]
    
    subgraph 知识库
        F[(向量数据库)]
    end
    
    B --> F
    F --> B

2.1 离线准备阶段(Indexing)

在系统运行之前,需要预先处理知识库:

  1. 数据收集:收集 PDF、网页、Word 文档等原始数据
  2. 文档分块(Chunking):将长文档切分为小段落
  3. 向量化(Embedding):使用嵌入模型将文本转换为向量
  4. 存储:将向量存入向量数据库(如 Chroma、Milvus、Weaviate)

2.2 在线服务阶段

  1. 检索(Retrieval):将用户问题转换为向量,在数据库中查找最相似的文档块
  2. 增强(Augmentation):将检索到的文档与用户问题组合成提示词(Prompt)
  3. 生成(Generation):LLM 根据增强后的提示词生成最终答案

3. RAG 技术体系:完整演进图谱

完整演进图谱

RAG 技术形成了一个多维度演进的技术体系,从基础架构到专项优化,每个方向都在解决特定的核心问题。下图展示了完整的技术演进脉络:

flowchart TB
    subgraph 基础架构层
        A[Naive RAG] --> B[Advanced RAG]
        B --> C[Modular RAG]
    end
    
    subgraph 检索增强
        A --> D[GraphRAG]
        D --> E[LightRAG]
    end
    
    subgraph 生成优化
        A --> F[SELF-RAG]
        F --> G[CRAG]
        G --> H[Speculative RAG]
    end
    
    subgraph 智能融合
        C --> I[Agentic RAG]
        I --> J[RAG as Agent Submodule]
    end
    
    subgraph 模态扩展
        A --> K[多模态 RAG]
        K --> L[Long RAG]
    end
    
    subgraph 部署模式
        C --> M[RAG as a Service]
        M --> N[Edge RAG]
    end
    
    style A fill:#e3f2fd
    style B fill:#e3f2fd
    style C fill:#e3f2fd

3.1 基础架构:从简单到模块化

Naive RAG(基础 RAG)

Naive RAG

最简单的 RAG 实现方式,直接将检索结果拼接到 Prompt 中。

# Naive RAG 伪代码
def naive_rag(query, vector_db, llm):
    # 1. 检索
    docs = vector_db.similarity_search(query, top_k=3)
    
    # 2. 增强
    context = "\n".join([doc.content for doc in docs])
    prompt = f"根据以下内容回答问题:\n{context}\n\n问题:{query}"
    
    # 3. 生成
    answer = llm.generate(prompt)
    return answer
特点说明
优势实现简单、响应快、适合 MVP
局限检索精度有限、无法处理复杂查询
适用场景FAQ、简单知识库、内部搜索

Advanced RAG(高级 RAG)

Advanced RAG

在基础 RAG 上增加检索前优化、检索中增强、检索后处理三个环节:

flowchart TB
    subgraph 检索前优化
        A[查询重写] --> B[查询扩展]
        B --> C[HyDE假设文档生成]
    end
    
    subgraph 检索阶段
        D[混合检索] --> E[多路召回]
    end
    
    subgraph 检索后优化
        F[重排序 Reranking] --> G[上下文压缩]
        G --> H[结果过滤]
    end
    
    C --> D
    E --> F

关键技术:

技术描述效果
查询重写用 LLM 重新表述用户问题提高问题清晰度
HyDE先生成假设性答案,用它来检索弥合问题与答案的语义差距
混合检索向量检索 + 关键词检索(BM25)兼顾语义与精确匹配
重排序专门的重排序模型重新排序最相关文档排在前面

Modular RAG(模块化 RAG)

Modular RAG

将系统拆分为独立模块,像"乐高积木"一样灵活组合:

graph TB
    subgraph 核心模块
        R[检索模块]
        G[生成模块]
        RA[推理模块]
    end
    
    subgraph 扩展模块
        M[记忆模块]
        F[融合模块]
        O[路由模块]
        S[搜索模块]
    end
    
    R --> F
    F --> RA
    RA --> G
    M --> R
    O --> R
    S --> R
模块功能示例
路由模块决定查询走哪条路径简单问题直接回答,复杂问题走检索
记忆模块存储对话历史和偏好多轮对话上下文管理
融合模块整合多源检索结果合并向量库、知识图谱、数据库结果

架构对比总结:

维度Naive RAGAdvanced RAGModular RAG
复杂度⭐⭐⭐⭐⭐⭐⭐⭐
检索精度很高
响应延迟中-高
可扩展性
适合阶段MVP/原型生产环境企业级

3.2 检索增强:从平面向量到图结构

从平面向量到图结构

基础 RAG 将文档切分为孤立的块,无法捕捉实体之间的关系。这一方向引入图结构解决多跳推理问题。

技术解决的问题核心思路
GraphRAG无法处理多跳推理构建知识图谱,实体关系建模
LightRAGGraphRAG 成本过高双层检索 + 增量更新

GraphRAG vs LightRAG:

graph TB
    subgraph GraphRAG
        A1[完整知识图谱构建] --> B1[高准确率]
        A1 --> C1[高计算成本]
        A1 --> D1[需全量重建]
    end
    
    subgraph LightRAG
        A2[轻量实体抽取] --> B2[接近准确率]
        A2 --> C2[成本降低99%]
        A2 --> D2[支持增量更新]
    end
维度GraphRAGLightRAG
图谱构建完整构建轻量抽取
更新方式全量重建增量更新
Token 消耗低(约 1/6000)
适用场景知识密集型任务成本敏感型生产环境

3.3 生成优化:从被动拼接到自主决策

从被动拼接到自主决策

传统 RAG 的生成过程是"盲目的"——无论检索结果好坏都直接使用。这一方向引入自我评估和纠错机制

技术解决的问题核心思路
SELF-RAG不知道何时该检索自我反思:评估检索必要性和结果质量
CRAG检索质量差时无补救质量评估 + 网络搜索补充
Speculative RAG生成速度慢小模型草稿 + 大模型验证

机制对比:

flowchart TB
    subgraph "SELF-RAG"
        A1[用户问题] --> B1{需要检索?}
        B1 -->|是| C1[检索]
        B1 -->|否| D1[直接回答]
        C1 --> E1{结果相关?}
        E1 -->|是| F1[生成]
        E1 -->|否| G1[跳过]
    end
    
    subgraph "CRAG"
        A2[检索结果] --> B2{质量评估}
        B2 -->|高| C2[直接使用]
        B2 -->|低| D2[网络搜索补充]
    end
    
    subgraph "Speculative RAG"
        A3[检索结果] --> B3[小模型并行生成草稿]
        B3 --> C3[大模型验证选择最佳]
    end

Speculative RAG 效果:

  • 准确率提升最高 12.97%
  • 响应延迟降低最高 51%

3.4 智能融合:从静态工具到智能体

从静态工具到智能体

这一方向代表 RAG 的范式转变——从被动的检索工具演变为智能体生态的核心组件。

技术解决的问题核心思路
Agentic RAG固定检索流程无法动态决策LLM 作为调度员,自主规划
RAG as SubmoduleRAG 与智能体割裂RAG 内嵌于 Agent,成为记忆基础设施

Agentic RAG 工作模式:

flowchart TB
    A[用户复杂问题] --> B[LLM 规划器]
    B --> C{决策}
    C -->|简单问题| D[直接回答]
    C -->|需要检索| E[选择数据源]
    C -->|需要验证| F[多源交叉验证]
    C -->|需要计算| G[调用工具]
    E --> H[检索执行]
    H --> I{结果充分?}
    I -->|否| J[迭代检索]
    I -->|是| K[生成答案]
    J --> B

3.5 模态扩展:从纯文本到多模态

技术解决的问题核心思路
多模态 RAG(MM-RAG)只能处理文本多模态嵌入 + 跨模态检索
Long RAG长文档信息分散4000+ tokens 大块检索 + 层次化策略

多模态 RAG 能力:

  • 图片检索:根据图片内容查找相关文档
  • 视频问答:从视频库中检索相关片段
  • 音频搜索:根据语音内容检索信息

3.6 部署模式:从自建到服务化

技术解决的问题核心思路
RAG as a Service基础设施运维复杂云端托管,按需付费
Edge RAG隐私/延迟敏感设备端本地运行

部署选项对比:

模式适用场景代表方案
云端托管快速启动、弹性扩展Pinecone、Zilliz Cloud
混合部署平衡隐私与性能敏感数据本地 + 通用知识云端
边缘部署隐私优先、离线可用Ollama + 本地向量库

3.7 技术选型指南

技术选型指南

根据业务需求选择合适的技术组合:

需求场景推荐架构关键技术
快速验证Naive RAG基础向量检索
生产环境Advanced RAG混合检索 + 重排序
复杂推理GraphRAG / LightRAG知识图谱增强
高准确性SELF-RAG + CRAG自我反思 + 纠错
低延迟Speculative RAG推测式生成
智能对话Agentic RAG智能体融合
企业级Modular RAG模块化架构

[!IMPORTANT] 核心趋势:RAG 正在从"独立的检索增强工具"演变为"智能体生态的核心基础设施"。关键词是:

  • 效率优化:LightRAG、Speculative RAG 大幅降低成本和延迟
  • 智能融合:RAG 内嵌于 Agent,实现自主决策
  • 服务化部署:云端/边缘多模式选择

4. 实践指南

4.1 技术栈推荐

技术栈推荐

组件推荐工具说明
向量数据库Milvus、Chroma、WeaviateMilvus 适合大规模,Chroma 适合快速原型
嵌入模型OpenAI text-embedding-3-smallbge-large-zh-v1.5中文推荐 BGE 系列
LLMGPT-4、Claude、Qwen、DeepSeek根据成本和性能需求选择
框架LangChain、LlamaIndex、RAGFlowLangChain 生态最丰富
重排序模型bge-reranker-v2-m3、Cohere Rerank显著提升检索质量

4.2 分块策略建议

场景块大小重叠说明
通用问答256-512 tokens50-100 tokens平衡信息完整性和检索精度
长文档分析1000+ tokens200 tokens保留更多上下文
精确检索128-256 tokens50 tokens提高匹配精度

4.3 常见问题排查

问题可能原因解决方案
检索不到相关内容分块太大或嵌入模型不匹配调整分块策略,更换嵌入模型
答案与问题无关检索到的文档不相关增加重排序、混合检索
LLM 幻觉严重上下文不足或 Prompt 设计问题优化 Prompt,增加相关文档数量
响应速度慢检索或重排序耗时使用缓存、减少 top_k

5. RAG 评估指标

评估 RAG 系统的效果需要从检索质量生成质量两个维度进行考量:

5.1 检索质量指标

指标英文定义计算方式
命中率Hit Rate检索结果中包含正确答案的比例命中次数 / 总查询数
平均倒数排名MRR (Mean Reciprocal Rank)正确结果在排名中位置的倒数平均值Σ(1/rank) / n
Recall@KRecall at K前 K 个结果中包含相关文档的比例相关文档数 / 总相关文档数
NDCGNormalized DCG考虑排名位置的相关性加权得分DCG / IDCG

5.2 生成质量指标

指标英文定义评估方式
忠实度Faithfulness生成答案是否基于检索内容LLM 评估 / 人工标注
答案相关性Answer Relevance答案与问题的相关程度语义相似度 / LLM 评估
上下文精确度Context Precision检索上下文中相关信息的比例相关句子 / 总句子数
上下文召回率Context Recall检索上下文覆盖正确答案的程度覆盖率计算

[!TIP] 推荐评估工具

  • RAGAS - 开源 RAG 评估框架
  • TruLens - LLM 应用评估平台
  • LangSmith - LangChain 官方评估工具

6. RAG 常见挑战

RAG 常见挑战

尽管 RAG 技术发展迅速,在实际应用中仍面临诸多挑战:

6.1 检索层面的挑战

挑战描述应对策略
语义鸿沟用户问题与文档表述不匹配查询重写、HyDE、同义词扩展
多跳推理需要关联多个文档才能回答GraphRAG、迭代检索
长上下文问题相关信息分散在长文档中层次化分块、递归检索
实时性要求知识库更新不及时增量索引、混合搜索引擎

6.2 生成层面的挑战

挑战描述应对策略
上下文窗口限制检索内容超出 LLM 处理能力上下文压缩、摘要提取
信息冲突多个文档信息矛盾来源可信度排序、冲突检测
答案幻觉LLM 仍可能编造信息SELF-RAG、引用验证
响应延迟检索+生成耗时过长缓存策略、流式输出

[!WARNING] 安全提醒:在企业应用中,需特别注意知识库的数据安全隐私保护,避免敏感信息泄露。可采用权限控制、数据脱敏等措施。

7. 未来展望

未来展望

RAG 技术仍在快速发展,以下是几个值得关注的方向:

  1. 端到端优化:将检索器和生成器联合训练
  2. 自适应检索:智能决定何时需要检索
  3. 跨模态理解:图文音视频统一检索
  4. 可信 RAG:增强答案可追溯性和可解释性
  5. 隐私保护 RAG:在保护数据隐私的前提下进行检索

8. 参考资料

核心论文

论文作者/机构年份主要贡献
Retrieval-Augmented Generation for Knowledge-Intensive NLP TasksLewis et al. (Meta AI)2020RAG 奠基论文
Retrieval-Augmented Generation for Large Language Models: A SurveyGao et al.2024最全面的 RAG 综述
Self-RAG: Learning to Retrieve, Generate, and Critique through Self-ReflectionAsai et al.2023自我反思机制
From Local to Global: A Graph RAG Approach to Query-Focused SummarizationMicrosoft Research2024GraphRAG 方法论
Corrective Retrieval Augmented GenerationYan et al.2024CRAG 纠错机制

推荐阅读