目 录
第 1 章 搭建RAG开发环境 1
1.1 Python开发环境搭建 1
1.1.1 虚拟环境的创建管理 1
1.1.2 IDE的选择与工作流的搭建 5
1.1.3 依赖库安装与版本管理 8
1.2 RAG开发中常用的Python依赖库 10
1.2.1 数据处理必备库:Pandas与NumPy 10
1.2.2 自然语言处理工具:NLTK与spaCy 13
1.2.3 向量检索与模型处理:FAISS与Transformers库简介 16
1.3 RAG开发中常用的外部模块 20
1.3.1 数据采集与预处理:Requests与BeautifulSoup 20
1.3.2 并行与异步处理:Multiprocessing与Asyncio 24
1.4 RAG与智能体 28
1.4.1 智能体的基本定义与作用 28
1.4.2 智能体的类型:反应型、认知型与学习型 30
1.5 基于RAG的智能体开发基础 31
1.5.1 开发环境与工具 32
1.5.2 智能体开发中的关键算法:搜索、优化与规划 35
1.5.3 智能体的性能评估与调试方法 37
1.6 本章小结 40
1.7 思考题 41
第 2 章 传统生成与检索增强生成 42
2.1 生成式AI和RAG的基本概念 42
2.1.1 生成式AI的核心原理与工作机制 43
2.1.2 生成检索结合 45
2.1.3 检索增强与传统生成模型的区别 48
2.2 为何需要对传统大模型进行检索增强 51
2.2.1 预训练大模型的瓶颈 52
2.2.2 RAG在实时信息处理中的优势 53
2.3 检索增强核心:预训练大模型 53
2.3.1 Transformer架构的崛起:语言模型背后的核心引擎 54
2.3.2 从BERT到GPT-4:大模型发展的重要里程碑 56
2.4 本章小结 57
2.5 思考题 57
第 3 章 RAG模型的工作原理 59
3.1 检索模块与生成模块 59
3.1.1 检索模块的核心功能与数据流 59
3.1.2 生成模块在内容创建中的作用 63
3.1.3 检索与生成的协同工作机制 65
3.2 向量检索:将文本转换为向量 68
3.2.1 文本嵌入的基本原理与技术 69
3.2.2 高效向量检索:从相似度到索引优化 72
3.2.3 向量检索在RAG中的实际应用 76
3.3 RAG开发中常用的生成模型简介 80
3.3.1 GPT家族:从GPT-2到GPT-4的演进 80
3.3.2 BERT与T5:理解与生成的跨模型应用 82
3.4 本章小结 83
3.5 思考题 84
第 4 章 搭建一个简单的RAG系统 86
4.1 创建小型向量数据库 86
4.1.1 数据准备与预处理:搭建数据库的第一步 86
4.1.2 嵌入生成与存储:从文本到向量的转换 89
4.1.3 使用FAISS构建检索索引:实现高效查询 92
4.2 利用公开模型实现简单的问答系统 96
4.2.1 加载预训练模型:选择合适的生成模型 96
4.2.2 检索与生成模块的集成:构建问答流程 100
4.2.3 测试与优化:提升回答的准确性和一致性 103
4.3 本章小结 107
4.4 思考题 107
第 5 章 数据向量化与FAISS开发 109
5.1 什么是向量检索:原理与常用算法 109
5.1.1 向量检索的基本概念:从相似性到距离度量 109
5.1.2 常用的向量检索算法:线性搜索与近似最近邻 113
5.1.3 向量检索在RAG中的应用:增强上下文匹配 116
5.2 使用FAISS构建高效的向量检索系统 119
5.2.1 FAISS索引结构解析:平面索引、倒排索引与产品量化 119
5.2.2 构建和训练FAISS索引:提高检索速度和准确性 122
5.2.3 FAISS在大规模数据中的优化策略:多级索引与分片 125
5.3 数据的向量化:Embedding的生成 128
5.3.1 嵌入生成模型选择:如何匹配检索任务需求 129
5.3.2 文本嵌入的生成与存储:从编码到持久化 131
5.4 本章小结 134
5.5 思考题 135
第 6 章 文本检索增强与上下文构建 136
6.1 如何让生成模型“理解”检索到的内容 136
6.1.1 检索与生成的无缝衔接:内容重构与语义理解 136
6.1.2 语义相似度与匹配:提升生成的准确性 139
6.1.3 从检索到生成的优化路径:模型理解的增强 141
6.2 上下文的构建与传递 144
6.2.1 构建有效的上下文:信息筛选与组织策略 145
6.2.2 多步上下文传递:保持生成内容的连贯性 147
6.2.3 上下文优化技巧:减少冗余与增加相关性 150
6.3 多轮对话与复杂生成任务的实现 154
6.3.1 多轮交互的构建:让生成模型模拟人类对话 154
6.3.2 长对话与上下文管理:模型记忆的实现方法 157
6.3.3 复杂生成任务分解:如何逐步实现多步骤生成 160
6.4 本章小结 164
6.5 思考题 165
第 7 章 构建检索向量数据库 167
7.1 数据的准备与清洗 167
7.1.1 数据质量提升:数据清洗与规范化流程 167
7.1.2 数据标注与分类:构建高效检索的基础 171
7.2 如何创建和管理向量数据库 175
7.2.1 向量数据库的构建步骤:从嵌入到存储 175
7.2.2 高效管理:向量索引与检索优化 178
7.3 本章小结 182
7.4 思考题 182
第 8 章 针对延迟与缓存的模型性能调优 184
8.1 调整生成与检索模块的协同参数 184
8.1.1 生成与检索的平衡:优化参数的核心原则 184
8.1.2 动态参数调节:提升响应质量与精度 187
8.2 缩短RAG系统的响应时间 190
8.2.1 延迟分析与瓶颈定位:加速响应的第一步 191
8.2.2 缓存与并行处理策略:实现高效RAG系统 194
8.3 本章小结 197
8.4 思考题 197
第 9 章 企业文档问答系统的开发 199
9.1 需求分析与系统设计 199
9.1.1 确定问答系统的需求:识别用户的主要查询类型与目标 200
9.1.2 系统结构与模块划分:明确检索与生成模块的协作方式 201
9.2 搭建向量数据库与检索模块 201
9.2.1 数据预处理与向量化:生成高效的嵌入向量 202
9.2.2 构建与优化索引:提升检索模块的查询速度 204
9.3 生成模块的集成与模型调优 206
9.3.1 加载与配置生成模型:选择适合问答系统的生成模型 207
9.3.2 模型优化与提示词调优:提高生成内容的准确性与相关性 209
9.4 系统测试、部署与优化 211
9.4.1 测试流程与性能监控:确保系统的稳定性与响应速度 211
9.4.2 企业环境的部署与上线:实现系统在实际业务中的应用 214
9.5 本章小结 222
9.6 思考题 222
第 10 章 医疗文献检索与分析系统的开发 224
10.1 需求分析与数据准备 224
10.1.1 确定医学文献检索需求:识别用户查询重点 225
10.1.2 数据收集与清洗:构建高质量的医学知识库 226
10.2 构建高效的检索模块 232
10.2.1 设计向量检索系统:提升检索效率 232
10.2.2 优化索引结构:加速医学文献的精确匹配 235
10.3 生成模块开发、集成和调优 239
10.3.1 生成模型与检索的集成:精准回答用户提问 239
10.3.2 生成内容的优化与提示词调优:提升回答的质量与专业性 241
10.4 本章小结 249
10.5 思考题 250
第 11 章 法律法规查询助手的开发 251
11.1 需求分析与数据收集 251
11.1.1 用户需求解析:明确法律法规查询的主要需求 252
11.1.2 法律法规数据源与收集方法:搭建全面的法规数据库 253
11.1.3 数据清洗与标准化:提升查询效率和准确性 253
11.2 法律法规检索模块的实现 257
11.2.1 向量化法律条款:构建检索友好的嵌入 257
11.2.2 FAISS索引在法规查询中的应用:提升检索性能 259
11.2.3 优化检索流程:提高法律条款的匹配精度 261
11.3 生成模块开发与输出优化 264
11.3.1 生成模型与检索模块的集成:构建准确的法规回答 265
11.3.2 输出格式与内容优化:提供清晰的法律解释 267
11.3.3 提示词调优与模型配置:确保法律回答的专业性 268
11.4 本章小结 273
11.5 思考题 273