第14章
大模型应用基础
从“猜下一个词”到“处理一张工单”
本章导航:从原理到一张工单
导入:客服小李的早晨
早上 8 点,工单系统里躺着 37 张异常工单:延误、破损、少件。小李要在 TMS 查运单、去 WMS 查库存、翻理赔标准 PDF,再逐张判断:答复客户、联系承运方,还是转人工升级——一上午就这么没了。
🤔 这类活的共同点
信息查询 + 政策比对 + 多步判断:三样都不是纯体力活,却极耗人力。
🎯 本章的主线问题
大语言模型凭什么能接这种活?它到底是什么、知道什么、缺什么、怎么补——讲透这四问,§14.7 的工单智能体自然成立。
本质:一台“猜下一个词”的机器
给模型一段已经出现的词元序列,它输出下一个词元的条件概率分布;选一个词元接上,再预测下一个,如此循环——写文章、答问题、生成代码,都是这一个动作的重复。
和老祖宗 N-gram 的本质区别
| 维度 | N 元文法(N-gram) | 大语言模型 |
|---|---|---|
| 依据什么预测 | 只看前 N−1 个词的固定短窗口 | 完整序列(窗口内全部历史) |
| 概率从哪来 | 语料中数频次得到的固定对照表 | 参数化的函数现场计算 |
| 没数过的组合 | 概率为零,无从下手 | 靠语义泛化给出合理分布 |
| 长程依赖 | 窗口之外一概不知 | 注意力可回望任意位置(§14.1.3) |
区别于以往 NLP 模型的三个关键特征
📏 规模
参数量与训练数据量跨数量级增长——不是把旧模型放大一点,而是大到质变。
📚 自监督预训练
在海量无标注文本上学通用语言能力:“预测下一词”本身就是不需要人工标注的训练信号。
✨ 涌现能力
规模越过临界点后,出现训练目标里没人直接教过的能力:多步推理、上下文学习等(习题 2)。
技术演进:四级台阶
RNN 的两个困难:记忆会淡、计算要排队
训练与使用:两副面孔
🏋️ 训练(一次性,昂贵)
在超大规模语料上用反向传播调全部参数(第 13 章的四步循环,规模放大无数倍)。训完,参数冻结。
💬 使用(每次对话,便宜得多)
只做前向计算:读提示词、逐词元生成。对话中“记住”的内容在上下文里,不在参数里——关掉窗口,参数纹丝不动。
Transformer:只用注意力,不用循环
2017 年论文《Attention Is All You Need》提出:抛弃 RNN 的逐步递推,让序列中每个位置直接“看”所有位置,按相关程度加权汇总信息。长程依赖不再靠“传话”,并行计算的大门同时打开。
🔍 自注意力
同一序列内部互相关注:每个词元都向全场提问、按相关度取材(核心,接下来三页)。
🧱 前馈网络
每个位置独立过一遍的小型全连接网络,负责“消化”注意力汇来的信息。
🔁 堆叠 N 层
“注意力+前馈”打包成一层,重复堆叠:层层加工,语义层层加深(如第 13 章的特征层级)。
注意力机制:像查图书馆一样组装理解
注意力的计算公式:三步走
① 打分
\(QK^{T}\):查询与每个键做点积——方向越一致,分越高。
② 缩放+Softmax
除以 \(\sqrt{d_k}\) 防分数过大(呼应第 13 章 Softmax 的指数放大),再归一化成权重。
③ 加权汇总
权重乘 \(V\) 求和:谁相关,谁的“正文”在这次理解里占比就大。
互动:注意力权重演示
📐 打分明细(点积 → ÷√dk)
🎯 Softmax 注意力权重
多头、位置编码与因果掩码
👀 多头注意力
并行多组 Q/K/V 投影,各头关注不同关系(指代、搭配、因果……),结果拼接——像多个视角同时读一句话。
📍 位置编码
注意力本身不分先后:需额外注入位置信息,模型才知道谁在前谁在后(“狗咬人”≠“人咬狗”)。
🎭 因果掩码
生成时只能看已生成的部分:把“未来”位置的注意力分数掩去——训练时防偷看答案,推理时本就还没生成。
全景:decoder-only 的生成流水线
预训练打地基,后训练教做人
📚 预训练
海量文本上自监督学“下一词预测”:得到什么都知道一点、但不会按指令办事的基座模型。
🎓 后训练
指令微调(学“问—答”格式)+ RLHF(人类反馈强化学习:人给回答排序,模型向高分答案靠拢)——对齐到“有用、诚实、无害”。
动画:《注意力机制》(2 分 06 秒)
词元化:先给文字编上号
神经网络只吃数字。文本进入模型的第一道工序,是把连续文字切成小块(词元)并逐一编号——就像物流里先给每件货物贴条码,后续所有系统都认号不认货。
按词切分与按字切分:两个极端都不行
| 切法 | 优点 | 致命伤 |
|---|---|---|
| 按词 | 每个词元语义完整,序列短 | 词表爆炸(词形变化无穷);未登录词——新词、新词组直接没号可用 |
| 按字/字节 | 词表极小,任何文本都能表示 | 单个字语义太碎,序列过长:计算贵、长程关系更难学 |
| 子词(折中) | 常见词整块保留,生僻词拆成小块拼 | 需要一套从数据里学出来的切分算法——BPE |
词元化的两步:切分编号 → 向量化
BPE:让高频组合“转正”为词元
互动:BPE 合并演示
📚 训练语料(物流高频词 ×频次)
📜 合并日志
🎓 收官检验:切分教材原句
动画:《BPE 字节对编码》(2 分 05 秒)
BPE 的近亲与“永不缺号”的保证
| 变体 | 与 BPE 的差别 |
|---|---|
| WordPiece | 选合并对时不只看频次,还看合并后语言模型似然的提升(BERT 系) |
| SentencePiece | 把空格也当普通字符处理,不依赖预先分词,对中文、日文友好 |
词嵌入:从“编号”到“坐标”
🚫 one-hot 的困境
用编号直接表示:向量只有一个 1、其余全 0——“冷藏”与“冷冻”距离和“冷藏”与“卡车”一样远,编号不携带任何语义。
🧭 嵌入矩阵
每个词元 ID 对应一行可训练的稠密向量(几百到几千维)。训练中,语境相似的词元,向量被拉近——语义以几何距离的形式沉淀下来。
余弦相似度:量两个向量“像不像”
📐 读法
只看方向夹角,不看长度:1 =同向(语义最接近),0 =正交(无关),−1 =反向。
🔎 用途预告
“冷藏”的近邻里会出现“冷链、冷冻、保鲜”——而 §14.3 的 RAG 检索,用的正是这把尺子在向量库里找最像的文档块。
静态词向量的天花板:一词多义
Word2Vec、GloVe 给每个词一个固定向量:可“苹果”在“苹果手机”和“水果苹果”里是一个意思吗?固定向量只能把几种含义平均成一团,谁也不像。
上下文窗口:模型的工作台面
窗口的三个硬伤
✂️ 硬截断
对话或文档超过窗口,最早的内容被直接丢弃——不是记性变差,是没了。
💸 扩容昂贵
O(n²) 的算力与显存账(上一页):窗口每扩一档,成本陡增。
🕳️ 中间迷失
长文本里,模型对开头与结尾记得牢,对中间段落的利用率明显下降——放进去了,也不等于用得好。
参数记不住的三类知识
🗓️ 训练截止之后的事
参数冻结于训练数据收集时点:新政策、新价格、新网点——它没见过。
🏢 企业私有数据
理赔标准、时效承诺、内部 SOP 从未出现在公开语料里——它不可能学过。
🌀 幻觉
不知道时,模型倾向于流畅地编一个:语气笃定、细节具体、内容虚构——客服场景最危险的失效模式。
RAG 框架:离线建库,在线开卷
文本切块:RAG 里最不起眼的胜负手
⚖️ 块的大小
太大:一个块混多个主题,检索回来的多半不相关还占窗口;太小:语义被切碎,单块说不清一件事。
✂️ 两种切法
固定长度+重叠:简单稳健,重叠防边界信息被切断;按结构切:沿标题、条款、段落切,语义完整但实现更讲究。
给模型补知识:三条路线对比
| 方案 | 怎么做 | 适合 | 短板 |
|---|---|---|---|
| 微调 | 用领域数据继续训练,改参数 | 固定的风格、格式与领域语言 | 贵;知识更新要重训 |
| 长上下文 | 把资料整段塞进窗口 | 一次性、量不大的资料 | O(n²) 成本;中间迷失 |
| RAG | 外部向量库+提问时检索 | 量大、常更新、需溯源的私有知识 | 检索质量决定上限 |
提示词工程:参数是固定的,条件是可调的
把模型看成一个定死的函数:参数定“函数是什么”,提示词定“这次代入什么条件”。同一模型,一句提示与一段精心组织的提示,输出判若两物——提示词工程就是系统地组织这些条件。
零样本、少样本与系统提示词
0️⃣ 零样本
只给任务描述、不给示例:靠对齐训练里学过的任务模式直接作答,适合常见任务。
🔢 少样本
给若干组输入—输出示例,让模型归纳格式与判法:用例子代替抽象规则,特殊格式任务尤其有效。
🎩 系统提示词
角色与长期准则(如“你是物流客服助手,须遵循 XX 规范”)独立于每轮提问给出;对齐训练赋予它更高遵循优先级,全程稳定生效。
思维链:让模型把草稿打出来
❌ 直接提问
“某冷库存 5 吨海鲜,前 3 天免租,第 4 天起 120 元/吨/天,第 10 天起 180 元/吨/天,存满 12 天总租金?”
模型直接答:7200 元——阶梯被压扁,分段算错了。
✅ 加一句“请分段列出计算过程”
第 1—3 天:0 元
第 4—9 天:5×6×120 = 3600 元
第 10—12 天:5×3×180 = 2700 元
合计:6300 元——正确。
结构化输出:让回答能直接入库
| 思路 | 怎么做 | 保证程度 |
|---|---|---|
| 提示约束 | 在提示词里写明字段名、类型、格式并给示例,靠模型的格式遵循能力 | 大概率合法,但可能夹带闲话、漏字段——下游要写容错 |
| 约束解码 | 预先用 JSON Schema 定义语法;每生成一个词元,先把会破坏合法性的候选概率清零再采样 | 机制上必然合法;代价是需要能干预逐词元概率的调用方式与工具支持 |
实例:派车文本的结构化抽取
工具调用:从“会说”到“会做”
📍 实时数据查不到
“这张运单现在到哪了”“这个仓此刻还有多少库存”——静态文本与冻结参数都答不了。
✍️ 状态变更做不了
创建运单、发通知邮件是改变外部系统状态的操作,生成文字本身完成不了。
🔢 精确计算不擅长
逐词元预测对严格数值计算与逻辑判断先天弱势(第 36 页的 7200 就是前车之鉴)。
工具调用的实现:一个判断循环
MCP:工具世界的 EDI
MCP 与命令行模式:两种工具哲学
| 维度 | MCP 协议模式 | CLI 命令行模式 |
|---|---|---|
| Token 消耗 | 较高(工具 Schema 须完整注入上下文) | 极低(只有通用终端接口) |
| 执行机制 | 结构化单步调用,多步要反复过模型 | 管道与脚本可一次流水线处理 |
| 参数确定性 | 极高(类型定义与校验严格) | 中等(转义、路径、环境差异) |
| 安全边界 | 白名单接口内,权限易隔离 | 必须沙箱隔离(容器化) |
| 典型场景 | WMS/TMS/ERP 等核心业务对接 | 运维巡检、数据清洗、批量报表 |
智能体:把“下一步做什么”交给模型
智能体与工具调用循环的三个差别
🎯 完成判断内置
简单循环由调用方喊停;智能体由模型自己判断目标是否达成(能力来自对齐训练,不是外加模块)。
🛑 强制终止兜底
防“永远判断未完成”:实际系统设最大步数,到限强制停并交回已有进展。
🗜️ 记忆管理
长程运行状态无限膨胀:近期轮次保留全文、早期步骤压缩成摘要,把状态压回窗口之内(习题 14)。
技能与渐进式披露:说明书按需加载
🧩 技能(Skill)
一类任务的操作规范打包成独立文档:YAML 元数据(名称、描述、所需工具)+ SOP 正文。教材例:冷链温度告警处理技能——查车辆状态、看门磁分支、强冷指令、应急冷库转运,输出固定四字段 JSON。
📖 渐进式披露(两阶段)
第一阶段只加载全部技能的元数据清单(几百 Token)做意图匹配;命中后第二阶段才载入该技能全文。数百技能共存时,日常推理的基准 Token 降至原来的 20% 以下(习题 15)。
组装:物流异常工单处理智能体
一句话带走本章:模型只会猜下一个词,其余全是工程
📌 本章带走的六件事
- LLM=下一词元概率模型;与 N-gram 的区别在泛化与全上下文
- 注意力=Q 查、K 配、V 供内容;Transformer 以此取代 RNN 的顺序记忆
- BPE 从语料统计出词表;嵌入给编号装上语义,余弦量相似
- 窗口有限、参数冻结:私有与新鲜知识靠 RAG 现查现用
- 提示定条件、思维链拆推理、约束解码保格式:输出要能直接入库
- 工具调用接动态世界,MCP 统一接口,智能体自主编排多步任务
✍️ 课后思考
- 习题 8:为什么窗口再大也替代不了 RAG?
- 习题 11:用冷库租金例讲清思维链的作用机制
- 习题 14:智能体与简单工具调用循环,差别到底在哪一步?
全书收官:从条码到大模型——物流信息技术的每一步,都是让信息更准、更快、更自动地流动。