我的语言的界限意味着我的世界的界限。
——维特根斯坦《逻辑哲学论》
第 1 章 语言模型基础 1
1.1 基于统计方法的语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 n-grams 语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 n-grams 的统计学原理 . . . . . . . . . . . . . . . . . . . . . . 4
1.2 基于 RNN 的语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 循环神经网络 RNN . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 基于 RNN 的语言模型 . . . . . . . . . . . . . . . . . . . . . . 10
1.3 基于 Transformer 的语言模型 . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1 Transformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2 基于 Transformer 的语言模型 . . . . . . . . . . . . . . . . . . . 17
1.4 语言模型的采样方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.1 概率最大化方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.2 随机采样方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5 语言模型的评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.1 内在评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.2 外在评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
第 2 章 大语言模型架构 33
2.1 大数据 + 大模型 → 新智能 . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.1 大数据 + 大模型 → 能力增强 . . . . . . . . . . . . . . . . . . 35
2.1.2 大数据 + 大模型 → 能力扩展 . . . . . . . . . . . . . . . . . . 38
2.2 大语言模型架构概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.1 主流模型架构的类别 . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.2 模型架构的功能对比 . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.3 模型架构的历史演变 . . . . . . . . . . . . . . . . . . . . . . . 47
2.3 基于 Encoder-only 架构的大语言模型 . . . . . . . . . . . . . . . . . . 49
2.3.1 Encoder-only 架构 . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.3.2 BERT 语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.3 BERT 衍生语言模型 . . . . . . . . . . . . . . . . . . . . . . . 53
2.4 基于 Encoder-Decoder 架构的大语言模型 . . . . . . . . . . . . . . . . 59
2.4.1 Encoder-Decoder 架构 . . . . . . . . . . . . . . . . . . . . . . . 60
2.4.2 T5 语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.4.3 BART 语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.5 基于 Decoder-only 架构的大语言模型 . . . . . . . . . . . . . . . . . . 66
2.5.1 Decoder-only 架构 . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.2 GPT 系列语言模型 . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.3 LLAMA 系列语言模型 . . . . . . . . . . . . . . . . . . . . . . 76
2.6 非 Transformer 架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.6.1 状态空间模型 SSM . . . . . . . . . . . . . . . . . . . . . . . . 83
2.6.2 训练时更新 TTT . . . . . . . . . . . . . . . . . . . . . . . . . . 90
第 3 章 Prompt 工程 97
3.1 Prompt 工程简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.1.1 Prompt 的定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.1.2 Prompt 工程的定义 . . . . . . . . . . . . . . . . . . . . . . . . 99
3.1.3 Prompt 分词向量化 . . . . . . . . . . . . . . . . . . . . . . . . 102
3.1.4 Prompt 工程的意义 . . . . . . . . . . . . . . . . . . . . . . . . 105
3.2 上下文学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.2.1 上下文学习的定义 . . . . . . . . . . . . . . . . . . . . . . . . 107
3.2.2 演示示例选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.2.3 性能影响因素 . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.3 思维链 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.3.1 思维链提示的定义 . . . . . . . . . . . . . . . . . . . . . . . . 115
3.3.2 按部就班 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.3.3 三思后行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.3.4 集思广益 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.4 Prompt 技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.4.1 规范 Prompt 编写 . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.4.2 合理归纳提问 . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.4.3 适时使用 CoT . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
3.4.4 善用心理暗示 . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.5 相关应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.5.1 基于大语言模型的 Agent . . . . . . . . . . . . . . . . . . . . . 138
3.5.2 数据合成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.5.3 Text-to-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
3.5.4 GPTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
第 4 章 参数高效微调 151
4.1 参数高效微调简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.1.1 下游任务适配 . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.1.2 参数高效微调 . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
4.1.3 参数高效微调的优势 . . . . . . . . . . . . . . . . . . . . . . . 155
4.2 参数附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.2.1 加在输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.2.2 加在模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.2.3 加在输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4.3 参数选择方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
4.3.1 基于规则的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.3.2 基于学习的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.4 低秩适配方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
4.4.1 LoRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
4.4.2 LoRA 相关变体 . . . . . . . . . . . . . . . . . . . . . . . . . . 170
4.4.3 基于 LoRA 插件的任务泛化 . . . . . . . . . . . . . . . . . . . 172
4.5 实践与应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
4.5.1 PEFT 实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
4.5.2 PEFT 应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
第 5 章 模型编辑 185
5.1 模型编辑简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.1.1 模型编辑思想 . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.1.2 模型编辑定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
5.1.3 模型编辑性质 . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.1.4 常用数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.2 模型编辑经典方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.2.1 外部拓展法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
5.2.2 内部修改法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
5.2.3 方法比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5.3 附加参数法:T-Patcher . . . . . . . . . . . . . . . . . . . . . . . . . . 205
5.3.1 补丁的位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
5.3.2 补丁的形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
5.3.3 补丁的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
5.4 定位编辑法:ROME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
5.4.1 知识存储位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
5.4.2 知识存储机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.4.3 精准知识编辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
5.5 模型编辑应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.5.1 精准模型更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.5.2 保护被遗忘权 . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.5.3 提升模型安全 . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
第 6 章 检索增强生成 229
6.1 检索增强生成简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.1.1 检索增强生成的背景 . . . . . . . . . . . . . . . . . . . . . . . 230
6.1.2 检索增强生成的组成 . . . . . . . . . . . . . . . . . . . . . . . 234
6.2 检索增强生成架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.2.1 RAG 架构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
6.2.2 黑盒增强架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
6.2.3 白盒增强架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.2.4 对比与分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
6.3 知识检索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
6.3.1 知识库构建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
6.3.2 查询增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.3.3 检索器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
6.3.4 检索效率增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
6.3.5 检索结果重排 . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
6.4 生成增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
6.4.1 何时增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
6.4.2 何处增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
6.4.3 多次增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
6.4.4 降本增效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
6.5 实践与应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
6.5.1 搭建简单 RAG 系统 . . . . . . . . . . . . . . . . . . . . . . . . 271
6.5.2 RAG 的典型应用 . . . . . . . . . . . . . . . . . . . . . . . . . 276