大模型应用开发 RAG实战课

978-7-115-67185-1
作者: 黄佳
译者:
编辑: 秦健
分类: 其他

图书目录:

楔子 闹市中的古刹 001

开篇 RAG三问 003

一问 从实际项目展示到底何为RAG 003

文档的导入和解析 005

文档的分块 005

文本块的嵌入 006

向量数据库的选择 006

文本块的检索 007

回答的生成 008

二问 如何快速搭建RAG系统 008

使用框架:LangChain的RAG实现 011

使用框架:通过LCEL链进行重构 016

使用框架:通过LangGraph进行重构 018

不使用框架:自选Embedding模型、向量数据库和大模型 020

使用coze、Dify、FastGPT等可视化工具 023

三问 从何处入手优化RAG系统 025

第 1章 数据导入 028

1.1 用数据加载器读取简单文本 030

1.1.1 借助LangChain读取TXT文件,以生成Document对象 030

1.1.2 LangChain中的数据加载器 031

1.1.3 用LangChain读取目录中的所有文件 032

1.1.4 用LlamaIndex读取目录中的所有文档 034

1.1.5 用LlamaHub连接Reader并读取数据库条目 036

1.1.6 用Unstructured工具读取各种类型的文档 038

1.2 用JSON加载器解析特定元素 040

1.3 用UnstructuredLoader读取图片中的文字 042

1.3.1 读取图片中的文字 042

1.3.2 读取PPT中的文字 043

1.4 用大模型整体解析图文 044

1.5 导入CSV格式的表格数据 048

1.5.1 使用CSVLoader导入数据 048

1.5.2 比较CSVLoader和UnstructuredCSVLoader 050

1.6 网页文档的爬取和解析 051

1.6.1 用WebBaseLoader快速解析网页 051

1.6.2 用UnstructuredLoader细粒度解析网页 052

1.7 Markdown文件标题和结构 054

1.8 PDF文件的文本格式、布局识别及表格解析 057

1.8.1 PDF文件加载工具概述 057

1.8.2 用PyPDFLoader进行简单文本提取 059

1.8.3 用Marker工具把PDF文档转换为Markdown格式 060

1.8.4 用UnstructuredLoader进行结构化解析 063

1.8.5 用PyMuPDF和坐标信息可视化布局 069

1.8.6 用UnstructuredLoader解析PDF页面中的表格 072

1.8.7 用ParentID整合同一标题下的内容 073

1.9 小结 075

第 2章 文本分块 082

2.1 为什么分块非常重要 083

2.1.1 上下文窗口限制了块最大长度 084

2.1.2 分块大小对检索精度的影响 086

2.1.3 分块大小对生成质量的影响 088

2.1.4 不同的分块策略 088

2.1.5 用ChunkViz工具可视化分块 089

2.2 按固定字符数分块 090

2.2.1 LangChain中的CharacterTextSplitter工具 090

2.2.2 在LlamaIndex中设置块大小参数 092

2.3 递归分块 092

2.4 基于特定格式(如代码)分块 093

2.5 基于文件结构或语义分块 095

2.5.1 使用Unstructured工具基于文档结构分块 095

2.5.2 使用LlamaIndex的SemanticSplitterNodeParser进行语义分块 096

2.6 与分块相关的高级索引构建技巧 097

2.6.1 带滑动窗口的句子切分 097

2.6.2 分块时混合生成父子文本块 098

2.6.3 分块时为文本块创建元数据 100

2.6.4 在分块时形成有级别的索引 101

2.7 小结 103

第3章 嵌入生成 104

3.1 嵌入是对外部信息的编码 104

3.2 从早期词嵌入模型到大模型嵌入 107

3.2.1 早期词嵌入模型 108

3.2.2 上下文相关的词嵌入模型 108

3.2.3 句子嵌入模型和SentenceTransformers框架 109

3.2.4 多语言嵌入模型 111

3.2.5 图像和音频嵌入模型 112

3.2.6 图像与文本联合嵌入模型 112

3.2.7 图嵌入模型和知识图谱嵌入模型 113

3.2.8 大模型时代的嵌入模型 114

3.3 现代嵌入模型:OpenAI、Jina、Cohere、Voyage 114

3.3.1 用OpenAI的text-embedding-3-small进行产品推荐 114

3.3.2 用jina-embeddings-v3模型进行跨语言数据集聚类 116

3.3.3 MTEB:海量文本嵌入基准测试 118

3.3.4 各种嵌入模型的比较及选型考量 120

3.4 稀疏嵌入、密集嵌入和BM25 121

3.4.1 利用BM25实现稀疏嵌入 122

3.4.2 BGE-M3模型:稀疏嵌入和密集嵌入的结合 124

3.5 多模态嵌入模型:Visualized_BGE 125

3.6 通过LangChain、LlamaIndex等框架使用嵌入模型 126

3.6.1 LangChain提供的嵌入接口 127

3.6.2 LlamaIndex提供的嵌入接口 127

3.6.3 通过LangChain的Caching缓存嵌入 128

3.7 微调嵌入模型 129

3.8 小结 133

第4章 向量存储 134

4.1 向量究竟是如何被存储的 135

4.1.1 从LlamaIndex的设计看简单的向量索引 135

4.1.2 向量数据库的组件 141

4.2 向量数据库中的索引 144

4.2.1 FLAT 144

4.2.2 IVF 145

4.2.3 量化索引 146

4.2.4 图索引 147

4.2.5 哈希技术 148

4.2.6 向量的检索(相似度度量) 148

4.3 主流向量数据库 149

4.3.1 Milvus 150

4.3.2 Weaviate 150

4.3.3 Qdrant 150

4.3.4 Faiss 151

4.3.5 Pinecone 151

4.3.6 Chroma 151

4.3.7 Elasticsearch 151

4.3.8 PGVector 152

4.4 向量数据库的选型与测评 152

4.4.1 向量数据库的选型 152

4.4.2向量数据库的测评 154

4.5 向量数据库中索引和搜索的设置 155

4.5.1 Milvus向量操作示例 155

4.5.2 选择合适的索引类型 159

4.5.3 选择合适的度量标准 167

4.5.4 在执行搜索时度量标准要与索引匹配 171

4.5.5 Search和Query:两种搜索方式 172

4.6 利用Milvus实现混合检索 173

4.6.1 浮点向量、稀疏浮点向量和二进制向量 174

4.6.2 混合检索策略实现 175

4.6.3 使用Milvus实现混合检索系统 176

4.7 向量数据库和多模态检索 180

4.7.1 用Visualized BGE模型实现多模态检索 181

4.7.2 使用ResNet-34提取图像特征并检索 186

4.8 RAG系统的数据维护及向量存储的增删改操作 189

4.8.1 RAG系统中的数据流维护与管理 189

4.8.2 Milvus中向量的增删改操作 190

4.8.3 向量数据库的集合操作 191

4.9 小结 192

第5章 检索前处理 194

5.1 查询构建——Text-to-SQL和Text-to-Cypher 196

5.1.1 Text-to-SQL——自然语言到SQL的转换 196

5.1.2 Text-to-Cypher——从自然语言到图数据库查询 206

5.1.3 Self-query Retriever——自动从查询中生成元数据过滤条件 210

5.2 查询翻译——更好地阐释用户问题 216

5.2.1 查询重写——将原始问题重构为合适的形式 216

5.2.2 查询分解——将查询拆分成多个子问题 218

5.2.3 查询澄清——逐步细化和明确用户的问题 221

5.2.4 查询扩展——利用HyDE生成假设文档 226

5.3 查询路由——找到正确的数据源 229

5.3.1 逻辑路由——决定查询的路径 231

5.3.2 语义路由——选择相关的提示词 232

5.4 小结 234

第6章 索引优化 236

6.1 从小到大:节点-句子滑动窗口和父子文本块 237

6.1.1 节点-句子滑动窗口检索 238

6.1.2 父子文本块检索 240

6.2 粗中有细:利用IndexNode和RecursiveRetriever构建从摘要到细节的索引 243

6.3 分层合并:HierarchicalNodeParser和RAPTOR 246

6.3.1 使用HierarchicalNodeParser生成分层索引 247

6.3.2 使用RAPTOR递归生成多层级索引 249

6.4 前后串联:通过前向/后向扩展链接相关节点 252

6.5 混合检索:提高检索准确性和扩大覆盖范围 255

6.5.1 使用Ensemble Retriever结合BM25和语义搜索 255

6.5.2 使用MultiVectorRetriever实现多表示检索 259

6.5.3 混合查询和查询路由 261

6.6 小结 262

第7章 检索后处理 263

7.1 重排 264

7.1.1 RRF重排 264

7.1.2 Cross-Encoder重排 269

7.1.3 ColBERT重排 271

7.1.4 Cohere重排和Jina重排 273

7.1.5 RankGPT和RankLLM 276

7.1.6 时效加权重排 277

7.2 压缩 279

7.2.1 Contextual Compression Retriever 280

7.2.2 利用LLMLingua压缩提示词 281

7.2.3 RECOMP方法 285

7.2.4 Sentence Embedding Optimizer 287

7.2.5 通过Prompt Caching记忆长上下文 288

7.3 校正 288

7.4小结 296

第8章 响应生成 298

8.1 通过改进提示词来提高模型输出质量 299

8.1.1 通过模板和示例引导生成结果 299

8.1.2 增强生成的多样性和全面性 300

8.1.3 引入事实核查机制以提升真实性 301

8.2 通过输出解析来控制生成内容的格式 302

8.2.1 LangChain输出解析机制 302

8.2.2 LlamaIndex输出解析机制 302

8.2.3 Pydantic解析 303

8.2.4 Function Calling解析 304

8.3 通过选择大模型来提高输出质量 304

8.4 生成过程中的检索结果集成方式 306

8.4.1 输入层集成 308

8.4.2 输出层集成 309

8.4.3 中间层集成 309

8.5 Self-RAG 310

8.6 RRR:动态生成优化 312

8.7 小结 315

第9章 系统评估 316

9.1 RAG系统的评估体系 317

9.1.1 RAG的评估数据集 317

9.1.2 检索评估和响应评估 318

9.1.3 RAG TRIAD:整体评估 319

9.2 检索评估指标 320

9.2.1 精确度 321

9.2.2 召回率 321

9.2.3 F1分数 322

9.2.4 平均倒数排名 322

9.2.5 平均精确度 322

9.2.6 逆文档频率加权精确度 323

9.2.7 文档精确度和页面精确度 323

9.3 响应评估指标 325

9.3.1 基于n-gram匹配程度的指标 325

9.3.2 基于语义相似性的指标 327

9.3.3 基于忠实度或扎实性的指标 328

9.4 RAG系统的评估框架 329

9.4.1 使用RAGAS评估RAG系统 329

9.4.2 使用TruLens实现RAG TRIAD评估 332

9.4.3 DeepEval:强大的开源大模型评估框架 333

9.4.4 Phoenix:交互式模型诊断分析平台 335

9.5 小结 335

第 10章 复杂RAG范式 337

10.1 GraphRAG:RAG和知识图谱的整合 338

10.2 上下文检索:突破传统RAG的上下文困境 339

10.3 ModularRAG:从固定流程到灵活架构的跃迁 340

10.4 AgenticRAG:自主代理驱动的RAG系统 343

10.5 Multi-Modal RAG:多模态检索增强生成技术 344

10.6 小结 345

参考文献 346

后记 一期一会 348

详情

在大模型逐渐成为智能系统核心引擎的今天,检索增强生成(RAG)技术为解决模型的知识盲区以及提升响应准确性提供了关键性的解决方案。本书围绕完整的RAG系统生命周期,系统地拆解其架构设计与实现路径,助力开发者和企业构建实用、可控且可优化的智能问答系统。 首先,本书以“数据导入—文本分块—信息嵌入—向量存储”为主线,详细阐述了从多源文档加载到结构化预处理的全流程,并深入解析了嵌入模型的选型、微调策略及多模态支持;其次,从检索前的查询构建、查询翻译、查询路由、索引优化,到检索后的重排与压缩,全面讲解了提高召回质量和内容相关性的方法;接下来,介绍了多种生成方式及RAG 系统的评估框架;最后,展示了复杂RAG范式的新进展,包括GraphRAG、Modular RAG、 Agentic RAG和Multi-Modal RAG的构建路径。 本书适合AI研发工程师、企业技术负责人、知识管理从业者以及对RAG系统构建感兴趣的高校师生阅读。无论你是希望快速搭建RAG系统,还是致力于深入优化检索性能,亦或是探索下一代AI系统架构,本书都提供了实用的操作方法与理论支持。

图书摘要

相关图书

Joy RL:强化学习实践教程
Joy RL:强化学习实践教程
计算机组成原理(基于x86-64架构)
计算机组成原理(基于x86-64架构)
AI高手速成 DeepSeek让你工作变轻松
AI高手速成 DeepSeek让你工作变轻松
DeepSeek极速上手 :高效做事不内耗
DeepSeek极速上手 :高效做事不内耗
AI设计:Midjourney绘画设计教程
AI设计:Midjourney绘画设计教程
秒懂AI辅助论文写作
秒懂AI辅助论文写作

相关文章

相关课程