動手構建大模型

相關主題

商品描述

本書采用創新且實用的教學策略,巧妙融合理論基礎與實踐應用,深入剖析自然語言處理(Natural Language Processing,NLP)領域的新進展,以及大語言模型(Large Language Model,LLM)的原理。書中不僅系統闡述了?LLM?的理論基礎,還通過實際項目案例展示了如何將這些模型應用於構建RAG系統。本書遵循由淺入深的路徑,從LLM的基礎知識入手,詳細闡釋了模型的訓練流程,並深入探討了如何利用提示技術與模型進行高效交互。書中還重點介紹了兩個在業界得到廣泛認可的框架—LlamaIndex和LangChain,它們是開發RAG應用的強大工具。書中的項目案例不僅為讀者提供了寶貴的實踐經驗,也能夠加深讀者對相關概念的理解和應用。此外,書中進一步探討了包括智能體和微調在內的高級技術,這些技術能夠顯著提升問答系統的性能。

作者簡介

路易斯-弗朗索瓦·布沙爾(Louis-Fran?ois Bouchard)

Towards AI公司聯合創始人兼首席技術官(CTO),網名“What's AI”。他致力於普及AI知識並解釋AI技術原理,讓大眾能夠輕松理解AI。在深切體會到初創企業與學術界之間存在的巨大技能差距後,他從蒙特利爾學習算法研究所退學,放棄繼續攻讀博士學位,全身心投入YouTube科普內容創作和Towards AI公司的相關工作之中。

路易·彼得斯(Louie Peters)

Towards AI公司聯合創始人兼首席執行官(CEO)。他致力於開發普惠化AI職業資源,推動大眾高效進入AI領域。同時,依托帝國理工學院物理學背景及摩根大通集團的投資研究經驗,他尤為關註AI技術的顛覆性影響、經濟效應,以及持續技術突破對現實場景應用的賦能作用。

作者簡介

目錄大綱

第 1章 LLM簡介 1

1.1 語言模型簡史 1

1.2 什麼是LLM 2

1.3 LLM的組成 2

1.3.1 Transformer 2

1.3.2 語言建模 3

1.3.3 分詞 3

1.3.4 嵌入 4

1.3.5 訓練/微調 5

1.3.6 預測 5

1.3.7 上下文窗口 5

1.3.8 規模法則 6

1.3.9 提示詞 7

1.3.10 LLM中的湧現能力及測試基準 7

1.3.11 LLM簡史 9

1.3.12 項目:使用LLM(GPT-3.5 API)進行翻譯 13

1.3.13 項目:通過小樣本學習來控制LLM的輸出 14

1.4 本章小結 16

第 2章 LLM架構和概況 17

2.1 理解Transformer 17

2.1.1 論文“Attention Is All You Need” 17

2.1.2 架構實戰 21

2.2 Transformer架構的設計選擇 24

2.2.1 編碼器-解碼器架構 24

2.2.2 僅編碼器架構 26

2.2.3 僅解碼器架構 28

2.2.4 Transformer架構的優化技術 30

2.3 生成式預訓練Transformer(GPT)架構 31

2.3.1 掩碼自註意力 31

2.3.2 GPT的訓練過程 31

2.3.3 MinGPT 32

2.4 LMM簡介 33

2.4.1 常見架構和訓練目標 33

2.4.2 開源版本的Flamingo 34

2.4.3 指令微調的LMM 35

2.4.4 探索LLaVA—一個指令微調的LMM 36

2.4.5 超越視覺和語言 36

2.5 專有模型vs.開放模型vs.開源模型 37

2.5.1 Cohere LLM 37

2.5.2 OpenAI的GPT-3.5 turbo、GPT-4o和GPT-4o mini 38

2.5.3 Anthropic的Claude 3模型 38

2.5.4 Google DeepMind的Gemini 39

2.5.5 Meta的LLaMA 2 39

2.5.6 Mistral LLM 40

2.6 LLM的應用和示例 41

2.6.1 商業與職業 41

2.6.2 法律與合規 42

2.6.3 醫療保健和健康 42

2.6.4 教育與研究 43

2.6.5 媒體與娛樂 43

2.6.6 技術與軟件 43

2.6.7 個人發展與生活方式 44

2.6.8 金融與投資 45

2.6.9 運動與健康 45

2.6.10 其他 46

2.6.11 使用LLM的風險和倫理考量 46

2.7 本章小結 46

第3章 LLM實踐 48

3.1 理解幻覺和偏見 48

3.1.1 通過控制輸出減輕LLM的幻覺 49

3.1.2 解碼方法 51

3.1.3 微調LLM 52

3.2 LLM性能評估 54

3.2.1 目標函數和評估指標 54

3.2.2 內在指標:困惑度 55

3.2.3 外部指標:基準測試 56

3.3 本章小結 58

第4章 提示技術簡介 59

4.1 提示詞和提示工程 59

4.2 提示技術 63

4.2.1 零樣本提示 63

4.2.2 上下文學習和小樣本提示 63

4.2.3 角色提示 64

4.2.4 鏈式提示 65

4.2.5 思維鏈提示 65

4.3 提示註入與安全 66

4.4 本章小結 68

第5章 RAG 70

5.1 為什麼使用RAG 70

5.2 嵌入向量 71

5.3 向量數據庫與向量存儲 72

5.4 從頭構建一個RAG管道 73

5.4.1 數據預處理 73

5.4.2 生成嵌入向量 75

5.4.3 查找相關文本塊 76

5.4.4 測試余弦相似度 77

5.4.5 相似度計算實戰 77

5.4.6 提示詞增強 79

5.5 本章小結 82

第6章 LangChain和LlamaIndex簡介 83

6.1 LLM框架 83

6.2 LangChain介紹 83

6.3 項目1:使用LangChain構建LLM驅動的應用 86

6.3.1 提示模板 86

6.3.2 摘要鏈示例 87

6.3.3 問答鏈示例 88

6.4 項目2:構建新聞文章摘要器 89

6.5 LlamaIndex介紹 94

6.5.1 數據連接器 94

6.5.2 節點 95

6.5.3 索引 96

6.5.4 查詢引擎 98

6.5.5 路由器 98

6.5.6 保存和加載本地索引 99

6.6 LangChain、LlamaIndex與OpenAI Assistants 99

6.7 本章小結 101

第7章 使用LangChain進行提示 102

7.1 LangChain提示模板 102

7.2 小樣本提示和樣例選擇器 107

7.2.1 人類與AI的信息交互 108

7.2.2 小樣本提示 108

7.2.3 樣例選擇器 110

7.3 LangChain鏈 114

7.3.1 使用LLMChain生成文本 114

7.3.2 在會話鏈中增加記憶 115

7.3.3 使用順序鏈連接鏈 116

7.3.4 調試鏈 116

7.3.5 定制鏈 117

7.4 項目1:使用輸出解析器管理輸出 118

7.5 項目2:新聞文章摘要器的改進 127

7.6 項目3:基於文本數據創建知識圖譜—揭示隱藏的連接 133

7.6.1 使用LangChain構建知識圖譜 134

7.6.2 知識圖譜可視化 135

7.7 本章小結 137

第8章 索引、檢索與數據預處理 138

8.1 LangChain的索引和檢索器 138

8.2 數據攝取 141

8.2.1 從PDF中加載數據 142

8.2.2 從網頁中加載數據 142

8.2.3 從Google Drive 中加載數據 144

8.3 文本切分器 144

8.3.1 基於字符長度的文本切分 145

8.3.2 基於邏輯終點的文本切分 146

8.3.3 基於NLTK的其他語種切分 148

8.3.4 基於SpaCy的其他語種切分 148

8.3.5 Markdown格式的文本切分 149

8.3.6 基於Token的文本切分 151

8.4 相似性搜索與嵌入向量 152

8.4.1 開源嵌入模型 153

8.4.2 Cohere嵌入 154

8.5 項目1:客服問答聊天機器人 156

8.5.1 工作流程 157

8.5.2 文檔切分及向量化 158

8.5.3 基於策略設計提示詞 159

8.5.4 基於LLM生成回答 160

8.6 項目2:基於Whisper和LangChain的YouTube視頻摘要器 161

8.6.1 使用Whisper進行音頻轉錄 163

8.6.2 切分文檔並生成摘要 163

8.6.3 將轉錄內容添加到Deep Lake 166

8.7 項目3:為你的知識庫創建語音助手 169

8.7.1 從Hugging Face Hub獲取內容 170

8.7.2 加載和切分文本 171

8.7.3 嵌入向量以及Deep Lake庫 172

8.7.4 創建語音助手 173

8.7.5 基於Streamlit構建交互界面 175

8.8 通過自批判鏈防止輸出不良內容 177

8.9 在客服問答聊天機器人中防止輸出不良內容 181

8.10 本章小結 185

第9章 高級RAG 187

9.1 從概念驗證到產品:RAG系統的挑戰 187

9.2 使用LlamaIndex的高級RAG技術 187

9.2.1 嵌入模型與LLM微調 189

9.2.2 RAG監控與評估 189

9.2.3 混合檢索與嵌入向量檢索 189

9.3 LlamaIndex查詢 189

9.3.1 查詢構建 190

9.3.2 查詢擴展 190

9.3.3 查詢轉換 191

9.3.4 使用查詢引擎來回答問題 191

9.3.5 重排序 195

9.3.6 遞歸檢索與從小到大的檢索 197

9.4 RAG指標與評估 198

9.4.1 RAG與LLM評估指標 198

9.4.2 檢索評估指標 200

9.4.3 基於社區的評估工具 202

9.4.4 自定義RAG評估工作流 205

9.5 LangChain的LangSmith與LangChain Hub 210

9.6 本章小結 214

第 10章 智能體 215

10.1 什麼是智能體:大模型作為推理引擎 215

10.2 AutoGPT和BabyAGI概述 220

10.2.1 AutoGPT 220

10.2.2 使用AutoGPT與LangChain 221

10.2.3 BabyAGI 227

10.2.4 使用BabyAGI與LangChain 229

10.3 LangChain中的智能體仿真項目 232

10.3.1 CAMEL項目 233

10.3.2 生成式智能體 234

10.4 項目1:構建創建分析報告的智能體 235

10.5 項目2:使用LlamaIndex查詢和匯總數據庫 242

10.5.1 第 1步:定義數據源並創建向量存儲索引 242

10.5.2 第 2步:配置查詢引擎 244

10.5.3 第3步:開發會話智能體 245

10.5.4 第4步:為智能體添加自定義函數 246

10.6 項目3:使用OpenAI Assistants構建智能體 249

10.7 項目4:LangChain OpenGPTs 251

10.8 項目5:對PDF中的財務信息進行多模態分析 253

10.8.1 數據提取 253

10.8.2 存儲在Deep Lake中 257

10.8.3 微調嵌入空間 259

10.8.4 聊天機器人實戰 262

10.9 本章小結 264

第 11章 微調 265

11.1 理解微調 265

11.2 LoRA 266

11.3 項目1:使用LoRA進行SFT 267

11.3.1 加載數據集 268

11.3.2 設置LoRA配置和訓練超參數 270

11.3.3 合並LoRA和OPT參數 272

11.3.4 推理 274

11.4 項目2:使用SFT和LoRA進行金融情感分析 276

11.4.1 加載數據集 277

11.4.2 初始化模型和訓練器 278

11.4.3 合並LoRA和OPT 280

11.4.4 推理 281

11.5 項目3:用醫療數據微調Cohere LLM 283

11.5.1 Cohere API 283

11.5.2 數據集 284

11.5.3 微調 287

11.6 RLHF 290

11.7 項目4:使用RLHF改進LLM 292

11.7.1 SFT 293

11.7.2 訓練獎勵模型 297

11.7.3 強化學習 300

11.7.4 推理 305

11.8 本章小結 307

第 12章 部署與優化 309

12.1 模型蒸餾和教師模型 309

12.2 LLM部署優化:量化、剪枝和投機解碼 312

12.2.1 模型量化 313

12.2.2 量化LLM 315

12.2.3 模型剪枝 316

12.2.4 投機解碼 318

12.3 項目:使用谷歌雲平臺上的CPU部署量化模型 319

12.3.1 量化模型 320

12.3.2 使用量化模型進行推理 322

12.3.3 使用谷歌雲平臺上的計算引擎部署量化模型 323

12.4 在雲服務提供商上部署開源LLM 325

12.5 本章小結 326

總結 328