《动手构建大模型》封面

动手构建大模型 内容简介

本书采用创新且实用的教学策略,巧妙融合理论基础与实践应用,深入剖析自然语言处理(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什么是LLM2
1.3LLM的组成2
1.3.1Transformer2
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.10LLM中的涌现能力及测试基准7
1.3.11LLM简史9
1.3.12项目:使用LLM(GPT-3.5API)进行翻译13
1.3.13项目:通过小样本学习来控制LLM的输出14
1.4本章小结16
第2章LLM架构和概况17
2.1理解Transformer17
2.1.1论文“AttentionIsAllYouNeed”17
2.1.2架构实战21
2.2Transformer架构的设计选择24
2.2.1编码器-解码器架构24
2.2.2仅编码器架构26
2.2.3仅解码器架构28
2.2.4Transformer架构的优化技术30
2.3生成式预训练Transformer(GPT)架构31
2.3.1掩码自注意力31
2.3.2GPT的训练过程31
2.3.3MinGPT32
2.4LMM简介33
2.4.1常见架构和训练目标33
2.4.2开源版本的Flamingo34
2.4.3指令微调的LMM35
2.4.4探索LLaVA—一个指令微调的LMM36
2.4.5超越视觉和语言36
2.5专有模型vs.开放模型vs.开源模型37
2.5.1CohereLLM37
2.5.2OpenAI的GPT-3.5turbo、GPT-4o和GPT-4omini38
2.5.3Anthropic的Claude3模型38
2.5.4GoogleDeepMind的Gemini39
2.5.5Meta的LLaMA239
2.5.6MistralLLM40
2.6LLM的应用和示例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微调LLM52
3.2LLM性能评估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章RAG70
5.1为什么使用RAG70
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.1LLM框架83
6.2LangChain介绍83
6.3项目1:使用LangChain构建LLM驱动的应用86
6.3.1提示模板86
6.3.2摘要链示例87
6.3.3问答链示例88
6.4项目2:构建新闻文章摘要器89
6.5LlamaIndex介绍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.6LangChain、LlamaIndex与OpenAIAssistants99
6.7本章小结101
第7章使用LangChain进行提示102
7.1LangChain提示模板102
7.2小样本提示和样例选择器107
7.2.1人类与AI的信息交互108
7.2.2小样本提示108
7.2.3样例选择器110
7.3LangChain链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.1LangChain的索引和检索器138
8.2数据摄取141
8.2.1从PDF中加载数据142
8.2.2从网页中加载数据142
8.2.3从GoogleDrive中加载数据144
8.3文本切分器144
8.3.1基于字符长度的文本切分145
8.3.2基于逻辑终点的文本切分146
8.3.3基于NLTK的其他语种切分148
8.3.4基于SpaCy的其他语种切分148
8.3.5Markdown格式的文本切分149
8.3.6基于Token的文本切分151
8.4相似性搜索与嵌入向量152
8.4.1开源嵌入模型153
8.4.2Cohere嵌入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将转录内容添加到DeepLake166
8.7项目3:为你的知识库创建语音助手169
8.7.1从HuggingFaceHub获取内容170
8.7.2加载和切分文本171
8.7.3嵌入向量以及DeepLake库172
8.7.4创建语音助手173
8.7.5基于Streamlit构建交互界面175
8.8通过自批判链防止输出不良内容177
8.9在客服问答聊天机器人中防止输出不良内容181
8.10本章小结185
第9章高级RAG187
9.1从概念验证到产品:RAG系统的挑战187
9.2使用LlamaIndex的高级RAG技术187
9.2.1嵌入模型与LLM微调189
9.2.2RAG监控与评估189
9.2.3混合检索与嵌入向量检索189
9.3LlamaIndex查询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.4RAG指标与评估198
9.4.1RAG与LLM评估指标198
9.4.2检索评估指标200
9.4.3基于社区的评估工具202
9.4.4自定义RAG评估工作流205
9.5LangChain的LangSmith与LangChainHub210
9.6本章小结214
第10章智能体215
10.1什么是智能体:大模型作为推理引擎215
10.2AutoGPT和BabyAGI概述220
10.2.1AutoGPT220
10.2.2使用AutoGPT与LangChain221
10.2.3BabyAGI227
10.2.4使用BabyAGI与LangChain229
10.3LangChain中的智能体仿真项目232
10.3.1CAMEL项目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:使用OpenAIAssistants构建智能体249
10.7项目4:LangChainOpenGPTs251
10.8项目5:对PDF中的财务信息进行多模态分析253
10.8.1数据提取253
10.8.2存储在DeepLake中257
10.8.3微调嵌入空间259
10.8.4聊天机器人实战262
10.9本章小结264
第11章微调265
11.1理解微调265
11.2LoRA266
11.3项目1:使用LoRA进行SFT267
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和OPT280
11.4.4推理281
11.5项目3:用医疗数据微调CohereLLM283
11.5.1CohereAPI283
11.5.2数据集284
11.5.3微调287
11.6RLHF290
11.7项目4:使用RLHF改进LLM292
11.7.1SFT293
11.7.2训练奖励模型297
11.7.3强化学习300
11.7.4推理305
11.8本章小结307
第12章部署与优化309
12.1模型蒸馏和教师模型309
12.2LLM部署优化:量化、剪枝和投机解码312
12.2.1模型量化313
12.2.2量化LLM315
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在云服务提供商上部署开源LLM325
12.5本章小结326
总结328
······

最后修改:2026 年 05 月 05 日