系列总结:从数据到 Agent 的小模型工程地图
本篇是「小模型训练系列」第 14 篇:把数据、Tokenizer、Embedding、Attention、Loss、数据工程、LoRA、评估、RAG、部署、工具调用、Memory 和业务闭环串成一张完整的小模型工程地图。
正在沿着「小模型训练系列」系统学习,希望把概念、工程和真实判断串起来的读者。
这篇是「小模型训练系列」的最后一篇。
前面 13 篇一直在拆一个问题:
一个模型,究竟怎样从一堆参数,
变成能理解、能生成、能检索、能调用工具、能进入真实业务的系统?
如果只看某一个技术点,很容易陷进去。
Tokenizer 看起来像文本切分。
Embedding 看起来像数学向量。
Attention 看起来像矩阵运算。
Loss 看起来像一个数字。
LoRA 看起来像省显存技巧。
RAG 看起来像知识库。
Agent 看起来像会调用工具的聊天机器人。
但把这些点串起来以后,会看到另一件事:
AI 工程不是单点技术,而是一条从数据到系统、从系统到业务、再从业务反馈回到数据的链路。
这篇不再展开新的技术细节。
它要做一次总复盘。
目标是把整条路线画成一张地图。
读完以后,应该能回答三个问题:
- 每一篇在整条链路里处于什么位置
- 做 AI 项目时,问题到底该归因到哪里
- 小模型训练、RAG、部署、Agent 和业务闭环之间到底是什么关系
1. 先看整张地图
整个系列可以压缩成一条主线:
flowchart LR
A["数据"] --> B["Tokenizer"]
B --> C["Embedding"]
C --> D["Attention"]
D --> E["Loss"]
E --> F["训练与优化"]
F --> G["数据工程"]
G --> H["LoRA / QLoRA"]
H --> I["评估体系"]
I --> J["RAG / 微调选择"]
J --> K["推理部署"]
K --> L["工具调用"]
L --> M["Memory 与工作流"]
M --> N["行业业务闭环"]
N --> A
这条线不是“学完一个再学下一个”的目录。
它更像一条循环。
数据进入模型。
模型形成能力。
能力进入系统。
系统进入业务。
业务产生反馈。
反馈再回到数据。
这就是小模型工程最重要的骨架。
很多 AI 项目失败,不是因为某一个点完全不会。
而是因为只做了其中一截。
比如只训练,没有评估。
只接知识库,没有流程。
只做 Agent,没有权限和日志。
只看模型能力,没有业务反馈。
一旦链路断了,系统就很难持续变好。
2. 这 14 篇分别在解决什么
先把整套文章放在一张表里。
| 顺序 | 章节 | 核心问题 |
|---|---|---|
| 1 | 模型训练流程图解 | 从 0 到 1 看见训练全流程 |
| 2 | Tokenizer 与样本构造 | 模型到底读到了什么 |
| 3 | Embedding | 文本如何变成数学空间 |
| 4 | Attention | 模型如何建模词与词的关系 |
| 5 | Loss 与优化 | 模型为什么会朝正确方向改变 |
| 6 | 数据工程 | 为什么数据决定模型上限 |
| 7 | LoRA / QLoRA | 为什么低成本微调可行 |
| 8 | 评估体系 | 模型到底有没有真的变好 |
| 9 | RAG vs 微调 | 知识应该放进检索还是写进参数 |
| 10 | 推理与部署 | 模型能力如何稳定跑起来 |
| 11 | 工具调用与 Agent | 模型如何从会说话变成会做事 |
| 12 | Memory 与工作流 | 模型如何承接长期任务 |
| 13 | 行业模型与业务闭环 | 训练如何进入真实场景 |
| 14 | 系列总结 | 把整条工程链路串成地图 |
如果把这张表再压缩,会得到三个阶段:
| 阶段 | 包含章节 | 关注点 |
|---|---|---|
| 能力形成 | 1-6 | 数据如何被模型吸收,能力如何被塑造 |
| 能力改造 | 7-9 | 如何低成本改变模型,如何判断是否有效 |
| 能力落地 | 10-13 | 如何部署、行动、记忆,并进入业务闭环 |
第 14 篇的作用,就是把这三个阶段合起来看。
3. 第一层:数据不是材料,而是方向
最开始很容易以为,数据只是训练模型的原料。
就像做饭需要食材。
这个比喻没错,但不够。
在模型训练里,数据不只是材料,还是方向。
模型并不知道什么叫“正确”。
它只能从样本里学习:
- 哪些输入对应哪些输出
- 哪些表达更常出现
- 哪些模式应该被强化
- 哪些错误应该被惩罚
所以数据决定了模型看见的世界。
如果数据里都是短句,模型会更习惯短句。
如果数据里推理链条很少,模型很难学会稳定推理。
如果数据里充满重复、错误和冲突,模型也会把这些东西吸进去。
数据工程不是训练前的杂活。
数据工程本身就在塑造模型能力。
数据不是放进机器里的东西。
数据是告诉机器往哪里长的东西。
这也是为什么系列里单独写了数据工程。
因为很多模型问题,根本不是模型结构问题,而是数据问题。
4. 第二层:Tokenizer 决定模型看见文本的颗粒度
模型不直接读中文、英文、句子和段落。
它读 token。
Tokenizer 做的事情,看起来只是切分文本。
但它决定了模型观察世界的最小颗粒度。
同一句话,如果切分方式不同,模型看到的结构也不同。
这会影响:
- 训练效率
- 上下文长度
- 多语言表现
- 特殊符号处理
- 代码能力
- 罕见词处理
Tokenizer 不像 Attention 那样耀眼。
但它像入口。
入口设计不好,后面再强也会吃力。
尤其在小模型里,token 预算更宝贵。
同样一句话,用更合理的 token 表示,等于给模型省下理解成本。
5. 第三层:Embedding 把词放进语义空间
Tokenizer 把文本切成 token。
Embedding 把 token 变成向量。
向量不是简单编号。
它是一种位置。
在这个空间里,相似的概念可以靠近,相关的概念可以形成方向。
这就是模型开始“理解”的第一步。
当然,这里的理解不是人类意义上的理解。
更准确地说:
模型把语言关系压进了一个可计算的空间。
“猫”和“狗”可能靠近。
“医生”和“医院”可能相关。
“退款”和“订单异常”在电商场景里可能被拉近。
Embedding 让语言不再只是符号,而是可以被计算的关系。
后面的 Attention、Loss、RAG,都建立在这个基础上。
6. 第四层:Attention 让模型看见关系
Embedding 给每个 token 一个位置。
但单个 token 不够。
语言的意思来自关系。
“苹果发布了手机”和“手机发布了苹果”,词差不多,关系完全不同。
Attention 做的事情,是让模型在当前上下文里判断:
哪些 token 对当前 token 更重要。
这就是为什么 Attention 是关系建模引擎。
它不是简单地“看全部文本”。
它是在不同位置之间分配注意力。
谁影响谁。
谁补充谁。
谁限制谁。
谁决定下一步。
模型的上下文能力、指代理解、长文本理解、推理能力,很多都和这套机制有关。
但 Attention 也带来成本。
上下文越长,计算和显存压力越大。
所以后面才会有推理部署、KV Cache、窗口策略这些问题。
能力和成本,永远绑在一起。
7. 第五层:Loss 把错误变成方向
训练模型时,最关键的不是模型一开始就会。
而是模型知道自己哪里错了。
Loss 就是把错误变成数字。
优化器再根据这个数字,把参数往某个方向推一点。
一次更新很小。
很多次更新之后,模型能力开始被塑形。
这也是系列里反复强调的一句话:
模型不是记住了答案,而是被目标函数塑形了。
Loss 越低,不一定代表模型在真实任务里越好。
训练集 Loss 好看,也可能只是记住了训练数据。
所以 Loss 只能说明一部分问题。
它回答的是:
在当前训练目标下,模型有没有更接近目标?
但真实世界还需要评估体系来接住。
8. 第六层:数据工程决定上限,训练决定接近上限的程度
如果数据本身质量很差,训练再努力,也是在靠近一个很低的上限。
数据工程决定上限。
训练优化决定模型能不能接近这个上限。
这句话很重要。
因为很多时候,模型表现不好,第一反应是:
是不是模型不够大?
是不是参数不够多?
是不是训练轮数不够?
这些都有可能。
但还有一种更常见的情况:
数据没有告诉模型正确方向。
比如样本分布不合理。
比如高质量样本太少。
比如错误答案被当成正确答案。
比如任务格式不统一。
比如训练样本和真实任务不匹配。
这类问题靠堆参数很难解决。
它需要回到数据。
9. 第七层:LoRA 不是魔法,而是低秩改造
LoRA / QLoRA 的意义,不是让所有人都能廉价训练一个万能模型。
它更现实的价值是:
在不大幅改动原模型的情况下,
用较低成本改变模型在某些任务上的行为。
它像给原模型加一个可训练的小旁路。
原模型的大部分参数保持不动。
新增的小矩阵负责学习任务差异。
这样可以显著降低显存和训练成本。
但 LoRA 也不是万能。
如果基础模型本来不会某类能力,LoRA 很难凭空创造。
如果数据很差,LoRA 也会学歪。
如果任务需要大量新知识,RAG 可能比微调更适合。
所以 LoRA 的关键不是“能不能训”。
而是:
该不该训,
训什么,
用什么数据训,
训完怎么评估。
10. 第八层:评估体系决定能不能相信改进
没有评估,就没有“变好”。
只有感觉。
模型训练最容易出现一种错觉:
看起来更会说了,所以应该变强了。
但模型可能只是语气更像。
事实能力没有变。
稳定性没有变。
旧能力还可能退化。
所以评估体系要回答的不只是“有没有答对”。
还要回答:
- 是否更稳定
- 是否更可靠
- 是否更便宜
- 是否更快
- 是否减少幻觉
- 是否保留旧能力
- 是否在真实任务里有用
评估体系像体检。
不体检,系统可能带病上线。
只看一个指标,也可能漏掉关键问题。
11. 第九层:RAG 和微调解决的是不同问题
RAG 和微调经常被拿来比较。
但更好的理解是分工。
| 问题 | 更适合的方向 |
|---|---|
| 知识经常变化 | RAG |
| 需要引用来源 | RAG |
| 需要改变表达风格 | 微调 |
| 需要稳定输出格式 | 微调 / 规则 |
| 需要接入业务数据 | RAG / 数据库 |
| 需要改变任务习惯 | 微调 |
| 需要严格流程控制 | 工作流 |
不要把所有问题都塞进模型参数。
也不要把所有能力都交给检索。
稳定能力进模型。
动态知识进检索。
明确流程进工作流。
高风险判断进人工确认。
这句话几乎可以作为后半段系列的总原则。
12. 第十层:部署不是把模型跑起来,而是让能力稳定可用
模型在本地跑起来,只是第一步。
部署要解决的是:
- 延迟
- 并发
- 成本
- 显存
- 容错
- 监控
- 版本
- 灰度
- 回滚
推理阶段还会遇到 prefill、decode、KV Cache、量化、批处理、流式输出这些问题。
这些听起来像工程细节。
但它们决定用户是否真的用得起来。
一个模型如果能力很好,但回答太慢,成本太高,或者高峰期不稳定,仍然很难落地。
部署是在能力和现实之间搭桥。
没有这座桥,模型能力只能停在实验环境。
13. 第十一层:工具调用让模型从回答走向行动
模型只输出文字时,它主要在回答。
模型能调用工具时,它开始行动。
但行动带来责任。
查询天气和删除数据不是同一种风险。
生成草稿和发送邮件也不是同一种风险。
所以工具调用一定要有边界:
- 工具 schema
- 参数校验
- 权限控制
- 日志记录
- 错误处理
- 人工确认
- 回滚机制
Agent 不应该被理解成“模型自由做事”。
更准确地说:
Agent 是模型判断、工具执行、系统边界和人工确认组成的行动结构。
模型负责提出下一步。
工具负责执行动作。
系统负责限制和记录。
人负责关键判断。
这才是可控行动。
14. 第十二层:Memory 与工作流让任务可以延续
工具调用解决一次行动。
Memory 与工作流解决长期任务。
真实任务不是一次回答。
写文章、做项目、处理客户、运营网站、训练模型,都是过程。
过程需要记住:
- 目标是什么
- 已经做到哪一步
- 哪些信息已经确认
- 哪些事情不能再做
- 哪些动作需要等待确认
- 中断以后如何恢复现场
Memory 的价值,不是让模型显得亲切。
真正的价值是:
让任务可以被交接、被恢复、被验证、被继续推进。
工作流的价值,也不是画流程图。
真正的价值是:
让每一步行动都有位置、有边界、有下一步。
这就是 Agent 从玩具走向工具的关键。
15. 第十三层:业务闭环让模型持续产生价值
模型进入业务以后,问题会变得更现实。
它是否减少人工重复劳动?
它是否降低错误率?
它是否提升响应速度?
它是否让经验沉淀下来?
它是否带来可以衡量的收益?
这些问题不是单靠模型回答能力解决的。
需要业务闭环。
flowchart LR
A["真实任务"] --> B["模型处理"]
B --> C["人工审核"]
C --> D["业务结果"]
D --> E["反馈样本"]
E --> F["知识 / 规则 / 训练数据更新"]
F --> B
业务闭环让模型不只是上线。
它让模型进入持续改进的循环。
没有闭环,AI 功能容易停在演示。
有了闭环,系统才开始积累。
16. 把整套系统拆成三层
如果把上面的内容重新整理,可以得到三层结构。
| 层级 | 主要内容 | 解决的问题 |
|---|---|---|
| 模型层 | Tokenizer、Embedding、Attention、Loss、训练、LoRA | 能力如何形成和改变 |
| 系统层 | RAG、评估、部署、工具调用、Memory、工作流 | 能力如何稳定运行和行动 |
| 业务层 | 真实任务、人工审核、反馈样本、业务指标、灰度迭代 | 能力如何产生价值 |
这三层缺一不可。
只有模型层,容易停在训练和实验。
只有系统层,容易做出一个漂亮但没有业务牵引的平台。
只有业务层,没有模型和系统基础,又会变成口号。
一个真正能落地的 AI 项目,必须让三层互相对齐。
17. 判断问题该归因到哪里
做 AI 项目时,最重要的能力之一,是知道问题该归因到哪里。
下面这张表很实用。
| 现象 | 可能归因 | 优先检查 |
|---|---|---|
| 模型经常答非所问 | 意图理解 / 样本格式 | 数据样本、提示词、任务定义 |
| 输出风格不稳定 | 微调数据 / 系统提示 | 高质量风格样本、输出规范 |
| 知识过期 | RAG / 数据源 | 知识库更新和引用来源 |
| 幻觉严重 | 检索、约束、评估 | 是否要求引用、是否限制未知回答 |
| 真实任务表现差 | 数据分布不匹配 | 训练样本是否贴近现场 |
| 成本太高 | 模型规格 / 部署策略 | 量化、批处理、小模型分工 |
| 延迟太高 | 推理链路 | KV Cache、流式输出、并发策略 |
| 自动化风险大 | 权限 / 工作流 | 高风险动作是否确认 |
| 项目无法持续改进 | 反馈闭环缺失 | 是否记录结果和人工修改 |
这比盲目换模型更重要。
很多问题不是“模型不够强”。
而是链路上的某一层没有做好。
18. 小模型工程的真正优势
小模型不是大模型的弱化版。
它有自己的位置。
小模型更适合:
- 边界明确的任务
- 固定流程里的分类和抽取
- 低延迟场景
- 本地部署场景
- 成本敏感场景
- 数据隐私要求高的场景
- 可以用业务闭环持续改进的场景
小模型不适合什么?
- 极开放的复杂推理
- 高度跨领域的泛化
- 缺少数据的模糊任务
- 没有流程边界的自由行动
所以小模型工程不是硬要用小模型替代大模型。
更合理的策略是:
把大模型用于开放理解和复杂生成,
把小模型用于明确任务和高频链路,
用工作流把它们组合起来。
这才是更现实的工程思路。
19. 一个最小可用的小模型系统长什么样
如果要从零做一个真实可用的小模型系统,不需要一开始就很复杂。
可以先有这几个部件:
| 部件 | 作用 |
|---|---|
| 真实任务入口 | 收集用户实际问题 |
| 基础知识库 | 提供可检索事实 |
| 小模型任务模块 | 做分类、抽取、改写、质检等明确任务 |
| 通用模型兜底 | 处理复杂生成和开放问题 |
| 工作流编排 | 决定任务怎么走 |
| 人工审核 | 接住高风险和不确定结果 |
| 日志与评估 | 记录结果,判断是否变好 |
| 反馈样本池 | 把人工修改和失败案例沉淀下来 |
这套系统不追求一步到位。
它追求可持续。
flowchart TB
A["真实任务入口"] --> B["任务识别"]
B --> C{"任务是否明确"}
C -->|明确| D["小模型模块"]
C -->|复杂| E["通用模型辅助"]
D --> F["工作流检查"]
E --> F
F --> G{"是否高风险"}
G -->|否| H["生成结果"]
G -->|是| I["人工审核"]
I --> H
H --> J["记录业务结果"]
J --> K["反馈样本池"]
K --> B
这张图的重点是组合。
小模型不是孤立存在。
它在系统里承担稳定、低成本、边界明确的任务。
20. 学习这条路线时,最容易走偏的地方
第一,过早迷恋模型结构。
结构当然重要。
但初学时只盯 Attention、参数量、显存,容易忽略数据、评估和业务。
第二,把 RAG 当成万能知识库。
RAG 解决知识进入上下文的问题。
它不自动解决权限、流程、评估和结果负责。
第三,把微调当成补知识。
微调更适合改变行为、格式和风格。
经常变化的知识,通常不应该写死在参数里。
第四,把 Agent 当成模型自由行动。
Agent 真正难的是权限、状态、日志、确认和回滚。
第五,把上线当成结束。
上线只是开始。
没有反馈闭环,系统不会越用越好。
21. 读完这个系列后,应该形成的判断力
这个系列不是为了让读者记住所有术语。
更重要的是形成判断力。
比如看到一个 AI 项目时,可以问:
| 问题 | 对应判断 |
|---|---|
| 数据从哪里来? | 判断上限和真实性 |
| 任务定义清楚吗? | 判断训练和评估是否成立 |
| 知识是动态还是稳定? | 判断用 RAG、微调还是配置 |
| 有评估集吗? | 判断改进是否可信 |
| 部署成本可控吗? | 判断能不能规模化 |
| 工具调用有权限吗? | 判断是否安全 |
| Memory 有范围和过期吗? | 判断是否会记错或串场 |
| 有人工审核吗? | 判断风险是否被接住 |
| 反馈会回流吗? | 判断能不能持续变好 |
这套问题,比单纯问“用了哪个模型”更重要。
因为模型只是答案的一部分。
工程链路才决定结果。
22. 小模型工程不是降级,而是分工
有一种误解是:
能用大模型,为什么还要小模型?
这个问题像是在问:
既然有大型机械,为什么还要螺丝刀?
答案很简单。
不同工具有不同位置。
大模型适合处理开放、复杂、需要泛化的问题。
小模型适合处理高频、明确、可评估、低成本的问题。
在一个成熟系统里,大模型和小模型不是互相替代。
它们更像分工。
flowchart LR
A["开放问题"] --> B["通用大模型"]
C["高频明确任务"] --> D["小模型"]
E["动态知识"] --> F["RAG"]
G["确定流程"] --> H["工作流"]
I["高风险判断"] --> J["人工确认"]
B --> K["AI 系统"]
D --> K
F --> K
H --> K
J --> K
这张图比“选哪个模型”更接近真实工程。
真正的问题不是单选。
真正的问题是组合。
23. 从学习路线看,下一步可以怎么走
这个系列结束以后,后续学习可以分三条线。
第一条线:继续深入模型本身。
可以学习:
- Transformer 细节
- 位置编码
- MoE
- RLHF / DPO
- 多模态模型
- 推理优化
第二条线:继续深入系统工程。
可以学习:
- 向量数据库
- 检索排序
- Prompt 编排
- Agent 框架
- 工作流引擎
- 观测和日志
- 模型服务化
第三条线:继续深入业务落地。
可以学习:
- 数据标注
- 业务指标设计
- 人机协作流程
- 灰度上线
- 合规边界
- 商业化闭环
这三条线没有绝对先后。
但不要只走一条。
只懂模型,容易离真实业务太远。
只懂业务,容易不知道技术边界。
只懂系统,容易做出很复杂但没有价值的架构。
24. 这套地图最重要的提醒
AI 项目最容易让人兴奋。
因为模型一开口,就像已经完成了很多事。
但真正可靠的系统,不能只看开口那一刻。
还要看:
- 数据是否可靠
- 评估是否可信
- 成本是否可控
- 权限是否清楚
- 失败是否可恢复
- 人工是否能接住
- 反馈是否会沉淀
- 下一轮是否能变好
模型回答得漂亮,只是开始。
系统能长期稳定地产生价值,才是目标。
25. 最后一张工程地图
可以把整个系列压成这张最终地图:
flowchart TB
A["真实问题"] --> B["数据收集与清洗"]
B --> C["样本构造与 Tokenizer"]
C --> D["Embedding 与 Attention"]
D --> E["Loss 与训练优化"]
E --> F["数据工程与微调"]
F --> G["评估体系"]
G --> H{"知识还是能力问题"}
H -->|知识变化快| I["RAG / 知识库"]
H -->|行为需改变| J["LoRA / 微调"]
I --> K["推理部署"]
J --> K
K --> L["工具调用"]
L --> M["Memory 与工作流"]
M --> N["行业业务闭环"]
N --> O["反馈样本"]
O --> B
这张图里有一个最关键的箭头:
反馈样本 -> 数据收集与清洗
它意味着 AI 工程不是一次性项目。
它是持续循环。
每一次真实使用,都会产生新证据。
每一次人工修改,都会暴露新边界。
每一次失败,都是下一轮改进的材料。
系统能不能把这些东西接住,决定它会不会越来越好。
26. 最核心的一句话
小模型工程不是把模型训小。
也不是把大模型能力压缩一遍。
更准确地说:
小模型工程,是在明确任务、明确数据、明确边界、明确反馈的前提下,
把合适的模型放进合适的系统位置,
让它以可控成本持续产生价值。
模型是能力。
数据是方向。
评估是尺子。
RAG 是外部知识。
微调是行为改造。
部署是稳定运行。
工具调用是行动入口。
Memory 是任务现场。
工作流是秩序。
业务闭环是价值循环。
这 14 篇文章,其实都在讲同一件事:
不要只看模型本身。
要看模型怎样被数据塑造,
怎样被系统承载,
怎样被业务验证,
怎样在反馈里继续变好。
到这里,小模型训练系列就收束了。
它不是结束。
它更像把地图摊开。
后面再看任何 AI 工具、模型、Agent、知识库、行业方案,都可以先问:
它在这张地图的哪一层?
它解决的是能力问题、知识问题、系统问题,还是业务问题?
它有没有形成闭环?
能问出这些问题,才算真正从“看热闹”走到了“看门道”。
持续学习,持续记录,持续筛选
如果这篇对你有用,可以继续沿着主题读下去。
福星家和会长期记录 AI 技术、生活成长、真实好物与正向文化观察。产品体验、人物故事、教育内容、生活方式、文化作品和内容共创都欢迎邮件沟通,合作内容会清楚标注。