第 1章 走进DeepSeek世界 1
1.1 什么是DeepSeek 1
1.1.1 DeepSeek的发展历程 2
1.1.2 DeepSeek的核心功能 2
1.1.3 DeepSeek的优势 3
1.1.4 DeepSeek与其他大模型的比较 4
1.2 DeepSeek能做什么 4
1.2.1 DeepSeek的应用场景 5
1.2.2 用DeepSeek做数学题 5
1.2.3 用DeepSeek编程 7
1.3 如何使用DeepSeek 11
1.3.1 DeepSeek的用户界面和基本操作 11
1.3.2 移动端DeepSeek App 12
1.3.3 DeepSeek API 13
1.4 DeepSeek的DeepSeek-R1模型和蒸馏模型 18
1.4.1 DeepSeek-R1模型的原理 18
1.4.2 蒸馏模型 19
1.5 DeepSeek的未来展望 21
1.5.1 DeepSeek的发展趋势和挑战 21
1.5.2 DeepSeek对AIGC领域和社会的影响 22
1.6 本章小结 23
第 2章 DeepSeek大模型部署的硬件要求和技术 24
2.1 本地部署DeepSeek-R1的硬件条件 24
2.2 大模型到底需要多大的显存 26
2.2.1 模型量化与显存占用:不同“精度”的显存开销 27
2.2.2 激活参数与推理显存:生成token的“动态”消耗 27
2.2.3 多用户并发:显存需求的“乘法效应” 28
2.2.4 如何估算大模型推理的显存需求 29
2.3 精度与体积的权衡:揭示大模型量化的秘密 30
2.3.1 何谓模型量化:为大模型“精打细算” 30
2.3.2 精度标尺:FP32、FP16、Q8 与Q4的“位之争” 30
2.3.3 参数、量化和蒸馏之间的关系 31
2.3.4 比特之内的秘密:量化参数的“庐山真面目” 32
2.4 存储带宽瓶颈:推理速度的限制 32
2.4.1 什么是存储带宽:数据传输的“高速公路” 32
2.4.2 存储带宽在大模型推理中的作用:将数据“喂”给计算单元 33
2.4.3 量化如何缓解存储带宽的压力:数据“瘦身”加速传输 33
2.4.4 优化技术与存储带宽:“多管齐下”提升效率 33
2.5 推理速度与延迟:除了显存,性能也很重要 34
2.5.1 推理速度与延迟:用户体验的“晴雨表” 34
2.5.2 影响推理性能的其他因素 34
2.5.3 CPU与GPU的协同:软硬结合,发挥最大效能 35
2.6 大模型背后的秘密武器:Transformer架构 36
2.6.1 从“注意力”机制开始:像人类一样思考 36
2.6.2 Transformer架构的基本结构:积木搭建的“变形金刚” 36
2.6.3 Transformer架构与硬件需求:“大力士”的胃口 37
2.7 DeepSeek中的MoE 38
2.7.1 MoE的基本原理 38
2.7.2 MoE的应用 38
2.7.3 DeepSeek的创新性MoE 39
2.8 本章小结 39
第3章 用Ollama本地部署DeepSeek-R1 41
3.1 Ollama简介 41
3.2 安装Ollama 42
3.3 Ollama支持的DeepSeek系列模型 43
3.4 用Ollama部署模型 44
3.5 模型的存储位置 45
3.6 在Ollama中进行推理 46
3.7 Ollama命令行参数和子命令详解 47
3.8 导入GGUF格式的模型文件 51
3.9 本章小结 51
第4章 用LM Studio本地部署DeepSeek-R1 52
4.1 LM Studio简介 52
4.1.1 什么是LM Studio 52
4.1.2 LM Studio的核心功能 52
4.1.3 LM Studio的优势 53
4.1.4 LM Studio支持的平台 53
4.1.5 LM Studio的硬件要求 54
4.2 LM Studio的适用场景 54
4.3 安装LM Studio 55
4.4 LM Studio支持的大模型格式 56
4.4.1 大模型格式——GGUF 56
4.4.2 模型格式——MLX 57
4.5 本地部署DeepSeek-R1模型 58
4.5.1 从Hugging Face下载模型文件 58
4.5.2 本地部署DeepSeek-R1模型 60
4.5.3 模型加载设置详解 61
4.5.4 用LM Studio聊天 64
4.5.5 模型推理参数设置 65
4.6 本章小结 68
第5章 用Cherry Studio建立本地知识库 69
5.1 Cherry Studio简介 69
5.2 安装Cherry Studio 70
5.3 在Cherry Studio中使用DeepSeek-R1 71
5.4 在Cherry Studio中使用DeepSeek-R1聊天 72
5.5 本地知识库的理论基础 73
5.5.1 本地知识库、嵌入模型与向量数据库的关系 73
5.5.2 嵌入模型 74
5.5.3 向量数据库 75
5.5.4 嵌入模型与向量数据库的工作流程 76
5.5.5 整合本地模型与嵌入模型 76
5.6 建立和使用本地知识库 78
5.6.1 本地部署嵌入模型 78
5.6.2 建立本地知识库 78
5.6.3 使用DeepSeek-R1编写仓颉代码 80
5.7 智能体 80
5.7.1 Cherry Studio中的智能体 80
5.7.2 在自定义的智能体中使用知识库 82
5.8 远程访问Ollama服务 83
5.9 本章小结 83
第6章 更多的大模型应用构建平台 84
6.1 一体化的开源AI应用平台——AnythingLLM 84
6.1.1 AnythingLLM简介 84
6.1.2 安装AnythingLLM 85
6.1.3 本地部署DeepSeek-R1模型 86
6.1.4 访问Ollama中的大语言模型 87
6.1.5 在AnythingLLM中聊天 87
6.1.6 在AnythingLLM中建立本地知识库 88
6.2 聊天机器人应用——Chatbox 89
6.2.1 Chatbox简介 89
6.2.2 安装Chatbox 90
6.2.3 配置Chatbox 90
6.2.4 在Chatbox中聊天 90
6.3 本章小结 91
第7章 Ollama的RESTful API 92
7.1 Ollama API简介 92
7.1.1 RESTful API 92
7.1.2 程序库 93
7.1.3 OpenAI兼容API 94
7.2 使用curl测试Ollama RESTful API 95
7.2.1 curl简介 95
7.2.2 使用curl测试Ollama文本生成API 96
7.3 Python Flask基础 98
7.3.1 Flask简介 98
7.3.2 安装Flask 99
7.3.3 一个简单的Flask应用示例 99
7.4 模型操作 100
7.4.1 列出本地模型 100
7.4.2 获取模型信息 103
7.4.3 拉取模型 108
7.4.4 复制模型 111
7.4.5 删除模型 112
7.4.6 创建模型 113
7.5 会话管理 117
7.5.1 单轮会话 117
7.5.2 多轮会话 124
7.6 文本向量生成 126
7.7 本章小结 128
第8章 Ollama程序库 129
8.1 Ollama程序库简介 129
8.2 安装Ollama程序库 130
8.3 Node.js基础 131
8.3.1 Node.js简介 131
8.3.2 安装Node.js 131
8.3.3 编写一个Node.js程序 132
8.3.4 常用的Node.js内置模块 133
8.3.5 使用第三方模块 133
8.4 模型操作 133
8.4.1 用Python程序库操作模型 134
8.4.2 用JavaScript程序库操作模型 135
8.5 会话 136
8.5.1 用Python程序库实现会话 136
8.5.2 用JavaScript程序库实现会话 138
8.6 生成文本向量 139
8.6.1 用Python程序库生成文本向量 139
8.6.2 用JavaScript程序库生成文本向量 140
8.7 本章小结 141
第9章 Ollama OpenAI兼容API 142
9.1 OpenAI API简介 142
9.1.1 OpenAI API的概念和特点 142
9.1.2 OpenAI API成为兼容标准的原因 143
9.1.3 兼容OpenAI API的好处 143
9.2 OpenAI API程序库 144
9.2.1 使用OpenAI API程序库的优势 144
9.2.2 安装OpenAI API程序库 145
9.2.3 用其他语言访问OpenAI API 146
9.3 3种编程语言实现多轮会话 147
9.3.1 用Python通过OpenAI API程序库实现多轮会话 147
9.3.2 用JavaScript通过OpenAI API程序库实现多轮会话 149
9.3.3 用Go通过HTTP实现多轮会话 151
9.4 3种编程语言实现函数调用 154
9.4.1 函数调用简介 154
9.4.2 用Python通过OpenAI API程序库实现函数调用 155
9.4.3 用JavaScript通过OpenAI API程序库实现函数调用 159
9.4.4 用Go通过HTTP实现函数调用 162
9.5 3种编程语言获取文本向量 166
9.5.1 用Python通过OpenAI API程序库获取文本向量 167
9.5.2 用JavaScript通过OpenAI API程序库获取文本向量 168
9.5.3 用Go通过HTTP获取文本向量 168
9.6 调用LM Studio的OpenAI兼容API 170
9.7 本章小结 171
第 10章 llama.cpp实战 172
10.1 llama.cpp基础 172
10.1.1 llama.cpp简介 172
10.1.2 llama.cpp安装 174
10.1.3 命令行交互利器llama-cli 176
10.1.4 更简单的大语言模型推理方案llama-run 179
10.1.5 大语言模型服务化工具llama-server 180
10.1.6 大语言模型基准测试工具llama-bench 184
10.1.7 大语言模型量化工具llama-quantize 185
10.2 llama-cpp-python基础 187
10.2.1 llama-cpp-python简介 187
10.2.2 安装llama-cpp-python 188
10.2.3 用llama-cpp-python生成文本 189
10.2.4 用llama-cpp-python获取文本向量 190
10.3 本章小结 191
第 11章 项目实战:代码注释翻译器 192
11.1 项目简介 192
11.2 项目设计与架构 193
11.2.1 两大核心模块 193
11.2.2 代码注释翻译器的工作流程 194
11.3 核心模块代码解析 198
11.3.1 注释提取的统一入口 198
11.3.2 编程语言类型的快速识别 199
11.3.3 注释提取的核心原理与实现技巧 200
11.3.4 批量生成翻译prompt 203
11.4 主程序代码解析 204
11.4.1 加载API配置信息 204
11.4.2 调用OpenAI API进行翻译 206
11.4.3 替换源代码中的注释 208
11.5 运行项目 210
11.6 改进方向和扩展 211
11.7 本章小结 212
第 12章 项目实战:构建知识库 213
12.1 知识库与向量数据库 213
12.1.1 知识库的原理 213
12.1.2 什么是向量数据库 214
12.1.3 嵌入模型、向量数据库与知识库的关系 214
12.2 Chroma基础 215
12.2.1 Chroma简介 215
12.2.2 Chroma的主要功能 215
12.2.3 安装Chroma 216
12.2.4 向量存储与检索 216
12.2.5 数据持久化保存 217
12.2.6 关联元数据 219
12.3 知识库服务项目基础 220
12.3.1 项目简介 220
12.3.2 项目设计与架构 221
12.4 核心代码实现 222
12.4.1 获取嵌入向量 222
12.4.2 加载知识库 223
12.4.3 实现检索功能 224
12.4.4 基于Flask的Web服务 226
12.5 运行和测试项目 227
12.5.1 建立知识库 227
12.5.2 启动服务 227
12.5.3 使用curl测试项目 227
12.5.4 使用Python测试项目 228
12.6 改进方向和扩展 228
12.7 本章小结 229
第 13章 项目实战:文章智能配图器 230
13.1 项目简介 230
13.2 项目设计与架构 231
13.3 Stable Diffusion基础 231
13.3.1 Stable Diffusion简介 232
13.3.2 安装Stable Diffusion 232
13.3.3 使用Stable Diffusion生成图像 233
13.4 Stable Diffusion API 234
13.4.1 文生图 234
13.4.2 图生图 236
13.5 项目核心代码实现 238
13.5.1 配置与初始化 238
13.5.2 文本处理与prompt生成 239
13.5.3 图像生成与保存 240
13.6 运行和测试项目 242
13.7 改进方向与未来展望 242
13.8 本章小结 243
第 14章 项目实战:意图鉴别服务 244
14.1 项目简介 244
14.1.1 意图鉴别:大模型的“调度器” 244
14.1.2 技术创新点:用装饰器定义意图方法 245
14.2 项目设计与架构 246
14.2.1 意图鉴别服务的工作流程 246
14.2.2 系统架构 248
14.2.3 项目核心文件及其作用 249
14.3 核心代码实现详解 250
14.3.1 定义意图方法的装饰器 250
14.3.2 使用装饰器定义意图方法 251
14.3.3 参数类型映射 253
14.3.4 解析装饰器方法并生成Tools JSON 254
14.3.5 获取意图信息 255
14.3.6 构建意图鉴别Web服务 256
14.4 运行和测试项目 258
14.5 本章小结 259
第 15章 项目实战:多模态聊天机器人 260
15.1 项目简介 260
15.2 项目设计与架构 261
15.2.1 总体设计理念 261
15.2.2 系统架构 261
15.2.3 运作流程 262
15.3 项目核心代码实现 262
15.3.1 文件结构与功能概述 263
15.3.2 主文件解析 263
15.3.3 处理文生图请求 266
15.3.4 文章配图功能调用 267
15.3.5 使用知识库回答问题 267
15.4 运行和测试项目 268
15.5 本章小结 270