LangChain实战派:大语言模型+LangChain+向量数据库
定 价:89 元
- 作者:龙中华
- 出版时间:2024/11/1
- ISBN:9787121490682
- 出 版 社:电子工业出版社
- 中图法分类:TP311.561
- 页码:276
- 纸张:
- 版次:01
- 开本:16开
本书采用“知识点+实战”的编写方式,共包含28个基础实战和1个综合性实战,旨在深入解析大语言模型应用开发的核心知识。每个知识点的介绍均遵循清晰的逻辑脉络:介绍概念、阐述应用原理、说明使用方法、探讨选择该方法的理由、提供优化建议,并且分享最佳实践案例。本书适合对LangChain感兴趣的读者阅读。
▌入门篇
第1章 认识LLM 应用开发
▲1.1 LLM /2
1.1.1 LLM 的分类 /2
1.1.2 发展历程 /3
1.1.3 应用领域 /4
1.1.4 面临的挑战 /4
▲1.2 LLM 应用开发 /5
1.2.1 LLM 应用开发前景 /6
1.2.2 LLM 应用开发的技术方向 /7
▲1.3 LangChain /8
1.3.1 认识LangChain /8
1.3.2 LangChain 的价值 /9
1.3.3 其他开发框架 /10
-
第2章 搭建环境并实现简单的应用
▲2.1 搭建环境 /12
2.1.1 搭建开发环境 /12
2.1.2 搭建LLM 环境 /13
▲2.2 【实战】实现问答应用——基于基础模型 /14
▲2.3 【实战】实现翻译应用——基于聊天模型和指令模板 /15
-
▌基础篇
-
第3章 LangChain 基础
▲3.1 认识LangChain /19
3.1.1 LangChain 的架构 /19
3.1.2 LangChain 的库 /19
3.1.3 LangChain 的模块 /0
▲3.2 LangChain 的调试 /20
3.2.1 跟踪工具LangSmith /21
3.2.2 【实战】调试LLM 应用 /1
▲3.3 LangChain 的回退 /24
3.3.1 【实战】处理LLM 调用API 的错误 /25
3.3.2 【实战】处理序列的回退 /27
3.3.3 【实战】处理长输入 /9
3.3.4 回退到更好的模型 /30
▲3.4 LangChain 的回调 /31
3.4.1 认识回调处理程序 /31
3.4.2 认识异步回调 /32
3.4.3 认识标签 /34
3.4.4 【实战】自定义回调 /34
3.4.5 【实战】使用回调记录日志 /35
3.4.6 【实战】处理多个回调 /35
▲3.5 隐私保护 /37
-
第4章 管理LLM 的接口和解析输出
▲4.1 认识LLM 的接口 /40
4.1.1 认识基础模型的接口 /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 【实战】缓存LLM 生成的内容 /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 【实战】自定义输出解析器 /66
4.5.1 在LCEL 中使用RunnableGenerator 类 /66
4.5.2 继承解析器的基类来自定义输出解析器 /67
-
第5章 指令——激活LLM 能力的钥匙
▲5.1 认识指令 /72
5.1.1 指令的概念 /72
5.1.2 指令的构成要素 /73
▲5.2 编写指令的18 个策略 /73
▲5.3 防御恶意攻击 /81
-
第6章 指令模板和示例选择器
▲6.1 指令模板 /84
6.1.1 认识指令模板 /84
6.1.2 聊天消息指令模板的类型 /86
▲6.2 指令模板的应用 /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 【实战】组合指令 /95
▲6.3 示例选择器 /97
▲6.4 少样本指令模板 /97
6.4.1 认识少样本指令模板 /97
6.4.2 在聊天模型中使用少样本指令模板 /103
-
第7章 使用外部数据
▲7.1 文档加载器. /108
7.1.1 认识文档加载器 /108
7.1.2 【实战】使用文档加载器 /109
▲7.2 文本拆分器. /114
7.2.1 认识文本拆分器 /114
7.2.2 拆分文本和代码 /116
▲7.3 检索器 /118
▲7.4 索引 /121
-
第8章 集成向量数据库,实现对向量的操作
▲8.1 向量数据库 /12 3
8.1.1 认识向量数据库 /12 3
8.1.2 向量数据库的发展机遇 /12 5
8.1.3 常见的向量数据库 /12 7
▲8.2 文本嵌入模型和缓存向量 /12 8
8.2.1 文本嵌入模型 /12 8
8.2.2 缓存向量 /130
8.2.3 【实战】伪造嵌入模型 /131
▲8.3 开源的向量数据库Chroma /132
8.3.1 支持的嵌入模型 /133
8.3.2 认识客户端 /135
8.3.3 数据操作方法 /138
8.3.4 使用集合 /141
▲8.4 【实战】使用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 使用带分数的相似性搜索 /152
8.4.7 使用MMR 优化搜索结果 /153
8.4.8 根据元数据筛选集合 /153
-
▌进阶篇
-
第9章 使用内存保持应用状态
▲9.1 认识内存和聊天消息历史记录. /156
9.1.1 认识内存 /156
9.1.2 认识聊天消息历史记录类 /157
▲9.2 内存的类型 /157
9.2.1 会话内存 /157
9.2.2 滑动窗口会话内存 /158
9.2.3 实体内存 /159
9.2.4 知识图谱会话内存 /161
9.2.5 会话摘要内存 /163
9.2.6 会话摘要缓冲内存 /165
9.2.7 会话令牌缓冲内存 /166
9.2.8 向量储存检索内存 /167
▲9.3 【实战】自定义会话内存. /169
▲9.4 【实战】组合多个内存类. /172
-
第10章 使用链构造调用序列
▲10.1 【实战】使用链接入LLM /175
▲10.2 链 /176
10.2.1 认识链 /176
10.2.2 基础链 /180
10.2.3 文档链 /181
10.2.4 chain_type 参数 /182
10.2.5 链的调用方法 /183
10.2.6 链的安全 /184
▲10.3 链的序列化和反序列化 /185
▲10.4 在链中使用内存. /188
10.4.1 了解在链中使用内存 /188
10.4.2 【实战】为会话链添加内存 /189
10.4.3 【实战】为LLMChain 添加内存 /190
-
第11章 使用和自定义工具
▲11.1 认识工具 /195
▲11.2 认识、使用和自定义内置工具. /197
11.2.1 认识内置工具 /197
11.2.2 使用内置工具 /198
11.2.3 自定义内置工具 /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 【实战】实现人工验证工具 /207
▲11.5 【实战】实现多输入工具 /209
-
第12章 使用代理串联工具
▲12.1 代理 /212
▲12.2 代理类型和工具调用代理 /214
12.2.1 代理类型 /214
12.2.2 【实战】实现工具调用代理 /215
▲12.3 自定义代理操作和配置 /216
12.3.1 处理解析错误 /216
12.3.2 处理代理运行超时 /217
12.3.3 处理流式处理的输出 /217
12.3.4 访问中间步骤 /219
12.3.5 返回结构化的内容 /219
12.3.6 限制最大迭代次数 /220
-
第13章 使用LCEL 将原型直接投入生产
▲13.1 LCEL /224
13.1.1 认识LCEL /224
13.1.2 LCEL 的优势 /225
13.1.3 【实战】使用LCEL 链接指令模板、模型和输出解析器
13.1.4 Runnable 接口 /226
13.1.5 流式处理 /229
13.1.6 基于输入的动态路由逻辑 /229
▲13.2 LCEL 链 /229
▲13.3 消息历史和存储聊天消息 /230
13.3.1 消息历史 /230
13.3.2 【实战】存储聊天消息 /232
▲13.4 基本体 /235
13.4.1 链接可运行对象 /235
13.4.2 输入与输出格式化 /238
13.4.3 附加运行时参数 /240
13.4.4 运行自定义函数 /241
13.4.5 数据传递 /244
13.4.6 向链状态添加值 /244
13.4.7 运行时配置链 /244
▲13.5 【实战】检查可运行对象 /244
-
第14章 使用LangChain 全家桶
▲14.1 LangSmith /247
▲14.2 LangServe /248
▲14.3 使用LangGraph 构建有状态、多角色应用. /249
14.3.1 认识LangGraph /249
14.3.2 认识流式处理 /250
14.3.3 【实战】创建可视化执行图 /251
14.3.4 【实战】创建节点和边,设置图的入口点和结束点 /252
-
▌项目实战篇
-
第15章 【实战】使用RAG 构建问答智能体
▲15.1 整体架构 /255
15.1.1 项目介绍 /255
15.1.2 核心组件 /255
▲15.2 实现索引和检索 /256
15.2.1 实现索引 /256
15.2.2 实现检索 /257
▲15.3 生成回答 /257
15.3.1 创建指令模板 /258
15.3.2 定义链 /258
▲15.4 实现溯源 /259
▲15.5 实现流式传输最终输出 /260
▲15.6 实现结构化数据的检索和生成. /260
15.6.1 连接数据库 /260
15.6.2 将问题转换为SQL 查询语句 /261
15.6.3 执行SQL 查询 /261
15.6.4 生成最终答案 /262