##################### 2. RAG 检索增强生成 ##################### .. include:: ../links.ref .. include:: ../tags.ref .. include:: ../abbrs.ref ============ ========================== **Abstract** RAG 检索增强生成教程 **Authors** Walter Fan **Status** WIP as draft **Updated** |date| ============ ========================== RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合检索和生成的 AI 技术, 让大语言模型能够利用外部知识库来生成更准确、更可靠的回答。 为什么需要 RAG? ================ 大语言模型(LLM)虽然强大,但存在以下问题: - **知识截止**: 训练数据有截止日期,无法获取最新信息 - **幻觉问题**: 可能生成看似合理但实际错误的内容 - **领域知识**: 缺乏特定领域的专业知识 - **数据隐私**: 无法访问私有数据 RAG 通过引入外部知识库来解决这些问题: .. code-block:: text 传统 LLM: 用户问题 ──► LLM ──► 回答(可能有幻觉) RAG: 用户问题 ──► 检索相关文档 ──► LLM + 文档 ──► 准确回答 学习目标 ======== 完成本教程后,你将能够: - 理解 RAG 的核心概念和工作原理 - 掌握文档加载和处理技术 - 了解文本分块策略 - 使用向量嵌入表示文本 - 搭建和使用向量数据库 - 实现多种检索策略 - 优化 RAG 系统的 Prompt - 评估 RAG 系统性能 - 应用高级 RAG 技术 - 部署生产级 RAG 系统 RAG 工作流程 ============ .. code-block:: text ┌─────────────────────────────────────────────────────────────────┐ │ RAG 完整流程 │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 离线索引阶段 │ │ │ │ │ │ │ │ 文档 ──► 分块 ──► 向量化 ──► 存入向量数据库 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ 在线查询阶段 │ │ │ │ │ │ │ │ 用户问题 ──► 向量化 ──► 检索相似文档 ──► 构建Prompt │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ LLM生成 │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ 返回答案 │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ 实战项目 ======== 我们将构建一个完整的知识问答系统: - 📚 加载和处理多种格式的文档 - 🔍 实现高效的语义检索 - 💬 构建智能问答接口 - 📊 评估和优化系统性能 .. toctree:: :maxdepth: 1 :caption: 教程目录: tutorial_01_introduction tutorial_02_document_loading tutorial_03_text_chunking tutorial_04_embeddings tutorial_05_vector_database tutorial_06_retrieval_strategies tutorial_07_prompt_engineering tutorial_08_evaluation tutorial_09_advanced_rag tutorial_10_production