RAG 系统教程¶
检索增强生成,从文档处理到智能问答
RAG(Retrieval-Augmented Generation)是一种结合检索和生成的技术,能够有效提升大模型的回答质量,解决幻觉问题。
学习目标¶
- ✅ 理解 RAG 基本原理与架构
- ✅ 掌握文档加载与切分策略
- ✅ 学会向量数据库使用
- ✅ 掌握检索优化技巧
- ✅ 能够构建生产级 RAG 系统
章节目录¶
| 章节 | 标题 | 内容概要 |
|---|---|---|
| 第一章 | RAG 简介 | 原理、架构、应用场景 |
| 第二章 | 文档处理 | 加载、分割、元数据 |
| 第二章(续) | OCR 与多模态 | 图片文档解析 |
| 第二章(续) | 父子分块 | 高级切分策略 |
| 第三章 | 向量索引 | Embedding、向量数据库 |
| 第四章 | 检索策略 | 相似度、混合检索 |
| 第五章 | 查询优化 | 重写、扩展、路由 |
| 第六章 | 实战项目 | 完整 RAG 系统构建 |
快速开始¶
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
# 1. 加载文档
loader = TextLoader("document.txt")
documents = loader.load()
# 2. 切分文档
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50
)
chunks = splitter.split_documents(documents)
# 3. 向量化存储
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)
# 4. 检索
results = vectorstore.similarity_search("查询问题", k=3)
RAG 架构¶
┌─────────────────────────────────────────────────────────┐
│ RAG 系统架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ 离线流程(索引) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 文档加载 │ → │ 文档切分 │ → │ 向量存储 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ 在线流程(查询) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 查询处理 │ → │ 向量检索 │ → │ 生成回答 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
相关教程¶
- 大模型集成 - LLM API 调用
- Embeddings - 向量嵌入详解
- 向量数据库 - Milvus、Pinecone