完整学习LLM(一):为什么我要系统学习大模型
好家伙,
最近这几天一直在写 RAG.
从"让大模型先查资料再回答",写到"微调和 RAG 的区别",又写到"为什么攻击力大于 50 这种问题不能只靠 RAG".
写着写着我发现一个问题:
我对大模型的理解有点像拼图.
这里懂一点 RAG,那里懂一点微调,再往旁边摸一点 Agent,但它们之间到底怎么连起来,其实还不够清楚.
比如我现在知道:
text
RAG 适合查资料
数据库适合查数据
微调适合改变模型回答习惯
但继续往下问:
text
为什么文本能变成向量?
为什么模型能一个字一个字生成答案?
为什么同一个问题它每次回答不一样?
为什么 prompt 改一点点,结果差这么多?
Agent 到底比普通聊天多了什么?
这些问题如果不系统学,后面写文章和做项目都会卡住.
所以我准备开一个系列:
text
我要完整学习LLM!
这篇就当第一篇,先把为什么要学、准备怎么学、后面要写什么讲清楚.
0.背景:我不想只停留在会用
一开始用大模型的时候,其实很容易满足.
打开 ChatGPT,问一个问题,它给你一段回答.
接 API,传一个 prompt,拿到一个 response.
看起来好像已经会用了.
但只要开始做项目,问题马上就出来了.
比如做一个项目知识库:
text
用户问问题
-> 大模型回答
刚开始看起来很顺.
但真实情况是:
text
1. 模型不知道我的本地资料
2. 文档太长,不能全塞进去
3. 检索出来的片段不一定相关
4. 模型可能一本正经地胡说
5. 用户需要来源,不能只给结论
6. 有些问题不是问答,而是数据库查询
这时候我才发现:
text
会调用 API 只是开始.
真正要把大模型用到项目里,需要理解它周围的一整套东西.
不是只有模型.
还有文档,向量库,数据库,工具调用,权限,评测,部署.

所以这次我想慢一点.
不急着堆新词.
每天只拆一个问题.
1.我现在最想搞清楚的几个问题
我先把现在脑子里的问题列出来.
第一个问题:
text
大模型到底是什么?
它不是普通的 if else 程序.
但也不是魔法.
它到底怎么从一段输入,生成一段输出?
第二个问题:
text
Token 是什么?
为什么一句话进入模型前要被切成 token?
为什么有时候中文、英文、标点都会影响 token 数?
第三个问题:
text
Embedding 是什么?
我现在大概知道它是"把文本变成向量".
但这个向量为什么能表示语义?
为什么相似的问题能找到相似的文档?
第四个问题:
text
RAG 到底靠不靠谱?
前几篇已经写了一部分.
但还有很多没讲:
text
文档怎么切块?
TopK 怎么选?
为什么要重排?
怎么判断检索结果好不好?
第五个问题:
text
微调到底该什么时候用?
如果只是想让模型知道我的项目文档,那应该用 RAG.
那微调到底适合什么?
是风格?
是格式?
还是某种固定任务?
第六个问题:
text
Agent 到底是什么?
如果只是模型回答问题,那是聊天.
如果模型开始调用工具,读文件,查数据库,执行命令,这才有一点 Agent 的味道.
但这里面风险也很大.
工具权限怎么控?
做错了怎么办?
这些都要慢慢拆.
2.这次学习不想怎么做
我不想写成那种一篇文章塞满术语的东西.
比如:
text
Transformer
Attention
RLHF
LoRA
RAG
Agent
Eval
全放在一篇里,看起来很完整,但看完可能什么都没记住.
我也不想一开始就上公式.
不是说公式不重要.
而是如果直觉没建立,公式看起来就是一串符号.
所以我想按这种方式写:
text
先问一个具体问题
再解释这个概念为什么出现
再用一个例子说明
最后总结它能解决什么,不能解决什么
比如写 Token,就不从论文开始.
先从:
text
为什么一句话会被模型切碎?
开始.
写 Embedding,就从:
text
为什么 RAG 能找到语义相近的文档?
开始.
这样更容易跟项目经验连起来.
3.准备按什么路线学
目前先把路线定成 8 块.
text
1. LLM 基础概念
2. Transformer 和 Attention
3. 模型训练过程
4. Prompt 和模型使用
5. RAG 知识库
6. 微调 Fine-tuning
7. Agent 和工具调用
8. 评测、安全、部署
这不是为了显得很系统.
而是为了避免学习顺序乱.
我之前就是乱跳.
今天看 RAG,明天看 Agent,后天又看到 LoRA.
每个都知道一点,但很难说自己真的理解.
这次按顺序来.
先把基础概念打稳,再往应用层走.
4.第一阶段先学什么
第一阶段先从这些问题开始:
text
大模型到底是什么?
Token 是什么?
Embedding 是什么?
上下文窗口是什么?
为什么模型是在预测下一个 token?
这些东西看起来基础,但后面都要用.
比如 RAG 里会用到 Embedding.
Prompt 里会受上下文窗口限制.
模型生成答案时,本质上还是在一步步预测 token.
如果这些没弄明白,后面很多概念都只能硬背.
我不想硬背.
我想知道它们为什么会这样设计.
5.后面会怎么接到项目里
这次学习不是纯理论.
我还是会尽量和实际项目连起来.
比如:
text
RAG 会对应项目知识库
数据库查询会对应配置表筛选
Docker 部署会对应后端服务
Agent 会对应工具调用和自动化流程
评测会对应发布前怎么判断答案是否可靠
也就是说,最后不是为了写一堆概念笔记.
而是为了能回答:
text
如果我要做一个真实的大模型应用,我到底该怎么设计?
比如这个结构:

用户问一个问题.
模型不一定直接回答.
它可能要:
text
查知识库
查数据库
调用工具
拿到结果
再组织答案
这才像一个能落地的系统.
6.这个系列准备怎么写
我准备给自己定一个简单规则:
text
每天一篇.
每篇只讲一个核心问题.
不追求一次讲完.
能用例子说明就不用空话.
能画流程就画流程.
每篇文章大概按这个节奏:
text
0. 为什么要学这个
1. 先定义一个问题
2. 这个概念是什么
3. 它是怎么工作的
4. 放到项目里会怎么用
5. 容易误解的地方
6. 总结
这样一篇不会太散.
也方便后面串起来.
7.总结
这篇主要是给后面的系列开个头.
我现在想清楚的一点是:
text
LLM 不是只学一个模型.
LLM 应用也不是只调一个接口.
它背后有一条链路:
text
文本怎么变成 token
token 怎么变成向量
模型怎么计算上下文
模型怎么生成下一个 token
模型怎么训练出来
Prompt 怎么控制它
RAG 怎么给它补资料
微调怎么改变它的回答习惯
Agent 怎么让它调用工具
最后怎么评测和部署
这条链路不短.
但如果每天只拆一个问题,应该能慢慢走通.
最后一句话总结:
text
我不是想学会几个 LLM 热词.
我是想把大模型从原理到落地这条路走一遍.
下一篇开始,先从最基础的问题讲:
text
大模型到底是什么?