相關主題
商品描述
本書是一本全面介紹基於大語言模型的RAG應用開發的專業圖書。本書共分為3篇:預備篇、基礎篇和高級篇。預備篇旨在幫助你建立起對大模型與RAG的基本認識,並引導你搭建起RAG應用開發的基礎環境;基礎篇聚焦於經典RAG應用開發的核心要素與階段,介紹關鍵模塊的開發過程,剖析相關的技術原理,為後面的深入學習打下堅實的基礎;高級篇聚焦於RAG應用開發的高階模塊與技巧,特別是在企業級RAG應用開發中的優化策略與技術實現,並探索了一些新型的RAG工作流與範式,旨在幫助你瞭解最新的RAG應用技術發展,掌握RAG應用的全方位開發能力。
目錄大綱
預 備 篇
第1章 瞭解大模型與RAG 3
1.1 初識大模型 3
1.1.1 大模型時代:生成式AI應用的爆發 3
1.1.2 大模型應用的持續進化 4
1.1.3 大模型是無所不能的嗎 7
1.2 瞭解RAG 11
1.2.1 為什麽需要RAG 11
1.2.2 一個簡單的RAG場景 12
1.3 RAG應用的技術架構 14
1.3.1 RAG應用的經典架構與流程 14
1.3.2 RAG應用面臨的挑戰 17
1.3.3 RAG應用架構的演進 18
1.4 關於RAG的兩個話題 20
1.4.1 RAG與微調的選擇 21
1.4.2 RAG與具有理解超長上下文能力的大模型 24
第2章 RAG應用開發環境搭建 27
2.1 開發RAG應用的兩種方式 27
2.1.1 使用低代碼開發平臺 27
2.1.2 使用大模型應用開發框架 29
2.2 RAG應用開發環境準備 33
2.2.1 硬件環境建議 33
2.2.2 基礎大模型 34
2.2.3 嵌入模型 41
2.2.4 Python虛擬運行環境 44
2.2.5 Python IDE與開發插件 45
2.2.6 向量庫 47
2.2.7 LlamaIndex框架 51
2.3 關於本書開發環境的約定 51
【預備篇小結】 52
基 礎 篇
第3章 初識RAG應用開發 55
3.1 開發一個最簡單的RAG應用 55
3.1.1 使用原生代碼開發 56
3.1.2 使用LlamaIndex框架開發 64
3.1.3 使用LangChain框架開發 68
3.2 如何跟蹤與調試RAG應用 70
3.2.1 借助LlamaDebugHandler 70
3.2.2 借助第三方的跟蹤與調試平臺 73
3.3 準備:基於LlamaIndex框架的RAG應用開發核心組件 77
第4章 模型與Prompt 78
4.1 大模型 78
4.1.1 大模型在RAG應用中的作用 79
4.1.2 大模型組件的統一接口 80
4.1.3 大模型組件的單獨使用 82
4.1.4 大模型組件的集成使用 83
4.1.5 瞭解與設置大模型的參數 84
4.1.6 自定義大模型組件 85
4.1.7 使用LangChain框架中的大模型組件 87
4.2 Prompt 87
4.2.1 使用Prompt模板 87
4.2.2 更改默認的Prompt模板 88
4.2.3 更改Prompt模板的變量 91
4.3 嵌入模型 92
4.3.1 嵌入模型在RAG應用中的作用 92
4.3.2 嵌入模型組件的接口 93
4.3.3 嵌入模型組件的單獨使用 95
4.3.4 嵌入模型組件的集成使用 97
4.3.5 瞭解與設置嵌入模型的參數 97
4.3.6 自定義嵌入模型組件 98
第5章 數據加載與分割 100
5.1 理解兩個概念:Document與Node 100
5.1.1 什麽是Document與Node 100
5.1.2 深入理解Document與Node 102
5.1.3 深入理解Node對象的元數據 103
5.1.4 生成Document對象 106
5.1.5 生成Node對象 107
5.1.6 元數據的生成與抽取 111
5.1.7 初步瞭解IndexNode類型 115
5.2 數據加載 116
5.2.1 從本地目錄中加載 117
5.2.2 從網絡中加載數據 123
5.3 數據分割 129
5.3.1 如何使用數據分割器 129
5.3.2 常見的數據分割器 131
5.4 數據攝取管道 145
5.4.1 什麽是數據攝取管道 145
5.4.2 用於數據攝取管道的轉換器 147
5.4.3 自定義轉換器 149
5.4.4 使用數據攝取管道 150
5.5 完整認識數據加載階段 155
第6章 數據嵌入與索引 156
6.1 理解嵌入與向量 156
6.1.1 直接用模型生成向量 157
6.1.2 借助轉換器生成向量 157
6.2 向量存儲 158
6.2.1 簡單向量存儲 159
6.2.2 第三方向量存儲 161
6.3 向量存儲索引 164
6.3.1 用向量存儲構造向量存儲索引對象 165
6.3.2 用Node列表構造向量存儲索引對象 166
6.3.3 用文檔直接構造向量存儲索引對象 169
6.3.4 深入理解向量存儲索引對象 172
6.4 更多索引類型 175
6.4.1 文檔摘要索引 175
6.4.2 對象索引 177
6.4.3 知識圖譜索引 180
6.4.4 樹索引 186
6.4.5 關鍵詞表索引 187
第7章 檢索、響應生成與RAG引擎 190
7.1 檢索器 191
7.1.1 快速構造檢索器 191
7.1.2 理解檢索模式與檢索參數 192
7.1.3 初步認識遞歸檢索 197
7.2 響應生成器 199
7.2.1 構造響應生成器 200
7.2.2 響應生成模式 201
7.2.3 響應生成器的參數 210
7.2.4 實現自定義的響應生成器 212
7.3 RAG引擎:查詢引擎 214
7.3.1 構造內置類型的查詢引擎的兩種方法 214
7.3.2 深入理解查詢引擎的內部結構和運行原理 217
7.3.3 自定義查詢引擎 218
7.4 RAG引擎:對話引擎 221
7.4.1 對話引擎的兩種構造方法 221
7.4.2 深入理解對話引擎的內部運行和運行原理 224
7.4.3 理解不同的對話模式 227
7.5 結構化輸出 239
7.5.1 使用output_cls參數 240
7.5.2 使用輸出解析器 241
【基礎篇小結】 243
高 級 篇
第8章 RAG引擎高級開發 247
8.1 檢索前查詢轉換 247
8.1.1 簡單查詢轉換 248
8.1.2 HyDE查詢轉換 249
8.1.3 多步查詢轉換 251
8.1.4 子問題查詢轉換 254
8.2 檢索後處理器 259
8.2.1 使用節點後處理器 259
8.2.2 實現自定義的節點後處理器 260
8.2.3 常見的預定義的節點後處理器 261
8.2.4 Rerank節點後處理器 266
8.3 語義路由 272
8.3.1 瞭解語義路由 272
8.3.2 帶有路由功能的查詢引擎 274
8.3.3 帶有路由功能的檢索器 276
8.3.4 使用獨立的選擇器 277
8.3.5 可多選的路由查詢引擎 278
8.4 SQL查詢引擎 280
8.4.1 使用NLSQLTableQueryEngine組件 281
8.4.2 基於實時表檢索的查詢引擎 283
8.4.3 使用SQL檢索器 285
8.5 多模態文檔處理 286
8.5.1 多模態文檔處理架構 286
8.5.2 使用LlamaParse解析文檔 288
8.5.3 多模態文檔中的表格處理 294
8.5.4 多模態大模型的基礎應用 297
8.5.5 多模態文檔中的圖片處理 303
8.6 查詢管道:編排基於Graph的RAG工作流 308
8.6.1 理解查詢管道 309
8.6.2 查詢管道支持的兩種使用方式 310
8.6.3 深入理解查詢管道的內部原理 313
8.6.4 實現並插入自定義的查詢組件 315
第9章 開發Data Agent 321
9.1 初步認識Data Agent 322
9.2 構造與使用Agent的工具 323
9.2.1 深入瞭解工具類型 324
9.2.2 函數工具 325
9.2.3 查詢引擎工具 326
9.2.4 檢索工具 327
9.2.5 查詢計劃工具 328
9.2.6 按需加載工具 330
9.3 基於函數調用功能直接開發Agent 331
9.4 用框架組件開發Agent 335
9.4.1 使用OpenAIAgent 335
9.4.2 使用ReActAgent 336
9.4.3 使用底層API開發Agent 338
9.4.4 開發帶有工具檢索功能的Agent 340
9.4.5 開發帶有上下文檢索功能的Agent 341
9.5 更細粒度地控制Agent的運行 343
9.5.1 分步可控地運行Agent 344
9.5.2 在Agent運行中增加人類交互 346
第10章 評估RAG應用 349
10.1 為什麽RAG應用需要評估 349
10.2 RAG應用的評估依據與指標 350
10.3 RAG應用的評估流程與方法 351
10.4 評估檢索質量 352
10.4.1 生成檢索評估數據集 352
10.4.2 運行評估檢索過程的程序 354
10.5 評估響應質量 356
10.5.1 生成響應評估數據集 356
10.5.2 單次響應評估 358
10.5.3 批量響應評估 360
10.6 基於自定義標準的評估 362
第11章 企業級RAG應用的常見優化策略 364
11.1 選擇合適的知識塊大小 364
11.1.1 為什麽知識塊大小很重要 364
11.1.2 評估知識塊大小 365
11.2 分離檢索階段的知識塊與生成階段的知識塊 369
11.2.1 為什麽需要分離 369
11.2.2 常見的分離策略及實現 369
11.3 優化對大文檔集知識庫的檢索 378
11.3.1 元數據過濾 + 向量檢索 378
11.3.2 摘要檢索+ 內容檢索 383
11.3.3 多文檔Agentic RAG 390
11.4 使用高級檢索方法 397
11.4.1 融合檢索 398
11.4.2 遞歸檢索 406
第12章 構建端到端的企業級RAG應用 429
12.1 對生產型RAG應用的主要考量 429
12.2 端到端的企業級RAG應用架構 430
12.2.1 數據存儲層 431
12.2.2 AI模型層 432
12.2.3 RAG工作流與API模塊 432
12.2.4 前端應用模塊 433
12.2.5 後台管理模塊 434
12.3 端到端的全棧RAG應用案例 436
12.3.1 簡單的全棧RAG查詢應用 436
12.3.2 基於多文檔Agent的端到端對話應用 455
第13章 新型RAG範式原理與實現 478
13.1 自糾錯RAG:C-RAG 478
13.1.1 C-RAG誕生的動機 478
13.1.2 C-RAG的原理 479
13.1.3 C-RAG的實現 480
13.2 自省式RAG:Self-RAG 485
13.2.1 Self-RAG誕生的動機 485
13.2.2 Self-RAG的原理 486
13.2.3 Self-RAG的實現 493
13.2.4 Self-RAG的優化 506
13.3 檢索樹RAG:RAPTOR 507
13.3.1 RAPTOR誕生的動機 507
13.3.2 RAPTOR的原理 508
13.3.3 RAPTOR的實現 510
【高級篇小結】 514