什么是 RAG
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合了信息检索和文本生成的 AI 架构。它的工作原理是:先从外部知识库中检索相关文档,再将检索结果作为上下文传给大模型,让模型基于真实文档生成回答。
用一句话理解:RAG 是给 AI 开卷考试。普通 LLM 是闭卷考试(只能靠训练数据),RAG 让 AI 先翻书再答题。
为什么需要 RAG
大模型有三个固有问题,RAG 能有效缓解:
| 问题 | 不用 RAG | 用 RAG |
|---|---|---|
| 知识过时 | 只知道训练截止前的信息 | 可检索最新文档 |
| 幻觉 | 编造看似合理的事实 | 基于真实文档回答 |
| 领域知识不足 | 缺乏企业内部知识 | 可接入企业知识库 |
RAG 工作流程
1. 文档处理(离线)
原始文档 → 分块(Chunking)→ 向量化(Embedding)→ 存入向量数据库
2. 检索生成(在线)
用户提问 → 向量化 → 在向量库中检索相似文档 → 拼接为上下文 → 传给 LLM → 生成回答
核心概念
Embedding(向量嵌入)
把文本转换为向量(数字数组),使语义相似的文本在向量空间中距离更近。常用模型:
- OpenAI text-embedding-3-small
- BGE(中文效果好)
- Cohere embed
向量数据库
专门存储和检索向量的数据库:
- Pinecone(SaaS)
- Milvus(开源自托管)
- Qdrant(轻量开源)
- Chroma(本地开发)
Chunking(分块)
把长文档切成小段落,每段 200-500 tokens。分块策略影响检索质量:
- 按字数分块:最简单
- 按语义分块:更好但更复杂
- 递归分块:兼顾层次结构
RAG vs Fine-tuning
| 维度 | RAG | Fine-tuning |
|---|---|---|
| 更新知识 | 实时更新 | 需重新训练 |
| 成本 | 低 | 高 |
| 可解释性 | 高(可引用来源) | 低 |
| 适合场景 | 知识频繁变化 | 调整模型风格/格式 |
常用 RAG 工具
| 工具 | 定位 | 特点 |
|---|---|---|
| LangChain | RAG 框架 | 最流行的 LLM 应用框架 |
| LlamaIndex | RAG 专用框架 | 专注数据连接 |
| Dify | RAG 平台 | 可视化搭建 |
| FastGPT | RAG 平台 | 知识库为核心 |
相关概念
- Embedding:文本向量化的技术
- 向量数据库:存储向量并支持相似度检索
- Fine-tuning:微调模型(RAG 的替代方案)
- MCP:让 AI 连接外部数据源的协议(可替代 RAG 的部分场景)