基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化——構(gòu)建企業(yè)級LLM應(yīng)用
定 價(jià):139 元
- 作者:嚴(yán)燦平
- 出版時間:2024/11/1
- ISBN:9787121490385
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP391
- 頁碼:524
- 紙張:
- 版次:01
- 開本:16開
本書是一本全面介紹基于大語言模型的RAG應(yīng)用開發(fā)的專業(yè)圖書。本書共分為3篇:預(yù)備篇、基礎(chǔ)篇和高級篇。預(yù)備篇旨在幫助你建立起對大模型與RAG的基本認(rèn)識,并引導(dǎo)你搭建起RAG應(yīng)用開發(fā)的基礎(chǔ)環(huán)境;基礎(chǔ)篇聚焦于經(jīng)典RAG應(yīng)用開發(fā)的核心要素與階段,介紹關(guān)鍵模塊的開發(fā)過程,剖析相關(guān)的技術(shù)原理,為后面的深入學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ);高級篇聚焦于RAG應(yīng)用開發(fā)的高階模塊與技巧,特別是在企業(yè)級RAG應(yīng)用開發(fā)中的優(yōu)化策略與技術(shù)實(shí)現(xiàn),并探索了一些新型的RAG工作流與范式,旨在幫助你了解最新的RAG應(yīng)用技術(shù)發(fā)展,掌握RAG應(yīng)用的全方位開發(fā)能力。
嚴(yán)燦平,畢業(yè)于南京理工大學(xué)計(jì)算機(jī)系,南京大學(xué)工商管理碩士。先后就職于聯(lián)創(chuàng)(后與亞信科技合并)擔(dān)任軟件工程師與設(shè)計(jì)師,甲骨文中國(Oracle)擔(dān)任中國區(qū)企業(yè)架構(gòu)部首席架構(gòu)師,上;蹎栃畔⒖萍加邢薰緭(dān)任合伙人兼技術(shù)總監(jiān),F(xiàn)為獨(dú)立IT咨詢顧問,公眾號“AI大模型應(yīng)用實(shí)踐”主理人。擁有超過20年的企業(yè)軟件從業(yè)經(jīng)驗(yàn),專注于企業(yè)軟件架構(gòu)設(shè)計(jì)、互聯(lián)網(wǎng)時代傳統(tǒng)行業(yè)的IT轉(zhuǎn)型、人工智能與大數(shù)據(jù)技術(shù)在企業(yè)應(yīng)用的創(chuàng)新等。曾擔(dān)任多項(xiàng)大型企業(yè)級軟件系統(tǒng)核心架構(gòu)師與咨詢師,參與包括中國移動、中國電信等通信行業(yè)客戶的核心業(yè)務(wù)運(yùn)營支撐系統(tǒng)建設(shè)、智慧城市與政務(wù)行業(yè)互聯(lián)網(wǎng)轉(zhuǎn)型的IT咨詢與規(guī)劃。精通多種計(jì)算機(jī)軟件開發(fā)技術(shù)與IT架構(gòu)方法論,對移動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能在企業(yè)領(lǐng)域應(yīng)用有深入的研究與實(shí)施經(jīng)驗(yàn)。
預(yù) 備 篇
第1章 了解大模型與RAG 3
1.1 初識大模型 3
1.1.1 大模型時代:生成式AI應(yīng)用的爆發(fā) 3
1.1.2 大模型應(yīng)用的持續(xù)進(jìn)化 4
1.1.3 大模型是無所不能的嗎 7
1.2 了解RAG 11
1.2.1 為什么需要RAG 11
1.2.2 一個簡單的RAG場景 12
1.3 RAG應(yīng)用的技術(shù)架構(gòu) 14
1.3.1 RAG應(yīng)用的經(jīng)典架構(gòu)與流程 14
1.3.2 RAG應(yīng)用面臨的挑戰(zhàn) 17
1.3.3 RAG應(yīng)用架構(gòu)的演進(jìn) 18
1.4 關(guān)于RAG的兩個話題 20
1.4.1 RAG與微調(diào)的選擇 21
1.4.2 RAG與具有理解超長上下文能力的大模型 24
第2章 RAG應(yīng)用開發(fā)環(huán)境搭建 27
2.1 開發(fā)RAG應(yīng)用的兩種方式 27
2.1.1 使用低代碼開發(fā)平臺 27
2.1.2 使用大模型應(yīng)用開發(fā)框架 29
2.2 RAG應(yīng)用開發(fā)環(huán)境準(zhǔn)備 33
2.2.1 硬件環(huán)境建議 33
2.2.2 基礎(chǔ)大模型 34
2.2.3 嵌入模型 41
2.2.4 Python虛擬運(yùn)行環(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
【預(yù)備篇小結(jié)】 52
基 礎(chǔ) 篇
第3章 初識RAG應(yīng)用開發(fā) 55
3.1 開發(fā)一個最簡單的RAG應(yīng)用 55
3.1.1 使用原生代碼開發(fā) 56
3.1.2 使用LlamaIndex框架開發(fā) 64
3.1.3 使用LangChain框架開發(fā) 68
3.2 如何跟蹤與調(diào)試RAG應(yīng)用 70
3.2.1 借助LlamaDebugHandler 70
3.2.2 借助第三方的跟蹤與調(diào)試平臺 73
3.3 準(zhǔn)備:基于LlamaIndex框架的RAG應(yīng)用開發(fā)核心組件 77
第4章 模型與Prompt 78
4.1 大模型 78
4.1.1 大模型在RAG應(yīng)用中的作用 79
4.1.2 大模型組件的統(tǒng)一接口 80
4.1.3 大模型組件的單獨(dú)使用 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 更改默認(rèn)的Prompt模板 88
4.2.3 更改Prompt模板的變量 91
4.3 嵌入模型 92
4.3.1 嵌入模型在RAG應(yīng)用中的作用 92
4.3.2 嵌入模型組件的接口 93
4.3.3 嵌入模型組件的單獨(dú)使用 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)絡(luò)中加載數(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 完整認(rèn)識數(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章 檢索、響應(yīng)生成與RAG引擎 190
7.1 檢索器 191
7.1.1 快速構(gòu)造檢索器 191
7.1.2 理解檢索模式與檢索參數(shù) 192
7.1.3 初步認(rèn)識遞歸檢索 197
7.2 響應(yīng)生成器 199
7.2.1 構(gòu)造響應(yīng)生成器 200
7.2.2 響應(yīng)生成模式 201
7.2.3 響應(yīng)生成器的參數(shù) 210
7.2.4 實(shí)現(xiàn)自定義的響應(yīng)生成器 212
7.3 RAG引擎:查詢引擎 214
7.3.1 構(gòu)造內(nèi)置類型的查詢引擎的兩種方法 214
7.3.2 深入理解查詢引擎的內(nèi)部結(jié)構(gòu)和運(yùn)行原理 217
7.3.3 自定義查詢引擎 218
7.4 RAG引擎:對話引擎 221
7.4.1 對話引擎的兩種構(gòu)造方法 221
7.4.2 深入理解對話引擎的內(nèi)部運(yùn)行和運(yùn)行原理 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é)點(diǎn)后處理器 259
8.2.2 實(shí)現(xiàn)自定義的節(jié)點(diǎn)后處理器 260
8.2.3 常見的預(yù)定義的節(jié)點(diǎn)后處理器 261
8.2.4 Rerank節(jié)點(diǎn)后處理器 266
8.3 語義路由 272
8.3.1 了解語義路由 272
8.3.2 帶有路由功能的查詢引擎 274
8.3.3 帶有路由功能的檢索器 276
8.3.4 使用獨(dú)立的選擇器 277
8.3.5 可多選的路由查詢引擎 278
8.4 SQL查詢引擎 280
8.4.1 使用NLSQLTableQueryEngine組件 281
8.4.2 基于實(shí)時表檢索的查詢引擎 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ǔ)應(yīng)用 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 實(shí)現(xiàn)并插入自定義的查詢組件 315
第9章 開發(fā)Data Agent 321
9.1 初步認(rèn)識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 查詢計(jì)劃工具 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 更細(xì)粒度地控制Agent的運(yùn)行 343
9.5.1 分步可控地運(yùn)行Agent 344
9.5.2 在Agent運(yùn)行中增加人類交互 346
第10章 評估RAG應(yīng)用 349
10.1 為什么RAG應(yīng)用需要評估 349
10.2 RAG應(yīng)用的評估依據(jù)與指標(biāo) 350
10.3 RAG應(yīng)用的評估流程與方法 351
10.4 評估檢索質(zhì)量 352
10.4.1 生成檢索評估數(shù)據(jù)集 352
10.4.2 運(yùn)行評估檢索過程的程序 354
10.5 評估響應(yīng)質(zhì)量 356
10.5.1 生成響應(yīng)評估數(shù)據(jù)集 356
10.5.2 單次響應(yīng)評估 358
10.5.3 批量響應(yīng)評估 360
10.6 基于自定義標(biāo)準(zhǔn)的評估 362
第11章 企業(yè)級RAG應(yīng)用的常見優(yōu)化策略 364
11.1 選擇合適的知識塊大小 364
11.1.1 為什么知識塊大小很重要 364
11.1.2 評估知識塊大小 365
11.2 分離檢索階段的知識塊與生成階段的知識塊 369
11.2.1 為什么需要分離 369
11.2.2 常見的分離策略及實(shí)現(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應(yīng)用 429
12.1 對生產(chǎn)型RAG應(yīng)用的主要考量 429
12.2 端到端的企業(yè)級RAG應(yīng)用架構(gòu) 430
12.2.1 數(shù)據(jù)存儲層 431
12.2.2 AI模型層 432
12.2.3 RAG工作流與API模塊 432
12.2.4 前端應(yīng)用模塊 433
12.2.5 后臺管理模塊 434
12.3 端到端的全棧RAG應(yīng)用案例 436
12.3.1 簡單的全棧RAG查詢應(yīng)用 436
12.3.2 基于多文檔Agent的端到端對話應(yīng)用 455
第13章 新型RAG范式原理與實(shí)現(xiàn) 478
13.1 自糾錯RAG:C-RAG 478
13.1.1 C-RAG誕生的動機(jī) 478
13.1.2 C-RAG的原理 479
13.1.3 C-RAG的實(shí)現(xiàn) 480
13.2 自省式RAG:Self-RAG 485
13.2.1 Self-RAG誕生的動機(jī) 485
13.2.2 Self-RAG的原理 486
13.2.3 Self-RAG的實(shí)現(xiàn) 493
13.2.4 Self-RAG的優(yōu)化 506
13.3 檢索樹RAG:RAPTOR 507
13.3.1 RAPTOR誕生的動機(jī) 507
13.3.2 RAPTOR的原理 508
13.3.3 RAPTOR的實(shí)現(xiàn) 510
【高級篇小結(jié)】 514