跳转到内容

RAG

1. RAG 概述

1.1 什么是 RAG

RAG (Retrieval-Augmented Generation) 是一种设计模式,在 LLM 生成答案之前,实时从外部知识库检索相关文档/片段,并将其注入提示词中,让模型基于检索到的上下文生成回答。

名称本身描述了四步工作流:

步骤

说明

Retrieve

从知识库中检索相关文档/片段

Augment

将检索到的上下文注入提示词

Generate

LLM 基于增强后的上下文生成答案

1.2 为什么需要 RAG

RAG 解决 LLM 三大核心缺陷:

问题

传统 LLM

RAG 方案

幻觉 (Hallucination)

编造不存在的事实

答案基于检索到的真实文档

知识过时 (Staleness)

训练数据有截止日期

实时检索最新知识

领域知识缺乏

通用模型不懂专业领域

注入企业/行业专属文档

1.3 发展简史

阶段

时间

里程碑

起源

2020

Lewis et al. 提出 RAG 概念(Facebook AI Research)

基础 RAG

2020–2022

BM25 检索 + 预训练 LLM,单次检索

高级 RAG

2023–2024

密集向量检索、重排序、混合搜索、多跳推理

图增强 RAG

2024

GraphRAG (Microsoft)、LightRAG (港大) 引入知识图谱

智能体 RAG

2024–2025

规划模块、工具使用、自校正循环、多智能体协作


2. 核心架构

2.1 经典 RAG 双流水线

┌──────────────────────────────────────────────────────────┐
│                   A. 索引流水线(离线)                      │
│                                                          │
│  文档 → 分块(Chunking) → 嵌入(Embedding) → 向量库(Vector Store) │
└──────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────┐
│                   B. 生成流水线(在线)                      │
│                                                          │
│  用户查询 → 检索(Retrieval) → 重排序(Re-rank) → LLM 生成     │
└──────────────────────────────────────────────────────────┘

2.2 全栈架构图

┌─────────────────────────────────────────────────────────────┐
│                    编排层 (Orchestration)                     │
│        LangChain / LlamaIndex / Semantic Kernel / LangGraph   │
├─────────────────────────────────────────────────────────────┤
│  检索 (Retrieval)    │  向量存储       │  生成 (Generation)     │
│  ───────────────     │  ────────       │  ──────────────       │
│  • 密集向量 (Dense)  │  • ChromaDB     │  • GPT-4o             │
│  • 稀疏检索 BM25     │  • FAISS        │  • Claude 3.5/4       │
│  • 混合检索 (Hybrid) │  • Qdrant       │  • Llama 3            │
│  • MMR 多样性        │  • Pinecone     │  • Qwen3              │
│  • 多跳 (Multi-hop)  │  • Azure AI     │  • DeepSeek           │
├─────────────────────────────────────────────────────────────┤
│  评估                │  监控             │  安全护栏            │
│  RAGAS / LangSmith   │  追踪/可观测      │  输入/输出过滤        │
└─────────────────────────────────────────────────────────────┘

3. 关键组件详解

3.1 分块策略 (Chunking)

分块是将长文档拆分为可检索片段的过程,是 RAG 系统性能的关键决定因素。

策略

原理

适用场景

固定大小分块

按 token/字符数切分(如 512 tokens)

简单文档

递归分块

层级切分:段落 → 句子 → 词

结构化文档

语义分块

基于嵌入相似度聚合相关句子(阈值 ~0.7 cosine)

保留跨块语义

文档感知分块

利用 PDF/DOCX 结构(标题、表格)

复杂格式文档

块大小选择(2025 最新研究):

块大小

最佳场景

64–128 tokens

事实型问答、实体级匹配

512–1024 tokens

上下文理解、长文档检索

2025 年 6 月研究 "Chunk Twice, Embed Once" 评估了 25 种分块配置,发现递归 token 分块(R100-0)在 48 个嵌入模型上一致表现最优。

企业级实践:递归分块 + TF-IDF 加权嵌入可达 82.5% 精确率(vs 语义分块纯内容 73.3%)。

3.2 嵌入模型 (Embedding)

模型

特点

适用场景

text-embedding-3-small

OpenAI,性价比高

通用生产

text-embedding-3-large

OpenAI,精度最高

高质量需求

all-mpnet-base-v2

Sentence Transformers,通用强

本地部署

bge-large-en

BAAI,中文友好

多语言场景

Nomic Embed v2

MoE 架构,同参数量级最优

单语 & 多语

E5 系列 (Intfloat)

检索优化

高精度检索

关键发现:检索优化嵌入模型(Nomic、E5)显著优于领域专用模型(如 SciBERT);但 BM25 在精确术语匹配上仍有竞争力

3.3 向量存储 (Vector Store)

存储

类型

场景

ChromaDB

开源,本地/服务端

原型开发,中小规模

FAISS (Meta)

内存,GPU 加速

高性能本地检索

Qdrant

向量数据库 + 过滤

生产环境,混合搜索

Pinecone

托管云向量数据库

Serverless,弹性扩展

Azure AI Search

托管,多模态

微软企业生态

Weaviate

开源,Hybrid + Generative

需要内置生成能力

Milvus

分布式向量数据库

十亿级向量检索

3.4 检索策略

策略

原理

密集检索 (Dense)

嵌入向量余弦相似度 — 语义匹配

稀疏检索 (Sparse/BM25)

关键词倒排索引 — 精确术语匹配

混合检索 (Hybrid)

密集 + 稀疏组合,可调权重(如 0.6 密集 / 0.4 稀疏)

MMR (最大边际相关性)

平衡相关性与多样性,减少冗余

多跳检索 (Multi-hop)

链式多次检索,用于复杂推理

3.5 重排序 (Re-Ranking)

检索后使用 Cross-Encoder 或 LLM 对结果重新排序,大幅提升精确率:

初检结果(Top K) → Cross-Encoder 重排序 → Top N(送入 LLM)

推荐模型:ms-marco-MiniLM-L-12-v2(MS MARCO 微调)

重排序是 ROI 最高的单项优化之一,在企业场景中持续提升 Precision@5 和 MRR。


4. RAG 演进路线

4.1 三代演进

代际

时间

特征

Naive RAG

2020–2022

单次检索 + 直接生成,44% 事实准确率

Advanced RAG

2023–2024

语义检索、重排序、混合搜索、多跳推理

Agentic RAG

2024–2025

规划、工具调用、自校正、多智能体协同

4.2 演进全景图

Naive RAG (44% 准确率)
  ↓ 添加检索评估器
CRAG — 插件式纠正,检测检索质量并 fallback 到网络搜索
  ↓ 添加复杂度路由
Adaptive RAG — 按查询复杂度路由到不同策略
  ↓ 嵌入自反思能力
Self-RAG — 模型自主决定是否检索、检索结果是否相关、答案是否有据
  ↓ 编排层抽象
Agentic RAG — 完整 Agent 循环,动态编排检索/生成/工具调用
  ↓ 引入知识图谱
GraphRAG / LightRAG / KAG — 图结构增强全局推理

4.3 综合基准

2024 年综合 RAG 基准测试(arXiv:2406.04744)发现:

  • SOTA RAG 系统 仅能正确回答 63% 的事实问题
  • Naive RAG44%
  • 从 Naive → Advanced 提升最大,Advanced → Agentic 边际提升递减但解决长尾困难案例

5. GraphRAG:图增强 RAG

5.1 概述

GraphRAG 是微软研究院 2024 年提出的 RAG 方法(论文: "From Local to Global: A Graph RAG Approach to Query-Focused Summarization", arXiv:2404.16130),通过构建知识图谱 + 社区检测 + 层次化摘要,解决传统 RAG 无法回答的全局性问题(如"数据集的主要主题是什么?")。

5.2 核心问题

传统 RAG 局限

原因

点连接问题

无法在多个文档间连接分散的提及

全局推理缺口

无法在语料库范围内综合主题

上下文碎片化

从孤立块重组答案时丢失关键上下文

5.3 六阶段索引流水线

源文档
  ↓ [分块]
文本块 (300–1200 tokens)
  ↓ [LLM 实体/关系提取 + Gleaning 多轮抽取]
实体 & 关系(结构化)
  ↓ [去重 + 生成丰富描述]
实体摘要(非简单三元组,含丰富上下文)
  ↓ [构建同质无向加权图]
知识图谱 (NetworkX/iGraph)
  ↓ [Leiden 社区检测算法]
层次化社区 (Level 0 → 1 → 2 ...)
  ↓ [LLM 社区摘要生成]
社区报告(每社区每层级一份,含标题、摘要、全文、引用)
  ↓ [持久化]
.parquet / .json / .gml

Gleaning 机制:LLM 首轮提取后,系统问"是否全部提取?",若回答"是",则提示"上一轮遗漏了大量实体",触发多轮提取——系统性地恢复遗漏信息。

5.4 两种搜索模式

模式

原理

适用场景

Local Search

向量搜索定位相关实体 → 图遍历收集关联文本块、关系、社区报告 → 组合注入提示词

具体实体查询、关系导航

Global Search

使用所有预计算社区摘要 → Map-Reduce 跨社区综合 → 全局答案

"主要主题?"、数据集级分析

5.5 动态社区选择(GraphRAG 2.0)

原始 GraphRAG 静态处理所有社区报告(含不相关的)。2.0 引入动态社区选择:

  1. 从知识图谱层次结构的根节点开始
  2. LLM 评估每个社区报告与查询的相关性
  3. 不相关 → 剪枝(连同其子社区)
  4. 相关 → 向下遍历子节点重复评估
  5. 仅将相关报告传递给 Map-Reduce

结果:77% Token 成本降低,可使用更小更便宜的 LLM 且不损失质量。

5.6 Leiden 算法

GraphRAG 选择 Leiden 算法 (2019) 做社区检测,而非更早的 Louvain:

  • 保证社区内连接良好
  • 在大图上高效生成层次化分区
  • 图是同质无向加权图:节点 = 实体,边 = 关系,权重 = 检测到的关系数量

5.7 性能数据

指标

数据

全局问题准确率

3–4 倍提升(常从 0% → 90%+)

Token 效率

减少 26–97%

LinkedIn 客服

问题解决速度提升 28.6%

data.world

准确率提升 54.2 个百分点

动态选择后

全局查询成本仅为传统层次摘要的 2–3%

5.8 总结:GraphRAG 核心创新

  1. 索引时摘要:查询时 LLM 读压缩的专题摘要而非全量原文
  2. Leiden 层次社区:多粒度主题结构
  3. 丰富实体描述:超越简单三元组,捕捉丰富语义
  4. Gleaning:多轮抽取确保实体覆盖率
  5. 索引与查询分离:重计算一次完成,查询轻量实时

6. LightRAG:高效图 RAG

6.1 概述

LightRAG 是香港大学 2024 年 10 月开源的系统(论文: arXiv:2410.05779),通过知识图谱 + 双层检索 + 增量更新机制,在效率和准确性上显著超越 GraphRAG。

6.2 核心创新

创新

说明

图增强文本索引

用知识图谱替代扁平向量索引,保留实体间复杂语义关系

双层检索

低层:定位具体实体及邻居 → 精准细节;高层:匹配宏观主题 → 全局视野

增量更新算法

新数据直接追加到现有图,无需重建整个图谱

实体/关系去重

自动合并冗余节点和关系,压缩图谱规模

6.3 性能对比:LightRAG vs GraphRAG

指标

GraphRAG

LightRAG

优势

检索 Token

~610,000

< 100

~99% 节省

增量更新成本

~13,990,000 tokens(重建社区报告)

仅处理新增

~80% 降低

API 调用

数百次

仅 1 次

Legal 数据集准确率

基线

54.30%

多样性

基线

67–76%

6.4 三种检索模式

模式

说明

Naive / Local

向量相似度直接匹配,限于局部上下文

Global

跨整个知识库的全局检索

Hybrid / DRIFT

结合 Local + Global 优势

6.5 LightRAG 的三重压缩哲学

  1. 知识图谱 → 压缩原始文本
  2. 双层检索 → 压缩搜索空间
  3. 增量更新 → 压缩维护成本

6.6 图增强 RAG 方案对比

维度

GraphRAG (微软)

LightRAG (港大)

KAG (阿里蚂蚁)

MedGraphRAG (牛津)

检索方式

社区遍历 + Map-Reduce

双层检索 (Low/High)

逻辑符号引导混合推理

三层子图 + U 型检索

更新成本

需重建社区结构

增量更新

实时更新

Token 消耗

高 (610×1000+)

极低 (<100)

适用场景

静态知识库

动态数据、快速响应

专业逻辑推理

医学、证据溯源

核心特色

Leiden 社区 + 层次摘要

去重 + 双层检索 + 增量

Schema 约束 + 逻辑推理

证据可追溯

6.7 选型建议

  • 动态数据、资源受限 → LightRAG
  • 静态知识库、需要层次化理解 → GraphRAG
  • 专业逻辑推理 → KAG
  • 医学/生物 → MedGraphRAG

7. Self-RAG / CRAG / Adaptive RAG

7.1 对比总览

技术

核心思想

检索触发

自校正

复杂度

Self-RAG

LLM 自主决定检索并评估输出质量

按需(模型决定)

✅ 全流程

(需微调)

CRAG

评估检索文档质量,低质时 fallback 网络

始终先检索再纠正

✅ 仅检索后

(评估器模块)

Adaptive RAG

按复杂度路由查询

分类器决定

❌ 无

(训练分类器)

Agentic RAG

Agent 迭代决定策略,支持循环

Agent 驱动

✅ 迭代循环

中–高

7.2 Self-RAG(自反思 RAG)

论文: ICLR 2024 Oral

  • LLM 微调引入反思 Token<Retrieve>(是否检索)、<IsREL>(段落是否相关)、<IsSUP>(段落是否支持)、<IsUSE>(输出是否有用)
  • 对简单问题避免无谓检索("写一篇论文"→ 直接 LLM)
  • ~2% 的正确预测需要外部段落(基线 15–20%)
  • 局限:需要微调 LLM

7.3 CRAG(纠正型 RAG)

论文: Yan et al., 2024

  • 轻量级检索评估器将文档拆解为"知识条"评分:
    • 正确 → 正常 RAG
    • 错误 → 丢弃文档,fallback 网络搜索
    • 模糊 → 同时使用本地 + 网络
  • 插件式,无需微调
  • 风险:网络搜索 fallback 引入 prompt injection 风险
  • 适合:高风险领域(法律、医疗、合规)

7.4 Adaptive RAG

论文: NAACL 2024

  • 小型查询分类器预测问题复杂度:
    • 简单 → 不检索(直接 LLM)
    • 中等 → 单步检索 + 生成
    • 复杂 → 多步迭代检索
  • 平衡成本与准确率

7.5 关系与堆叠

复杂度谱系:

Naive RAG → CRAG → Adaptive RAG → Self-RAG → Agentic RAG
(44%)       (插件    (按复杂度    (模型      (完整 Agent
             纠正)    路由)        自反思)     编排)

Agentic RAG 不是直接竞争者,而是可以融合前三者所有能力的编排范式。一个生产级 LangGraph Agent 可能同时使用 Adaptive RAG 路由 + CRAG 网络 fallback + Self-RAG 幻觉审查。


8. 评估体系(RAGAS)

8.1 RAGAS 概述

RAGAS (Retrieval Augmented Generation Assessment) 是 EACL 2024 发表的参考无关评估框架,无需人工标注即可评估 RAG 管道。

8.2 核心指标

指标

评估维度

评估关系

方法

Faithfulness (忠实度)

生成

回答 ↔ 检索文档

LLM 将回答拆解为声明,逐一检查是否被上下文支持

Context Relevance (上下文相关性)

检索

检索文档 ↔ 查询

LLM 生成合成问题 + 余弦相似度

Answer Relevance (回答相关性)

生成

回答 ↔ 查询

LLM 生成合成问题 + 余弦相似度

Answer Correctness

生成

回答 ↔ 标准答案

LLM as Judge

Answer Similarity

生成

与参考答案语义相似度

Cross-encoder 嵌入

8.3 评估工具生态

工具

特点

RAGAS

参考无关,LLM-as-Judge,最广泛使用

ARES (NAACL 2024)

微调轻量 LM 评判器 + 预测驱动推理

LangSmith

LangChain 生态,端到端追踪 & 评估

TruLens

TruEra RAG Triad(忠实度/相关性/基础性)

DeepEval

开源,单元测试风格


9. 生产最佳实践

9.1 优化优先级

  1. 从简单开始:合理分块(~512 tokens,10–15% 重叠)+ 混合搜索 → 最大收益(微软官方建议)
  2. 始终重排序:Cross-Encoder 重排序是 ROI 最高的单项优化
  3. 按数据选块大小:事实型 QA 用小块,上下文理解用大块
  4. 优先检索优化嵌入:Nomic、E5、all-mpnet-base-v2
  5. 元数据增强:NER 提取实体标签 + LLM 生成摘要 → 一致提升 Precision 和 Hit Rate
  6. 语义缓存:对重复查询缓存结果

9.2 性能优化

技术

效果

向量压缩(Product Quantization)

768D → 64D,存储减少 92%

HNSW 图索引

百万级文档 <50ms 检索

上下文压缩

2048 → 512 tokens,减少提示词长度

混合检索权重调优

密集/稀疏比例优化

查询改写

消歧、拼写纠正、缩写展开

9.3 安全与可信

  • 引用可追溯:每项生成内容链接到源段落
  • 护栏 (Guardrails):输入/输出过滤、PII 脱敏
  • 拒绝回答:低置信度时说"我不知道"
  • 红队测试:检索和生成的对抗性测试

9.4 部署模式

模式

技术栈

本地开发

Docker Compose: Qdrant + TGI + App

生产

Kubernetes: 检索/重排/生成 独立微服务

Serverless

Pinecone + OpenAI/Llama API

微软生态

Azure AI Search + Azure OpenAI


10. 框架与技术栈对比

10.1 编排框架

框架

特点

适用场景

LangChain

最成熟,生态最大,文档丰富

通用 RAG,快速原型

LlamaIndex

专注数据索引,查询引擎强大

复杂数据结构 RAG

LangGraph

LangChain 的 Agent 图编排

Agentic RAG,复杂工作流

Semantic Kernel (微软)

.NET/Python,企业即用

微软生态集成

Dify

低代码 RAG 平台

非技术用户

RAGFlow

开源,深度文档理解

复杂文档格式

10.2 图 RAG 框架

框架

特点

Microsoft GraphRAG

官方实现,功能完整,Token 消耗高

LightRAG (HKU)

轻量高效,增量更新,成本极低

nano-GraphRAG

~800 行代码,极简实现,适合学习

Fast-GraphRAG

PageRank 图探索,Agent 驱动,大规模

LazyGraphRAG (微软 2024.11)

索引成本仅原版 0.1%,即将开源


11. 未来趋势

11.1 当前研究热点

  1. 多模态 RAG:文本 + 图像 + 表格 + 视频的统一检索与生成
  2. RAG + Agent 深度融合:工具调用、长程规划、自我进化
  3. 端到端可微 RAG:检索器与生成器联合训练
  4. 个性化 RAG:结合用户画像和历史交互
  5. 隐私保护 RAG:联邦学习、差分隐私、本地部署

11.2 未解决问题

  • 复杂推理能力仍有上限(SOTA 仅 63% 事实正确率)
  • 检索质量评估尚无统一标准
  • 大规模知识图谱的实时更新与维护
  • 低资源语言(非英语)的支持
  • 企业级场景的可解释性与合规性

11.3 推荐学习路径

1. 理解基础 RAG 架构 → 动手搭建 Naive RAG
2. 学习分块/Embedding/检索/重排序优化 → 升级到 Advanced RAG
3. 学习 GraphRAG 论文 + LightRAG 论文 → 图增强 RAG
4. 学习 Self-RAG / CRAG / Adaptive RAG → 理解各种纠正方案
5. 学习 LangGraph / Agentic RAG → 搭建完整 Agent 系统
6. 深入 RAGAS 评估体系 → 学会量化评估

参考资源