跳转至

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 系统架构                        │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  离线流程(索引)                                         │
│  ┌─────────┐    ┌─────────┐    ┌─────────┐             │
│  │ 文档加载 │ → │ 文档切分 │ → │ 向量存储 │             │
│  └─────────┘    └─────────┘    └─────────┘             │
│                                                         │
│  在线流程(查询)                                         │
│  ┌─────────┐    ┌─────────┐    ┌─────────┐             │
│  │ 查询处理 │ → │ 向量检索 │ → │ 生成回答 │             │
│  └─────────┘    └─────────┘    └─────────┘             │
│                                                         │
└─────────────────────────────────────────────────────────┘

相关教程