大模型学习笔记:从 Transformer 到 Prompt、RAG 与 Agent
大模型学习笔记:从 Transformer 到 Prompt、RAG 与 Agent
大模型,通常指 Large Language Model,也就是大语言模型。它的核心能力是:基于上下文预测下一个 token,并在大规模数据和参数的支撑下,表现出理解、生成、推理、总结、翻译、写代码等能力。
这篇笔记主要记录我对大模型的基础理解,内容包括:大模型是什么、Transformer 的基本思想、训练流程、Prompt 工程、RAG、微调、Agent,以及学习路线。
1. 什么是大模型
大模型可以简单理解为一个非常大的神经网络模型,它通过学习大量文本数据,掌握语言规律、知识关联和一定程度的推理模式。
常见的大模型包括:
- GPT 系列
- Claude 系列
- Gemini 系列
- Llama 系列
- Qwen 系列
- DeepSeek 系列
- GLM 系列
大语言模型的输入和输出通常都是文本,但它背后的处理单位不是“字”或“词”,而是 token。
2. Token 是什么
Token 是模型处理文本的基本单位。
一段文本会先被 tokenizer 切分成 token,再送入模型。例如:
1 | |
可能会被切成类似下面的形式:
1 | |
英文中,一个单词可能是一个 token,也可能被拆成多个 token。中文中,一个字、一个词或词的一部分都有可能成为 token。
为什么 token 很重要?
- 模型的上下文长度通常按 token 计算
- API 计费通常和 token 数量有关
- 输入越长,消耗资源越多
- 输出越长,生成时间越长
可以简单记住:
1 | |
3. 大模型的基本工作方式
大语言模型最核心的训练目标可以概括为:
1 | |
比如给模型输入:
1 | |
模型可能会预测下一个 token 是:
1 | |
然后继续预测:
1 | |
再预测后面的 token。
这就是自回归生成,也就是模型一个 token 一个 token 地生成内容。
虽然这个目标看起来很简单,但当模型参数足够大、训练数据足够多、训练方法足够好时,它会表现出复杂能力,例如:
- 文章写作
- 代码生成
- 信息总结
- 多轮对话
- 数学推理
- 指令理解
- 工具调用
- 复杂任务规划
4. Transformer 是什么
现代大语言模型大多基于 Transformer 架构。
Transformer 的核心思想是:通过注意力机制,让模型在处理一个 token 时,可以关注上下文中其他重要 token。
传统循环神经网络在处理长文本时容易遗忘前面的信息,而 Transformer 可以更高效地建模长距离依赖。
Transformer 中最重要的概念是:
- Embedding
- Positional Encoding / Position Embedding
- Self-Attention
- Multi-Head Attention
- Feed Forward Network
- Layer Normalization
- Residual Connection
5. Embedding:把文字变成向量
模型不能直接处理文字,所以需要先把 token 转成向量。
例如:
1 | |
这个向量就是 embedding。
Embedding 的作用是把离散的 token 映射到连续的向量空间中。意思相近的词,在向量空间中的距离也可能更近。
比如:
1 | |
它们在语义上相关,所以对应的向量可能比较接近。
6. 位置编码:让模型知道顺序
Transformer 本身不像 RNN 那样天然按顺序处理文本,所以需要额外加入位置信息。
例如下面两句话:
1 | |
它们使用的字类似,但顺序不同,意思也不同。
位置编码的作用就是告诉模型:
1 | |
这样模型才能区分不同语序带来的语义差异。
7. Attention:注意力机制
注意力机制可以理解为:模型在处理当前 token 时,会判断上下文中哪些 token 更重要。
例如:
1 | |
这里的“它”更可能指“书”,而不是“书包”。模型需要根据上下文判断指代关系。
Self-Attention 会计算 token 之间的相关性,让模型知道:
1 | |
Multi-Head Attention 则可以理解为:模型从多个角度看上下文。
一个头可能关注语法关系,另一个头可能关注语义关系,还有一个头可能关注指代关系。
8. 大模型为什么需要很多参数
参数可以理解为模型内部可学习的权重。
参数越多,模型理论上可以存储和表达更复杂的模式。但参数多并不一定就绝对更好,还需要:
- 高质量数据
- 合理训练方法
- 足够算力
- 好的模型结构
- 对齐和安全训练
- 推理优化
大模型能力不是单纯由参数量决定的,而是多个因素共同作用的结果。
9. 大模型的训练流程
一个大语言模型通常会经历几个阶段:
1 | |
9.1 预训练
预训练阶段会使用大量文本数据,让模型学习语言规律和世界知识。
常见数据来源包括:
- 网页文本
- 书籍
- 论文
- 代码
- 百科
- 问答数据
预训练的目标通常是预测下一个 token。
这一阶段成本很高,需要大量 GPU、数据和工程系统。
9.2 指令微调
预训练后的模型虽然会补全文本,但不一定会很好地听人类指令。
例如用户输入:
1 | |
模型需要理解这是一个任务,而不是简单续写。
指令微调就是用大量“指令-回答”数据训练模型,让它学会按照人类指令完成任务。
9.3 偏好对齐
偏好对齐的目标是让模型的回答更符合人类偏好,例如:
- 更有帮助
- 更真实
- 更安全
- 更符合上下文
- 不胡编乱造
- 避免有害输出
常见方法包括 RLHF、DPO 等。
9.4 推理优化
模型训练好之后,还需要部署到线上提供服务。
推理阶段关注:
- 响应速度
- 显存占用
- 并发能力
- 上下文长度
- 成本控制
- 模型量化
- KV Cache
10. Prompt 是什么
Prompt 就是用户给模型的输入提示。
一个简单的 prompt:
1 | |
一个更明确的 prompt:
1 | |
后者通常效果更好,因为它提供了:
- 角色
- 目标
- 受众
- 输出长度
- 表达风格
- 示例要求
11. Prompt 工程常用技巧
11.1 明确角色
1 | |
11.2 明确任务
1 | |
11.3 明确输出格式
1 | |
11.4 给出背景信息
1 | |
11.5 给出示例
1 | |
一个好的 prompt 通常不是越长越好,而是越清楚越好。
12. 大模型的常见参数
调用大模型 API 时,经常会看到一些参数。
12.1 temperature
temperature 控制输出的随机性。
- 数值低:输出更稳定、更保守
- 数值高:输出更发散、更有创造性
常见经验:
1 | |
12.2 top_p
top_p 也是控制采样范围的参数。
它会从累计概率达到某个阈值的一组 token 中采样。
通常不建议同时大幅调整 temperature 和 top_p,除非你清楚自己在做什么。
12.3 max_tokens
max_tokens 控制模型最多生成多少 token。
它不是控制输入长度,而是控制输出长度上限。
12.4 context window
上下文窗口表示模型一次能处理的最大 token 数,包括输入和输出。
如果上下文太长,模型可能无法完整处理,或者成本会明显增加。
13. 大模型的幻觉问题
幻觉是指模型生成了看似合理但实际错误的内容。
例如:
- 编造不存在的论文
- 编造 API 参数
- 编造历史事件
- 错误引用数据
- 对不确定的信息给出肯定回答
为什么会有幻觉?
因为模型本质上是在根据概率生成文本,而不是像数据库一样精确检索事实。
减少幻觉的方法:
- 给模型提供可靠上下文
- 要求模型说明不确定性
- 使用 RAG 接入资料库
- 对关键事实进行外部验证
- 对输出结果做人工审核
- 限制模型只基于给定材料回答
14. RAG 是什么
RAG 是 Retrieval-Augmented Generation,中文常译为检索增强生成。
它的基本思路是:
1 | |
普通大模型问答:
1 | |
RAG 问答:
1 | |
RAG 的优点:
- 可以使用私有知识库
- 可以更新知识,不必重新训练模型
- 可以减少幻觉
- 可以让回答带引用来源
- 适合企业文档问答、客服、知识库助手
15. RAG 的基本流程
一个简单的 RAG 系统通常包括:
1 | |
15.1 文档切分
长文档不能直接全部塞给模型,所以要切成小块。
例如:
1 | |
切分时要注意:
- chunk 太小:上下文不完整
- chunk 太大:检索不精准,成本高
- 最好保留标题、层级、来源信息
15.2 向量化
向量化就是把文本转成 embedding 向量。
语义相近的文本,向量距离也更近。
15.3 向量数据库
常见向量数据库或检索组件包括:
- FAISS
- Milvus
- Chroma
- Weaviate
- pgvector
- Elasticsearch / OpenSearch
15.4 检索
用户提问后,系统会把问题也转成向量,然后找到最相似的文档片段。
15.5 生成回答
最后把检索到的内容和用户问题一起交给大模型,让模型基于资料回答。
16. 微调是什么
微调是指在已有大模型基础上,用特定数据继续训练,让模型更适合某个任务或领域。
常见微调方式:
- Full Fine-tuning:全参数微调
- LoRA:低秩适配
- QLoRA:量化后的 LoRA 微调
- Adapter:插入小模块进行训练
微调适合:
- 固定格式输出
- 特定语气风格
- 专业领域任务
- 分类、抽取、结构化生成
- 让模型学习某类稳定模式
不适合把频繁变化的知识硬塞进模型。对于经常变化的知识,更推荐 RAG。
17. RAG 和微调怎么选
可以简单这样判断:
| 需求 | 更适合 |
|---|---|
| 查询企业内部文档 | RAG |
| 知识经常更新 | RAG |
| 需要引用来源 | RAG |
| 固定输出格式 | 微调 |
| 学习特定写作风格 | 微调 |
| 专业领域任务模式稳定 | 微调 |
| 既要知识库又要固定风格 | RAG + 微调 |
一句话总结:
1 | |
18. Agent 是什么
Agent 可以理解为:不只是回答问题,而是能够根据目标进行规划、调用工具、观察结果、继续执行的系统。
普通聊天模型:
1 | |
Agent:
1 | |
Agent 常见能力:
- 调用搜索工具
- 调用数据库
- 调用代码执行器
- 调用浏览器
- 读写文件
- 调用业务 API
- 多步骤任务规划
例如用户说:
1 | |
Agent 可能会执行:
- 读取文件
- 分析字段
- 清洗数据
- 生成图表
- 总结发现
- 输出报告
19. Function Calling / Tool Calling
工具调用是让大模型连接外部系统的重要方式。
模型本身不能真正查数据库、发邮件、下订单、执行代码。它需要通过工具接口完成这些动作。
一个工具调用的过程通常是:
1 | |
例如查询天气:
1 | |
工具调用让大模型从“会说话”变成“能做事”。
20. 多模态大模型
多模态模型不仅能处理文本,还能处理图像、音频、视频等信息。
常见多模态任务:
- 图片理解
- 图表分析
- OCR 识别
- 视频摘要
- 语音对话
- 文生图
- 图像编辑
- 多模态问答
例如:
1 | |
或者:
1 | |
多模态能力让大模型不再局限于纯文本输入。
21. 大模型应用开发常见架构
一个典型的大模型应用可能包含:
1 | |
常见组件:
- 前端:React、Vue、Next.js
- 后端:FastAPI、Flask、Node.js
- 模型接口:OpenAI API、Anthropic API、本地模型服务
- 向量库:FAISS、Milvus、Chroma、pgvector
- 编排框架:LangChain、LlamaIndex、Haystack
- 数据库:PostgreSQL、MySQL、MongoDB
- 缓存:Redis
- 部署:Docker、Kubernetes、云服务
22. 学习大模型需要掌握哪些基础
22.1 Python 基础
需要掌握:
- 函数
- 类
- 虚拟环境
- 包管理
- 文件读写
- API 请求
- 常用数据结构
22.2 机器学习基础
建议了解:
- 训练集、验证集、测试集
- 损失函数
- 梯度下降
- 过拟合
- 神经网络
- embedding
22.3 深度学习基础
建议了解:
- 张量
- 反向传播
- 激活函数
- 优化器
- GPU 训练
- Transformer
22.4 工程基础
做大模型应用时,工程能力非常重要:
- HTTP API
- 数据库
- Docker
- 日志
- 异步任务
- 权限控制
- 成本控制
- 监控告警
23. 大模型学习路线
可以按下面路线学习:
1 | |
如果以应用开发为目标,可以先学:
1 | |
如果以算法研究为目标,可以先学:
1 | |
24. 一个简单的大模型 API 调用示例
下面用伪代码展示一次模型调用的大致过程:
1 | |
核心是 messages:
1 | |
在真实项目中,还需要考虑:
- API Key 管理
- 异常处理
- 超时重试
- 日志记录
- Token 成本
- 流式输出
- 上下文截断
25. 一个简单 RAG Prompt 模板
1 | |
这个模板的重点是约束模型:
1 | |
这可以降低幻觉风险。
26. 大模型应用开发要注意的问题
26.1 成本控制
大模型调用通常按 token 计费。需要注意:
- 不要无意义地塞入过长上下文
- 对长文档先切分和检索
- 对重复问题做缓存
- 控制最大输出长度
- 根据任务选择合适模型
26.2 响应速度
影响响应速度的因素包括:
- 模型大小
- 输入长度
- 输出长度
- 网络延迟
- 是否使用流式输出
- 是否需要检索或工具调用
26.3 数据安全
企业应用尤其要注意:
- 不要泄露 API Key
- 不要把敏感数据发给不可信服务
- 对用户输入做权限控制
- 对工具调用做安全限制
- 对日志中的敏感信息做脱敏
26.4 可观测性
上线后需要记录:
- 请求耗时
- 输入 token 数
- 输出 token 数
- 错误率
- 检索命中率
- 用户反馈
- 模型回答质量
没有可观测性,就很难持续优化大模型应用。
27. 常见误区
27.1 大模型等于搜索引擎
大模型不是搜索引擎。它可以生成答案,但不保证答案一定真实。需要实时信息时,最好结合搜索或数据库。
27.2 参数越大一定越好
参数大通常能力更强,但也意味着成本更高、速度更慢。实际项目中要根据任务选择合适模型。
27.3 Prompt 可以解决一切问题
Prompt 很重要,但不是万能的。数据质量、系统架构、检索效果、工具设计都很重要。
27.4 RAG 一定能消除幻觉
RAG 可以减少幻觉,但不能完全消除。检索错误、文档质量差、Prompt 约束弱,仍然可能导致错误回答。
27.5 微调可以让模型记住所有知识
微调更适合学习行为模式和输出风格,不适合频繁更新的知识库。知识更新更适合 RAG。
28. 总结
大模型的核心可以从三个层面理解:
1 | |
学习大模型时,不需要一开始就追求把所有数学细节都弄懂。更好的方式是:
- 先会用模型 API 做简单应用
- 再理解 Prompt 和上下文管理
- 然后学习 RAG 和 Agent
- 最后深入 Transformer、微调和部署优化
一句话总结:
1 | |
参考关键词
后续可以继续深入学习这些关键词:
- Transformer
- Attention
- Tokenizer
- Embedding
- Pre-training
- Instruction Tuning
- RLHF
- DPO
- RAG
- Vector Database
- Agent
- Function Calling
- Fine-tuning
- LoRA
- Quantization
- KV Cache
- Context Window
- Prompt Engineering