跳到主要内容

RAG Systems: 完整指南

"RAG 架起了静态 LLM 知识与动态、领域特定信息之间的桥梁。"

检索增强生成(Retrieval-Augmented Generation,RAG)通过从外部知识库中检索相关上下文来增强 LLM 的能力,使 AI 能够访问实时的、准确的企业私有数据。


为什么需要 RAG?

LLM 局限RAG 解决方案
知识截止日期提供最新信息
幻觉问题基于事实生成回答
无法访问私有数据访问内部文档
微调成本高昂无需模型训练

RAG 架构概览


核心概念概览

1. 数据处理流水线

  • 文档加载:多格式支持(PDF、HTML、Markdown、DOCX)
  • 智能分块:基于语义的结构化拆分
  • 元数据提取:自动提取与 LLM 增强的元数据
  • 批量向量化:优化 API 调用成本

2. 向量索引

  • Embedding 模型:OpenAI、BGE、Cohere 模型选择
  • 索引算法:HNSW 图索引、IVF、PQ 压缩
  • 存储优化:缓存策略、批量操作
  • 性能调优:搜索速度与召回率的权衡

3. 检索策略

  • 向量搜索:语义相似度匹配
  • 混合检索:关键词搜索与向量搜索结合
  • 查询变换:Multi-Query、Decomposition、HyDE
  • 智能路由:基于查询类型的动态策略选择
  • 重排序:Cross-Encoder 精度提升

4. 生成增强

  • Prompt Engineering:上下文注入策略
  • 参数调优:Temperature、Top-P、Top-K
  • 生成模式:Refine、Tree Summarize、Multi-hop
  • 引用生成:答案溯源与可信度

5. 评估框架

  • RAG 三元组:Faithfulness、Answer Relevance、Context Precision
  • 检索指标:Recall、Precision、MRR、NDCG
  • 生成指标:BLEU、ROUGE、BERTScore
  • 评估方法:Golden Dataset、LLM-as-a-Judge

Spring AI 快速开始

@Service
public class RAGService {

private final ChatClient chatClient;
private final VectorStore vectorStore;

public String query(String userQuestion) {
return chatClient.prompt()
.user(userQuestion)
.advisors(new QuestionAnswerAdvisor(vectorStore))
.call()
.content();
}
}

技术栈

向量数据库

数据库类型使用场景
PgVectorPostgreSQL 扩展中等规模,已有 PostgreSQL 基础设施
Milvus分布式大规模生产环境
Pinecone托管服务快速原型开发
Chroma本地开发和测试

Embedding 模型

模型维度质量成本
OpenAI text-embedding-3-small1536优秀$0.02/1M tokens
OpenAI text-embedding-3-large3072优秀$0.13/1M tokens
BGE-M31024很好免费(自托管)
Cohere embed-v31024优秀$0.10/1M tokens

学习路径(完整 9 章教程)

第一阶段:基础建设

1. RAG 基础 - 从这里开始

  • RAG 核心定义与直觉
  • 向量空间数学基础
  • RAG 分类(Naive/Advanced/Modular/GraphRAG)
  • Spring AI 架构深入解析
  • 完整实现指南

2. 数据处理流水线

  • 多格式文档加载(PDF/HTML/MD/DOCX/API)
  • 数据清洗与质量评估
  • 智能分块策略(Semantic/Recursive/Parent-Child)
  • 自动元数据提取与 LLM 增强
  • Spring AI Reader 实战实现

3. 向量索引与存储

  • Embedding 模型选择与对比
  • 批量生成优化与缓存
  • HNSW 索引原理与调优
  • 向量存储架构设计
  • 生产环境优化策略

第二阶段:检索与生成

4. 检索策略

  • 相似度搜索基础
  • 查询变换(Multi-Query/HyDE/Decomposition)
  • 智能路由与查询分类
  • 混合检索(BM25 + Vector)
  • 重排序优化(Cross-Encoder/Cohere Rerank)

5. 生成策略

  • Prompt Engineering 最佳实践
  • 上下文组装与优化
  • 生成参数控制(Temperature/Top-P)
  • 高级模式(Refine/Tree Summarize)
  • Agentic RAG 入门

6. 评估策略

  • RAG 三元组评估框架
  • 检索指标(Recall/Precision/MRR)
  • 生成指标(Faithfulness/Relevance)
  • 评估方法(Golden Dataset/LLM-as-a-Judge)
  • 可观测性工具(Arize/TruLens)

第三阶段:高级技术

7. 高级 RAG 技术

  • 模块化 RAG 架构
  • 知识图谱集成(GraphRAG)
  • 自适应检索系统(Self-RAG/CRAG)
  • 微调融合(RAFT/Domain Adaptation)
  • 性能优化(Caching/Quantization)

第四阶段:生产实践

8. 生产工程

  • 服务架构设计(Streaming/Concurrency)
  • 性能优化(Latency/Throughput)
  • 安全护栏(Content filtering/Safety)
  • 可观测性(Tracing/Metrics/Logging)
  • 持续改进循环

9. 最佳实践

  • 完整工作流(16 步 × 4 阶段)
  • 工具选择决策树
  • 设计模式与反模式
  • 测试策略
  • 常见陷阱与解决方案

生产注意事项

关键生产注意事项
  1. 分块大小很重要 - 太小会丢失上下文,太大会降低精度
  2. 优先使用元数据过滤 - 在可能的情况下,先使用元数据过滤器再进行向量搜索
  3. 监控检索质量 - 跟踪检索到的文本块的相关性
  4. 缓存 Embedding - 避免对相同查询重复计算
  5. 处理边界情况 - 无相关文档时的回退策略
  6. 流式响应 - 大上下文场景下的用户体验
  7. 安全护栏 - 提示注入和敏感信息过滤
  8. 成本控制 - Token 用量和 API 调用优化

推荐学习顺序

初学者路径(4 天)

第 1 天:第 1-2 章(基础 + 数据处理)
第 2 天:第 3-4 章(向量索引 + 检索)
第 3 天:第 5-6 章(生成 + 评估)
第 4 天:第 9 章(最佳实践)

进阶路径(3 天)

第 1 天:第 7 章(高级 RAG)
第 2 天:第 8 章(生产工程)
第 3 天:第 9 章实战项目

全栈工程师路径(1 周)

按顺序完成全部 9 章,每章包含:
- 理论基础
- Spring AI 代码示例
- 生产最佳实践
- 练习项目

更多资源

研究论文

官方文档

评估框架

教程与课程


开始学习

选择你的起点:

需要帮助?

本文档网站配备了 AI 聊天助手 - 点击右下角的聊天图标即可提问关于 RAG 的任何问题!