这是一本面向企业级AI应用开发者和决策者的RAG技术实战指南,全面覆盖了从基础理论到高级优化的各个环节。本书采用循序渐进的讲解方式,配以丰富的图表和代码示例,为读者提供了一条完整的学习路径,帮助读者快速掌握RAG技术的精髓。
本书共10章,分为四部分。
第一部分(第1章和第2章) RAG技术基础
介绍了RAG技术的定义、发展背景、核心组成以及落地面临的挑战,同时深入探讨了RAG技术背后的原理,包括嵌入技术、数据索引与检索,以及大语言模型的应用。
第二部分(第3~5章) RAG应用构建流程
详细讲解了RAG应用的各个环节,从数据准备与处理,到检索环节的优化,再到生成环节的技巧。
第三部分(第6~8章) RAG技术进阶
主要介绍了RAG系统的高级优化策略、常见框架实现原理与性能评估方法。针对高级优化策略,介绍了索引构建、预检索、检索、生成预处理和生成五个环节;针对常见框架,介绍了自省式RAG、自适应RAG、基于树结构索引的RAG、纠错性RAG等;针对评估方法,从评估指标和评估框架两个方面介绍了检索环节和生成环节的各种衡量指标的特点。
第四部分(第9章和第10章) RAG应用实例
首先通过具体的企业级应用案例和行业特定解决方案,展示了RAG技术在文档生成、知识库检索、客户服务等领域的实际应用,以及在金融、医疗、法律等特定行业的落地实践。然后展望了RAG技术的未来发展趋势,如长上下文对RAG的影响、多模态RAG的应用,以及嵌入模型与大模型语义空间融合等前沿话题,最后对RAG落地挑战进行了总结。
为了给读者提供更好的学习体验,本书准备了丰富的配套资源:
GitHub 仓库:地址为 https://github.com/morsoli/rag-book-demo,包含最新的代码更新和额外的学习资料。
读者社区:关注公众号莫尔索随笔与GeekSavvy,加入交流群,与作者和其他读者交流讨论。
(1)作者经验丰富:两位作者均是资深的大模型技术专家,是知名项目AutoGPT的代码贡献者和百度飞桨PPDE的技术专家,在RAG领域有深厚积累。
(2)零基础快入门:本书不需要读者有任何大模型和RAG的基础,从RAG技术的理论基础、架构设计到实战部署,全方位覆盖从入门到落地的完整知识体系。
(3)融合前沿理论与实践:紧跟RAG领域的前沿技术发展,以及RAG在企业的各种新应用,为读者提供有价值的参考方案。
(4)实战性强:包含大量案例和示例代码,手把手教读者构建完整可落地的RAG解决方案。
(5)配套资源丰富:不仅提供GitHub仓库,及时更新书中代码和RAG领域的新近发展情况,作者还提供社群服务,亲自为读者答疑。
Preface
前 言
为何写作本书
在人工智能和大语言模型迅速发展的今天,检索增强生成(Retrieval-Augmented Generation,RAG)技术正成为企业级AI应用的重要支柱。然而,许多AI领域的企业和从业者在实际落地RAG系统时往往面临诸多挑战:如何有效地管理和索引海量文档?如何提升检索的精准度?如何将RAG与特定业务场景深度结合?这些挑战不仅制约了RAG技术的广泛应用,也在一定程度上阻碍了企业数字化转型的进程。
为此,我们编写了本书,旨在为这些挑战提供系统化的解决方案。通过深入浅出的讲解和丰富的实战案例,我们将带领读者从零开始逐步掌握构建企业级RAG系统的全套技能。从基础理论到高级优化,从通用架构到行业定制,本书力求覆盖RAG技术在企业环境中的应用全貌。
我们希望本书能为AI领域的从业者、企业技术决策者以及有志于此的学习者提供一份翔实可靠的指南,推动RAG技术在各行各业的应用,为企业智能化升级贡献一份力量,同时也为整个AI行业的健康发展注入新的活力。
本书主要特点
系统性:从理论到实践,全面覆盖RAG技术的各个方面。
实用性:提供大量可直接应用的代码示例和最佳实践。
前沿性:融入最新的RAG研究成果和业界动态。
案例丰富:包含多个真实的企业级RAG应用案例分析。
结构清晰:循序渐进,便于读者系统学习和查阅。
图文并茂:大量图表和流程图辅助理解复杂概念。
实战导向:提供完整的项目实战,让读者能够亲自动手构建RAG系统。
本书阅读对象
本书是一本聚焦RAG技术实践与落地的专业技术书,适合的阅读对象主要分为以下几类:
企业技术管理者:能够全面了解RAG技术的应用价值与落地策略,为企业智能化升级做出正确的技术决策。
AI工程师与研究人员:可以系统学习RAG技术的前沿理论与实践经验,提升在大规模AI系统开发中的技术能力。
软件开发人员:可以掌握构建RAG系统所需的核心技能与工具,拓展在AI领域的职业发展空间。
学生与AI爱好者:可以快速入门RAG技术,了解企业级AI应用的开发流程,为未来的职业发展做好准备。
无论你是想在工作中应用RAG技术,还是希望扩展AI领域的知识储备,都能通过本书获得全面而实用的指导。
如何阅读本书
本书共10章,分为四部分。
第一部分是RAG技术基础,包括第1章和第2章。这部分介绍了RAG技术的定义、发展背景、核心组成以及落地面临的挑战,同时深入探讨了RAG技术背后的原理,包括Embedding技术、数据索引与检索,以及大语言模型的应用。
第二部分是RAG应用构建流程,涵盖第3章到第5章。这部分详细讲解了RAG应用的各个环节,从数据准备与处理,到检索环节的优化,再到生成环节的技巧。
第三部分是RAG技术进阶,涵盖第6章到第8章。这部分主要介绍了RAG系统的高级优化策略、常见框架的实现原理与性能评估方法。针对高级优化策略,介绍了索引构建、预检索、检索、生成预处理和生成五个环节;针对常见框架,介绍了自省式RAG、自适应RAG、基于树结构索引的RAG、纠错性RAG等;针对评估方法,从评估指标和评估框架两个方面介绍了检索环节和生成环节的各种衡量指标的特点。
第四部分是RAG应用实例,包括第9章和第10章。这部分首先通过具体的企业级应用案例和行业特定解决方案,展示了RAG技术在文档生成、知识库检索、客户服务等领域的实际应用,以及在金融、医疗、法律等特定行业的落地实践。然后展望了RAG技术的未来发展趋势,如长上下文对RAG的影响、多模态RAG的应用,以及嵌入模型与大模型语义空间融合等前沿话题,最后对RAG落地挑战进行了总结。
勘误
为了给读者提供更好的学习体验,我们为本书准备了丰富的配套资源:
GitHub仓库:地址为https://github.com/morsoli/rag-book-demo,包含最新的代码更新和额外的学习资料。
读者社区:关注公众号莫尔索随笔与GeekSavvy,加入交流群,与作者和其他读者交流讨论。
如果你在阅读过程中发现任何错误或有任何建议,欢迎通过GitHub Issues(https://github.com/morsoli/rag-book-demo/issues)提供反馈,我们将定期整理读者反馈,并在GitHub仓库提供最新的勘误信息。
致谢
在本书的写作过程中,得到了众多同人、专家和读者的宝贵建议和支持。
感谢所有参与本书创作的朋友们机械工业出版社的杨老师,以及我的合作者范老师。同时,感谢我的女朋友在写作期间给予的理解和鼓励。
最后,感谢所有读者的支持,希望本书能够成为读者在 RAG技术学习之路上的得力助手。
李多多
李多多(笔名:莫尔索)
资深AI技术专家,专注AI工程化落地与企业级解决方案。某公司 Al 项目研发负责人,多家企业 AI 技术顾问。在大语言模型应用开发领域有丰富经验,擅长LLM应用工程化、RAG系统构建以及Al Agent开发,著有《LangChain编程:从人门到实践》、开源电子书《LLM应用开发实践》。
范国斌
资深大模型技术专家,连续AI创业者,百度飞桨PPDE技术专家,MIKU AI技术负责人。在大语言模型应用开发方面积累了深厚经验,精通 LLM 工程化落地、RAG 系统搭建以及 AI Agent 的开发与实现。开发的多款AI原生应用获得百度飞桨首页曝光,其中Miku AI信息官获评2024百度年度星河产业百强应用。
CONTENTS
目 录
前言
第一部分 RAG技术基础
第1章 RAG 技术简介 2
1.1 为什么需要 RAG 2
1.2 RAG技术的发展背景 4
1.2.1 早期阶段:信息检索与问答系统 4
1.2.2 过渡阶段:自然语言处理与机器学习 5
1.2.3 发展阶段:RAG技术的兴起与优化 6
1.3 RAG技术的核心组成 8
1.3.1 检索模块 8
1.3.2 生成模块 8
1.3.3 数据增强 9
1.4 与大语言模型集成 9
1.4.1 RAG与LLM的结合 9
1.4.2 LangChain和LlamaIndex 10
1.5 RAG面临的挑战 11
1.6 总结 12
第2章 RAG技术背后的原理 13
2.1 Embedding技术 13
2.1.1 为什么RAG要用
Embedding 13
2.1.2 Embedding 的工作原理 14
2.1.3 Embedding的发展历程 15
2.1.4 Embedding 的代码示例 16
2.2 数据索引与检索 18
2.2.1 数据索引的基本概念 19
2.2.2 数据检索的基本原理 23
2.2.3 数据索引与检索的技术
实现 24
2.2.4 数据索引与检索的应用
场景 25
2.3 大语言模型 26
2.3.1 大语言模型的特点 26
2.3.2 大语言模型的技术原理 26
2.3.3 大语言模型在RAG中的
应用 29
2.4 总结 30
第二部分 RAG应用构建流程
第3章 数据准备与处理 34
3.1 数据清洗 34
3.1.1 数据收集 34
3.1.2 文本处理 37
3.1.3 文本分词 39
3.2 文本分割 41
3.2.1 固定大小分块 42
3.2.2 递归分块 44
3.2.3 基于文档逻辑的分块 45
3.2.4 语义分块 47
3.3 索引构建 48
3.3.1 列表索引 49
3.3.2 关键词表索引 51
3.3.3 向量索引 53
3.3.4 树索引 55
3.3.5 文档摘要索引 58
3.4 总结 60
第4章 检索环节 62
4.1 索引构建与优化 62
4.1.1 索引构建回顾 62
4.1.2 索引更新策略 63
4.1.3 索引压缩技术 71
4.1.4 多模态索引构建 72
4.2 检索策略与算法 73
4.2.1 精确匹配检索 74
4.2.2 相似度检索 76
4.2.3 语义检索 77
4.2.4 混合检索 79
4.2.5 检索结果排序与过滤 80
4.3 查询转化 84
4.3.1 查询预处理 85
4.3.2 查询扩展 85
4.3.3 查询理解与意图识别 96
4.4 总结 99
第5章 生成环节 100
5.1 LLM重排序 100
5.1.1 重排序的概念 101
5.1.2 LLM重排序的基本原理 102
5.2 提示工程 104
5.2.1 零样本提示 105
5.2.2 少样本提示 105
5.2.3 思维链提示 106
5.2.4 React 108
5.3 LLM归纳生成 109
5.3.1 数据合成 110
5.3.2 文章摘要生成 111
5.3.3 人物场景创作 112
5.3.4 对话生成 112
5.3.5 JSON结构化输出 113
5.4 总结 115
第三部分 RAG技术进阶
第6章 高级RAG优化技术 118
6.1 索引构建优化 118
6.1.1 长文档优化 119
6.1.2 大规模文档系统的优化 125
6.2 预检索优化 129
6.2.1 查询转换 129
6.2.2 查询扩展 131
6.2.3 结构化查询 132
6.2.4 查询路由 136
6.2.5 查询缓存 139
6.3 检索阶段优化 140
6.3.1 知识图谱的混合检索 140
6.3.2 关键词检索与向量检索
结合 145
6.3.3 微调嵌入模型 147
6.4 生成预处理 150
6.4.1 重排序 150
6.4.2 压缩与选择 152
6.5 生成阶段优化 153
6.5.1 提示工程 154
6.5.2 归因生成 155
6.5.3 事实验证 156
6.5.4 生成模型微调 157
6.6 总结 159
第7章 常见RAG框架的实现
原理 161
7.1 自省式RAG 161
7.1.1 实现原理 162
7.1.2 构建自省式RAG应用 164
7.2 自适应RAG 167
7.2.1 实现原理 168
7.2.2 构建自适应RAG应用 168
7.3 基于树结构索引的RAG 171
7.3.1 实现原理 171
7.3.2 树结构的特点 172
7.3.3 构建RAPTOR-RAG应用 174
7.4 纠错性RAG 176
7.4.1 实现原理 177
7.4.2 构建纠错性RAG应用 178
7.5 RAG融合 182
7.5.1 实现原理 182
7.5.2 构建RAG融合系统 185
7.6 基于知识图谱的RAG 187
7.6.1 实现原理 188
7.6.2 构建基于知识图谱的RAG
应用 189
7.7 其他 192
7.7.1 RankRAG 192
7.7.2 RichRAG 193
7.7.3 RAG 2.0 194
7.8 总结 194
第8章 RAG系统性能评估 195
8.1 RAG评估指标 195
8.1.1 检索环节评估 195
8.1.2 生成环节评估 198
8.2 常见的RAG评估框架 205
8.2.1 TruLens框架 205
8.2.2 RAGAs框架 210
8.2.3 ARES框架 213
8.2.4 其他 215
8.3 总结 222
第四部分 RAG应用实例
第9章 企业级RAG应用实践 224
9.1 通用应用 224
9.1.1 智能文档问答 224
9.1.2 企业知识库智能搜索 226
9.1.3 智能客服系统 228
9.2 行业应用 230
9.2.1 RAG在金融行业的应用 230
9.2.2 RAG在医疗行业的应用 232
9.2.3 RAG在法律行业的应用 233
9.2.4 RAG在教育行业的应用 235
9.3 构建企业级RAG系统 236
9.3.1 用户认证 236
9.3.2 输入防护 237
9.3.3 RAG组件 238
9.3.4 输出防护 239
9.3.5 反馈收集 239
9.3.6 数据存储 240
9.3.7 可观测性 240
9.4 总结 241
第10章 RAG技术展望 242
10.1 RAG 技术演进 242
10.1.1 大模型主动参与知识
选取 242
10.1.2 嵌入模型与大模型语义
空间融合 243
10.1.3 RAG流程动态编排 243
10.2 多模态RAG 244
10.2.1 三种检索策略 244
10.2.2 两种响应方式 244
10.3 RAG落地挑战 245