LangChain實戰(zhàn)派:大語言模型+LangChain+向量數(shù)據(jù)庫
定 價:89 元
- 作者:龍中華
- 出版時間:2024/11/1
- ISBN:9787121490682
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:276
- 紙張:
- 版次:01
- 開本:16開
本書采用“知識點+實戰(zhàn)”的編寫方式,共包含28個基礎(chǔ)實戰(zhàn)和1個綜合性實戰(zhàn),旨在深入解析大語言模型應(yīng)用開發(fā)的核心知識。每個知識點的介紹均遵循清晰的邏輯脈絡(luò):介紹概念、闡述應(yīng)用原理、說明使用方法、探討選擇該方法的理由、提供優(yōu)化建議,并且分享最佳實踐案例。本書適合對LangChain感興趣的讀者閱讀。
▌入門篇
第1章 認識LLM 應(yīng)用開發(fā)
▲1.1 LLM /2
1.1.1 LLM 的分類 /2
1.1.2 發(fā)展歷程 /3
1.1.3 應(yīng)用領(lǐng)域 /4
1.1.4 面臨的挑戰(zhàn) /4
▲1.2 LLM 應(yīng)用開發(fā) /5
1.2.1 LLM 應(yīng)用開發(fā)前景 /6
1.2.2 LLM 應(yīng)用開發(fā)的技術(shù)方向 /7
▲1.3 LangChain /8
1.3.1 認識LangChain /8
1.3.2 LangChain 的價值 /9
1.3.3 其他開發(fā)框架 /10
-
第2章 搭建環(huán)境并實現(xiàn)簡單的應(yīng)用
▲2.1 搭建環(huán)境 /12
2.1.1 搭建開發(fā)環(huán)境 /12
2.1.2 搭建LLM 環(huán)境 /13
▲2.2 【實戰(zhàn)】實現(xiàn)問答應(yīng)用——基于基礎(chǔ)模型 /14
▲2.3 【實戰(zhàn)】實現(xiàn)翻譯應(yīng)用——基于聊天模型和指令模板 /15
-
▌基礎(chǔ)篇
-
第3章 LangChain 基礎(chǔ)
▲3.1 認識LangChain /19
3.1.1 LangChain 的架構(gòu) /19
3.1.2 LangChain 的庫 /19
3.1.3 LangChain 的模塊 /0
▲3.2 LangChain 的調(diào)試 /20
3.2.1 跟蹤工具LangSmith /21
3.2.2 【實戰(zhàn)】調(diào)試LLM 應(yīng)用 /1
▲3.3 LangChain 的回退 /24
3.3.1 【實戰(zhàn)】處理LLM 調(diào)用API 的錯誤 /25
3.3.2 【實戰(zhàn)】處理序列的回退 /27
3.3.3 【實戰(zhàn)】處理長輸入 /9
3.3.4 回退到更好的模型 /30
▲3.4 LangChain 的回調(diào) /31
3.4.1 認識回調(diào)處理程序 /31
3.4.2 認識異步回調(diào) /32
3.4.3 認識標簽 /34
3.4.4 【實戰(zhàn)】自定義回調(diào) /34
3.4.5 【實戰(zhàn)】使用回調(diào)記錄日志 /35
3.4.6 【實戰(zhàn)】處理多個回調(diào) /35
▲3.5 隱私保護 /37
-
第4章 管理LLM 的接口和解析輸出
▲4.1 認識LLM 的接口 /40
4.1.1 認識基礎(chǔ)模型的接口 /40
4.1.2 認識聊天模型的接口 /42
4.1.3 使用異步API /44
4.1.4 認識流式處理 /45
4.1.5 跟蹤令牌的使用情況 /46
4.1.6 認識緩存 /49
4.1.7 【實戰(zhàn)】緩存LLM 生成的內(nèi)容 /49
4.1.8 序列化LLM 配置 /51
▲4.2 認識OpenAI 適配器 /53
▲4.3 認識ModelLaboratory /55
▲4.4 認識輸出解析器 /56
4.4.1 列表解析器 /57
4.4.2 日期時間解析器 /58
4.4.3 枚舉解析器 /58
4.4.4 JSON 解析器 /59
4.4.5 輸出修正解析器 /61
4.4.6 重試解析器 /61
4.4.7 XML 解析器 /63
▲4.5 【實戰(zhàn)】自定義輸出解析器 /66
4.5.1 在LCEL 中使用RunnableGenerator 類 /66
4.5.2 繼承解析器的基類來自定義輸出解析器 /67
-
第5章 指令——激活LLM 能力的鑰匙
▲5.1 認識指令 /72
5.1.1 指令的概念 /72
5.1.2 指令的構(gòu)成要素 /73
▲5.2 編寫指令的18 個策略 /73
▲5.3 防御惡意攻擊 /81
-
第6章 指令模板和示例選擇器
▲6.1 指令模板 /84
6.1.1 認識指令模板 /84
6.1.2 聊天消息指令模板的類型 /86
▲6.2 指令模板的應(yīng)用 /88
6.2.1 格式化指令模板 /88
6.2.2 自定義指令模板 /90
6.2.3 驗證指令模板 /90
6.2.4 序列化指令模板 /91
6.2.5 分隔指令模板 /92
6.2.6 使用指令管道組合指令 /93
6.2.7 【實戰(zhàn)】組合指令 /95
▲6.3 示例選擇器 /97
▲6.4 少樣本指令模板 /97
6.4.1 認識少樣本指令模板 /97
6.4.2 在聊天模型中使用少樣本指令模板 /103
-
第7章 使用外部數(shù)據(jù)
▲7.1 文檔加載器. /108
7.1.1 認識文檔加載器 /108
7.1.2 【實戰(zhàn)】使用文檔加載器 /109
▲7.2 文本拆分器. /114
7.2.1 認識文本拆分器 /114
7.2.2 拆分文本和代碼 /116
▲7.3 檢索器 /118
▲7.4 索引 /121
-
第8章 集成向量數(shù)據(jù)庫,實現(xiàn)對向量的操作
▲8.1 向量數(shù)據(jù)庫 /12 3
8.1.1 認識向量數(shù)據(jù)庫 /12 3
8.1.2 向量數(shù)據(jù)庫的發(fā)展機遇 /12 5
8.1.3 常見的向量數(shù)據(jù)庫 /12 7
▲8.2 文本嵌入模型和緩存向量 /12 8
8.2.1 文本嵌入模型 /12 8
8.2.2 緩存向量 /130
8.2.3 【實戰(zhàn)】偽造嵌入模型 /131
▲8.3 開源的向量數(shù)據(jù)庫Chroma /132
8.3.1 支持的嵌入模型 /133
8.3.2 認識客戶端 /135
8.3.3 數(shù)據(jù)操作方法 /138
8.3.4 使用集合 /141
▲8.4 【實戰(zhàn)】使用LangChain 和Chroma 操作向量 /148
8.4.1 使用Chroma 存儲和查詢向量 /148
8.4.2 將向量保存到磁盤上 /149
8.4.3 使用Chroma 客戶端 /150
8.4.4 更新和刪除向量 /151
8.4.5 使用OpenAIEmbeddings 嵌入向量 /151
8.4.6 使用帶分數(shù)的相似性搜索 /152
8.4.7 使用MMR 優(yōu)化搜索結(jié)果 /153
8.4.8 根據(jù)元數(shù)據(jù)篩選集合 /153
-
▌進階篇
-
第9章 使用內(nèi)存保持應(yīng)用狀態(tài)
▲9.1 認識內(nèi)存和聊天消息歷史記錄. /156
9.1.1 認識內(nèi)存 /156
9.1.2 認識聊天消息歷史記錄類 /157
▲9.2 內(nèi)存的類型 /157
9.2.1 會話內(nèi)存 /157
9.2.2 滑動窗口會話內(nèi)存 /158
9.2.3 實體內(nèi)存 /159
9.2.4 知識圖譜會話內(nèi)存 /161
9.2.5 會話摘要內(nèi)存 /163
9.2.6 會話摘要緩沖內(nèi)存 /165
9.2.7 會話令牌緩沖內(nèi)存 /166
9.2.8 向量儲存檢索內(nèi)存 /167
▲9.3 【實戰(zhàn)】自定義會話內(nèi)存. /169
▲9.4 【實戰(zhàn)】組合多個內(nèi)存類. /172
-
第10章 使用鏈構(gòu)造調(diào)用序列
▲10.1 【實戰(zhàn)】使用鏈接入LLM /175
▲10.2 鏈 /176
10.2.1 認識鏈 /176
10.2.2 基礎(chǔ)鏈 /180
10.2.3 文檔鏈 /181
10.2.4 chain_type 參數(shù) /182
10.2.5 鏈的調(diào)用方法 /183
10.2.6 鏈的安全 /184
▲10.3 鏈的序列化和反序列化 /185
▲10.4 在鏈中使用內(nèi)存. /188
10.4.1 了解在鏈中使用內(nèi)存 /188
10.4.2 【實戰(zhàn)】為會話鏈添加內(nèi)存 /189
10.4.3 【實戰(zhàn)】為LLMChain 添加內(nèi)存 /190
-
第11章 使用和自定義工具
▲11.1 認識工具 /195
▲11.2 認識、使用和自定義內(nèi)置工具. /197
11.2.1 認識內(nèi)置工具 /197
11.2.2 使用內(nèi)置工具 /198
11.2.3 自定義內(nèi)置工具 /199
▲11.3 自定義工具 /200
11.3.1 使用@tool 裝飾器 /201
11.3.2 繼承BaseTool 類. /202
11.3.3 使用StructuredTool 類 /204
11.3.4 處理工具錯誤 /206
▲11.4 【實戰(zhàn)】實現(xiàn)人工驗證工具 /207
▲11.5 【實戰(zhàn)】實現(xiàn)多輸入工具 /209
-
第12章 使用代理串聯(lián)工具
▲12.1 代理 /212
▲12.2 代理類型和工具調(diào)用代理 /214
12.2.1 代理類型 /214
12.2.2 【實戰(zhàn)】實現(xiàn)工具調(diào)用代理 /215
▲12.3 自定義代理操作和配置 /216
12.3.1 處理解析錯誤 /216
12.3.2 處理代理運行超時 /217
12.3.3 處理流式處理的輸出 /217
12.3.4 訪問中間步驟 /219
12.3.5 返回結(jié)構(gòu)化的內(nèi)容 /219
12.3.6 限制最大迭代次數(shù) /220
-
第13章 使用LCEL 將原型直接投入生產(chǎn)
▲13.1 LCEL /224
13.1.1 認識LCEL /224
13.1.2 LCEL 的優(yōu)勢 /225
13.1.3 【實戰(zhàn)】使用LCEL 鏈接指令模板、模型和輸出解析器
13.1.4 Runnable 接口 /226
13.1.5 流式處理 /229
13.1.6 基于輸入的動態(tài)路由邏輯 /229
▲13.2 LCEL 鏈 /229
▲13.3 消息歷史和存儲聊天消息 /230
13.3.1 消息歷史 /230
13.3.2 【實戰(zhàn)】存儲聊天消息 /232
▲13.4 基本體 /235
13.4.1 鏈接可運行對象 /235
13.4.2 輸入與輸出格式化 /238
13.4.3 附加運行時參數(shù) /240
13.4.4 運行自定義函數(shù) /241
13.4.5 數(shù)據(jù)傳遞 /244
13.4.6 向鏈狀態(tài)添加值 /244
13.4.7 運行時配置鏈 /244
▲13.5 【實戰(zhàn)】檢查可運行對象 /244
-
第14章 使用LangChain 全家桶
▲14.1 LangSmith /247
▲14.2 LangServe /248
▲14.3 使用LangGraph 構(gòu)建有狀態(tài)、多角色應(yīng)用. /249
14.3.1 認識LangGraph /249
14.3.2 認識流式處理 /250
14.3.3 【實戰(zhàn)】創(chuàng)建可視化執(zhí)行圖 /251
14.3.4 【實戰(zhàn)】創(chuàng)建節(jié)點和邊,設(shè)置圖的入口點和結(jié)束點 /252
-
▌項目實戰(zhàn)篇
-
第15章 【實戰(zhàn)】使用RAG 構(gòu)建問答智能體
▲15.1 整體架構(gòu) /255
15.1.1 項目介紹 /255
15.1.2 核心組件 /255
▲15.2 實現(xiàn)索引和檢索 /256
15.2.1 實現(xiàn)索引 /256
15.2.2 實現(xiàn)檢索 /257
▲15.3 生成回答 /257
15.3.1 創(chuàng)建指令模板 /258
15.3.2 定義鏈 /258
▲15.4 實現(xiàn)溯源 /259
▲15.5 實現(xiàn)流式傳輸最終輸出 /260
▲15.6 實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)的檢索和生成. /260
15.6.1 連接數(shù)據(jù)庫 /260
15.6.2 將問題轉(zhuǎn)換為SQL 查詢語句 /261
15.6.3 執(zhí)行SQL 查詢 /261
15.6.4 生成最終答案 /262