基于大模型的RAG應用開發(fā)與優(yōu)化——構(gòu)建企業(yè)級LLM應用
定 價:139 元
- 作者:嚴燦平
- 出版時間:2024/11/1
- ISBN:9787121490385
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP391
- 頁碼:524
- 紙張:
- 版次:01
- 開本:16開
本書是一本全面介紹基于大語言模型的RAG應用開發(fā)的專業(yè)圖書。本書共分為3篇:預備篇、基礎(chǔ)篇和高級篇。預備篇旨在幫助你建立起對大模型與RAG的基本認識,并引導你搭建起RAG應用開發(fā)的基礎(chǔ)環(huán)境;基礎(chǔ)篇聚焦于經(jīng)典RAG應用開發(fā)的核心要素與階段,介紹關(guān)鍵模塊的開發(fā)過程,剖析相關(guān)的技術(shù)原理,為后面的深入學習打下堅實的基礎(chǔ);高級篇聚焦于RAG應用開發(fā)的高階模塊與技巧,特別是在企業(yè)級RAG應用開發(fā)中的優(yōu)化策略與技術(shù)實現(xiàn),并探索了一些新型的RAG工作流與范式,旨在幫助你了解最新的RAG應用技術(shù)發(fā)展,掌握RAG應用的全方位開發(fā)能力。
嚴燦平,畢業(yè)于南京理工大學計算機系,南京大學工商管理碩士。先后就職于聯(lián)創(chuàng)(后與亞信科技合并)擔任軟件工程師與設(shè)計師,甲骨文中國(Oracle)擔任中國區(qū)企業(yè)架構(gòu)部首席架構(gòu)師,上;蹎栃畔⒖萍加邢薰緭魏匣锶思婕夹g(shù)總監(jiān),F(xiàn)為獨立IT咨詢顧問,公眾號“AI大模型應用實踐”主理人。擁有超過20年的企業(yè)軟件從業(yè)經(jīng)驗,專注于企業(yè)軟件架構(gòu)設(shè)計、互聯(lián)網(wǎng)時代傳統(tǒng)行業(yè)的IT轉(zhuǎn)型、人工智能與大數(shù)據(jù)技術(shù)在企業(yè)應用的創(chuàng)新等。曾擔任多項大型企業(yè)級軟件系統(tǒng)核心架構(gòu)師與咨詢師,參與包括中國移動、中國電信等通信行業(yè)客戶的核心業(yè)務運營支撐系統(tǒng)建設(shè)、智慧城市與政務行業(yè)互聯(lián)網(wǎng)轉(zhuǎn)型的IT咨詢與規(guī)劃。精通多種計算機軟件開發(fā)技術(shù)與IT架構(gòu)方法論,對移動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能在企業(yè)領(lǐng)域應用有深入的研究與實施經(jīng)驗。
預 備 篇
第1章 了解大模型與RAG 3
1.1 初識大模型 3
1.1.1 大模型時代:生成式AI應用的爆發(fā) 3
1.1.2 大模型應用的持續(xù)進化 4
1.1.3 大模型是無所不能的嗎 7
1.2 了解RAG 11
1.2.1 為什么需要RAG 11
1.2.2 一個簡單的RAG場景 12
1.3 RAG應用的技術(shù)架構(gòu) 14
1.3.1 RAG應用的經(jīng)典架構(gòu)與流程 14
1.3.2 RAG應用面臨的挑戰(zhàn) 17
1.3.3 RAG應用架構(gòu)的演進 18
1.4 關(guān)于RAG的兩個話題 20
1.4.1 RAG與微調(diào)的選擇 21
1.4.2 RAG與具有理解超長上下文能力的大模型 24
第2章 RAG應用開發(fā)環(huán)境搭建 27
2.1 開發(fā)RAG應用的兩種方式 27
2.1.1 使用低代碼開發(fā)平臺 27
2.1.2 使用大模型應用開發(fā)框架 29
2.2 RAG應用開發(fā)環(huán)境準備 33
2.2.1 硬件環(huán)境建議 33
2.2.2 基礎(chǔ)大模型 34
2.2.3 嵌入模型 41
2.2.4 Python虛擬運行環(huán)境 44
2.2.5 Python IDE與開發(fā)插件 45
2.2.6 向量庫 47
2.2.7 LlamaIndex框架 51
2.3 關(guān)于本書開發(fā)環(huán)境的約定 51
【預備篇小結(jié)】 52
基 礎(chǔ) 篇
第3章 初識RAG應用開發(fā) 55
3.1 開發(fā)一個最簡單的RAG應用 55
3.1.1 使用原生代碼開發(fā) 56
3.1.2 使用LlamaIndex框架開發(fā) 64
3.1.3 使用LangChain框架開發(fā) 68
3.2 如何跟蹤與調(diào)試RAG應用 70
3.2.1 借助LlamaDebugHandler 70
3.2.2 借助第三方的跟蹤與調(diào)試平臺 73
3.3 準備:基于LlamaIndex框架的RAG應用開發(fā)核心組件 77
第4章 模型與Prompt 78
4.1 大模型 78
4.1.1 大模型在RAG應用中的作用 79
4.1.2 大模型組件的統(tǒng)一接口 80
4.1.3 大模型組件的單獨使用 82
4.1.4 大模型組件的集成使用 83
4.1.5 了解與設(shè)置大模型的參數(shù) 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 了解與設(shè)置嵌入模型的參數(shù) 97
4.3.6 自定義嵌入模型組件 98
第5章 數(shù)據(jù)加載與分割 100
5.1 理解兩個概念:Document與Node 100
5.1.1 什么是Document與Node 100
5.1.2 深入理解Document與Node 102
5.1.3 深入理解Node對象的元數(shù)據(jù) 103
5.1.4 生成Document對象 106
5.1.5 生成Node對象 107
5.1.6 元數(shù)據(jù)的生成與抽取 111
5.1.7 初步了解IndexNode類型 115
5.2 數(shù)據(jù)加載 116
5.2.1 從本地目錄中加載 117
5.2.2 從網(wǎng)絡中加載數(shù)據(jù) 123
5.3 數(shù)據(jù)分割 129
5.3.1 如何使用數(shù)據(jù)分割器 129
5.3.2 常見的數(shù)據(jù)分割器 131
5.4 數(shù)據(jù)攝取管道 145
5.4.1 什么是數(shù)據(jù)攝取管道 145
5.4.2 用于數(shù)據(jù)攝取管道的轉(zhuǎn)換器 147
5.4.3 自定義轉(zhuǎn)換器 149
5.4.4 使用數(shù)據(jù)攝取管道 150
5.5 完整認識數(shù)據(jù)加載階段 155
第6章 數(shù)據(jù)嵌入與索引 156
6.1 理解嵌入與向量 156
6.1.1 直接用模型生成向量 157
6.1.2 借助轉(zhuǎn)換器生成向量 157
6.2 向量存儲 158
6.2.1 簡單向量存儲 159
6.2.2 第三方向量存儲 161
6.3 向量存儲索引 164
6.3.1 用向量存儲構(gòu)造向量存儲索引對象 165
6.3.2 用Node列表構(gòu)造向量存儲索引對象 166
6.3.3 用文檔直接構(gòu)造向量存儲索引對象 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 關(guān)鍵詞表索引 187
第7章 檢索、響應生成與RAG引擎 190
7.1 檢索器 191
7.1.1 快速構(gòu)造檢索器 191
7.1.2 理解檢索模式與檢索參數(shù) 192
7.1.3 初步認識遞歸檢索 197
7.2 響應生成器 199
7.2.1 構(gòu)造響應生成器 200
7.2.2 響應生成模式 201
7.2.3 響應生成器的參數(shù) 210
7.2.4 實現(xiàn)自定義的響應生成器 212
7.3 RAG引擎:查詢引擎 214
7.3.1 構(gòu)造內(nèi)置類型的查詢引擎的兩種方法 214
7.3.2 深入理解查詢引擎的內(nèi)部結(jié)構(gòu)和運行原理 217
7.3.3 自定義查詢引擎 218
7.4 RAG引擎:對話引擎 221
7.4.1 對話引擎的兩種構(gòu)造方法 221
7.4.2 深入理解對話引擎的內(nèi)部運行和運行原理 224
7.4.3 理解不同的對話模式 227
7.5 結(jié)構(gòu)化輸出 239
7.5.1 使用output_cls參數(shù) 240
7.5.2 使用輸出解析器 241
【基礎(chǔ)篇小結(jié)】 243
高 級 篇
第8章 RAG引擎高級開發(fā) 247
8.1 檢索前查詢轉(zhuǎn)換 247
8.1.1 簡單查詢轉(zhuǎn)換 248
8.1.2 HyDE查詢轉(zhuǎn)換 249
8.1.3 多步查詢轉(zhuǎn)換 251
8.1.4 子問題查詢轉(zhuǎn)換 254
8.2 檢索后處理器 259
8.2.1 使用節(jié)點后處理器 259
8.2.2 實現(xiàn)自定義的節(jié)點后處理器 260
8.2.3 常見的預定義的節(jié)點后處理器 261
8.2.4 Rerank節(jié)點后處理器 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 多模態(tài)文檔處理 286
8.5.1 多模態(tài)文檔處理架構(gòu) 286
8.5.2 使用LlamaParse解析文檔 288
8.5.3 多模態(tài)文檔中的表格處理 294
8.5.4 多模態(tài)大模型的基礎(chǔ)應用 297
8.5.5 多模態(tài)文檔中的圖片處理 303
8.6 查詢管道:編排基于Graph的RAG工作流 308
8.6.1 理解查詢管道 309
8.6.2 查詢管道支持的兩種使用方式 310
8.6.3 深入理解查詢管道的內(nèi)部原理 313
8.6.4 實現(xiàn)并插入自定義的查詢組件 315
第9章 開發(fā)Data Agent 321
9.1 初步認識Data Agent 322
9.2 構(gòu)造與使用Agent的工具 323
9.2.1 深入了解工具類型 324
9.2.2 函數(shù)工具 325
9.2.3 查詢引擎工具 326
9.2.4 檢索工具 327
9.2.5 查詢計劃工具 328
9.2.6 按需加載工具 330
9.3 基于函數(shù)調(diào)用功能直接開發(fā)Agent 331
9.4 用框架組件開發(fā)Agent 335
9.4.1 使用OpenAIAgent 335
9.4.2 使用ReActAgent 336
9.4.3 使用底層API開發(fā)Agent 338
9.4.4 開發(fā)帶有工具檢索功能的Agent 340
9.4.5 開發(fā)帶有上下文檢索功能的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應用的評估依據(jù)與指標 350
10.3 RAG應用的評估流程與方法 351
10.4 評估檢索質(zhì)量 352
10.4.1 生成檢索評估數(shù)據(jù)集 352
10.4.2 運行評估檢索過程的程序 354
10.5 評估響應質(zhì)量 356
10.5.1 生成響應評估數(shù)據(jù)集 356
10.5.2 單次響應評估 358
10.5.3 批量響應評估 360
10.6 基于自定義標準的評估 362
第11章 企業(yè)級RAG應用的常見優(yōu)化策略 364
11.1 選擇合適的知識塊大小 364
11.1.1 為什么知識塊大小很重要 364
11.1.2 評估知識塊大小 365
11.2 分離檢索階段的知識塊與生成階段的知識塊 369
11.2.1 為什么需要分離 369
11.2.2 常見的分離策略及實現(xiàn) 369
11.3 優(yōu)化對大文檔集知識庫的檢索 378
11.3.1 元數(shù)據(jù)過濾 + 向量檢索 378
11.3.2 摘要檢索+ 內(nèi)容檢索 383
11.3.3 多文檔Agentic RAG 390
11.4 使用高級檢索方法 397
11.4.1 融合檢索 398
11.4.2 遞歸檢索 406
第12章 構(gòu)建端到端的企業(yè)級RAG應用 429
12.1 對生產(chǎn)型RAG應用的主要考量 429
12.2 端到端的企業(yè)級RAG應用架構(gòu) 430
12.2.1 數(shù)據(jù)存儲層 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范式原理與實現(xiàn) 478
13.1 自糾錯RAG:C-RAG 478
13.1.1 C-RAG誕生的動機 478
13.1.2 C-RAG的原理 479
13.1.3 C-RAG的實現(xiàn) 480
13.2 自省式RAG:Self-RAG 485
13.2.1 Self-RAG誕生的動機 485
13.2.2 Self-RAG的原理 486
13.2.3 Self-RAG的實現(xiàn) 493
13.2.4 Self-RAG的優(yōu)化 506
13.3 檢索樹RAG:RAPTOR 507
13.3.1 RAPTOR誕生的動機 507
13.3.2 RAPTOR的原理 508
13.3.3 RAPTOR的實現(xiàn) 510
【高級篇小結(jié)】 514