一句话摘要
解析大语言模型的工作原理
大型语言模型到底是如何工作的 2026 年 7 月 25 日 · 18 分钟阅读 · 查看原文 ↗ 营销 AI 循环 硬件
这是来自一个每天都在用这些东西构建的人的坦白:在我使用 LLM 的头六个月里,我把它们当成魔法盒子。提示词进去,智能出来。当输出很糟糕时,我就会像念咒语一样,用略微不同的发音来调换词语。
后来我真正了解了盒子内部发生了什么。几乎一夜之间,我的提示词变好了,我的成本下降了,幻觉也不再让我吃惊了——因为我终于理解了它们从何而来。
这就是我在本文中要给你的东西。不是一堂数学课,也不是一份研究论文摘要。而是一个关于 LLM 如何实际运作的、可用的心智模型,其中每个概念最后都归结为同一个问题:"好,那这改变了我使用它们的方式了吗?"
有一个想法会贯穿我们全程,所以现在就先建立它:一个大型语言模型就是一个博览群书的自动补全。它读过了互联网上惊人海量的内容,但它无法查找任何东西。它所"知道"的一切,都被烘焙进了它预测的方式里。把这张图记在心里。它能解释的远比你想的要多。
让我们打开盒子。
1. 一切都只是下一 token 预测
剥掉品牌、聊天界面和十亿美元的估值,一个 LLM 只有唯一一项工作:给定一个 token 序列,预测下一个。
就是这样。这就是全部的工作描述。
当你问模型"法国的首都是哪里?"时,它并不会去某个地方找到答案。它会在它的整个词汇表上,为每一个可能的下一个 token 计算一个概率:
输入:"What is the capital of France? The capital is"
下一 token 概率(示意):
" Paris" → 96.2%
" located" → 1.1%
" a" → 0.6%
" the" → 0.4%
……(还有成千上万个,每个都很小)
它挑选一个(关于它如何挑选,见第 6 节),把它追加到序列里,然后对再下一个 token 重新运行整个预测。一次一个 token,从左到右,直到它产生一个停止 token 或达到上限。
你见过的 LLM 所做的一切令人印象深刻的事——写代码、总结合同、争论哲学——都是这单个操作重复成千上万次的结果。你所感知到的智能是涌现出来的。没有人编写过一个"写诗"模块。诗歌是从在一套包含大量诗歌的训练集上把下一 token 预测做得非常非常好这件事中自然涌现出来的。
那么这对你有什么改变?
有三件事,而且都很重要:
关于预测的事实 | 实践中的含义
模型从左到右生成,没有反悔 | 它无法静悄悄地修正早期的错误。如果第一句开头就错了,后面的一切都建立在错误之上
输出顺序塑造质量 | 要求"先答案,后推理"会得到一个猜测加一段辩护。"先推理,后答案"则让推理 token 真正去影响答案
不存在查找步骤 | 自信的语气与事实准确性完全无关。模型听起来很确定,是因为听起来确定的文本更可能出现,而不是因为它核对过
单单第二行就值回这一节了。这就是思维链提示词有效的全部原因:你在给模型一个在输出中计算的余地,因为它的输出是它唯一的草稿纸。
2. Token:LLM 真正读取的字母表
快速提问:"strawberry"里有几个 r?
你立刻数出三个,因为你看到的是字母。在很长一段时间里,模型出了名地会做错这道题,而这个原因教会你一件根本性的事:LLM 看不到字母。它们甚至不能可靠地看到单词。它们看到的是 token——通常是 3-4 个字符或一个常见词的文本块,来自训练前就建好的一个固定词汇表。
"Strawberry"可能被拆成 st + raw + berry。让模型去数 r 的个数,就是让它去推理它当作原子单元感知的那些块里面的字母。这就像让一个人去数一种他看不到的字体印刷出来的单词里的曲线数量。
你可以用 Python 亲自检查一下:
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
for text in ["hello world", "strawberry", "antidisestablishmentarianism",
"नमस्ते", "def add(a, b): return a + b"]:
tokens = enc.encode(text)
print(f"{text!r}: {len(tokens)} tokens -> {enc.decode_batch([[t] for t in tokens])}")
运行它,几件事会跳出来:
文本 | 粗略的 token 行为 | 经验
常见英文单词 | 通常是每个 1 个 token | 英文很"便宜"
生僻或技术词 | 被拆成 2-4 个块 | 术语成本更高
非英文文本(如印地语) | 每个词常常更多 token | 非英语用户每句话实际上支付更多
代码 | 常见模式高效,不常见模式昂贵 | 冗长的变量名有真实成本
那么这对你有什么改变?
成本与限制是按 token 衡量的,而不是按词。英文平均每个词约 1.3 个 token。一个"128k 上下文"窗口大约是 96,000 个英文单词——其他语言更少。
计数、拼写和押韵任务对模型来说在结构上就困难。不是因为它们笨,而是因为字母藏在 token 里面。现代模型通过训练技巧变好了,但底层的盲区依然存在。
奇怪的间距和格式会花钱。不规则的空白和异常字符的 token 化效率很低。干净的输入是更便宜的输入。
3. 嵌入:词如何变成数学
一个神经网络无法把 " Paris" 这个 token 当作文本来处理。它需要数字。所以你的 token 发生的第一件事就是,每一个都被转换成一个嵌入:一长串数字(通常是几千个),把那个 token 的含义表示成空间中的一个位置。
魔法就藏在"位置"这个词里。在训练期间,出现在相似上下文中的 token 会在这个空间中彼此靠拢。"Dog"最终会靠近"puppy"。"Paris"会靠近"France",就像"Tokyo"靠近"Japan"一样。含义变成了几何。
那个著名的派对把戏:取"king"的向量,减去"man",加上"woman",你落点处最近的 token 就是"queen"。概念之间的关系变成了空间中的方向。
你可以用任何嵌入模型来玩这个:
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# embed() = 你选择的任何嵌入 API
pairs = [
("The cat sat on the mat", "A feline rested on the rug"),
("The cat sat on the mat", "Quarterly revenue grew 12%"),
]
for s1, s2 in pairs:
sim = cosine_similarity(embed(s1), embed(s2))
print(f"{sim:.3f} {s1!r} vs {s2!r}")
# 典型输出:
# 0.91 cat/mat vs feline/rug <- 不同的词,相同的含义
# 0.08 cat/mat vs revenue <- 不相关
注意第一对几乎没有共同的词,却得分很高。这就是要点:嵌入捕捉的是含义,而不是拼写。
那么这对你有什么改变?
这是你使用的一半 AI 产品的基石:
语义搜索的工作原理,是把你的查询嵌入,然后找到嵌入位置在附近的文档。无需关键词匹配。
RAG(检索增强生成)——我们将在第 7 节正式见到它——只是把语义搜索接在提示词上:通过嵌入相似度找到相关块,把它们粘贴进上下文,然后提出问题。
为什么模型能优雅地处理同义词和转述:对模型来说,"buy"、"purchase"和"acquire"是空间中的近邻。你不需要去猜那个神奇的关键词。
4. 注意力:为什么上下文真的重要
到目前为止,我们有了被转换成向量的 token。但一袋孤立的词向量无法理解一个句子。考虑:
> "The trophy didn't fit in the suitcase because it was too big."
(奖杯放不进手提箱,因为它太大了。)
"it"指的是什么?你立刻知道:奖杯。但这需要把"it"关联回两个候选名词,并用"too big"来消除歧义。这种关联正是注意力机制所做的,而它就是现代 LLM 背后真正的突破——GPT 中的"T"代表 Transformer,就是围绕它构建的架构。
这里给出不用矩阵代数的直觉。当模型处理你的文本时,每个 token 都能看到其他每一个 token,并问:"在判断我此刻是什么意思这件事上,你有多相关?"token "it"学会了强关注"trophy"、弱关注"suitcase",并由"big"来引导。每个 token 的表示都会基于它周围所有内容的加权混合而被更新。把这个过程叠几十层,模型就能构建出惊人丰富的上下文表示。
值得记住的一张图景:注意力是一个房间,里面每个词都在听其他每个词,判断谁的声音对自己的含义重要。
那么这对你有什么改变?
注意力有成本和怪癖,它们会直接体现在你的结果里:
关于注意力的事实 | 实际后果
每个 token 关注其他每个 token | 上下文长度翻倍,注意力工作量大约翻四倍。长上下文慢而昂贵是有原因的
注意力强度是学出来的,不是保证的 | 模型最可靠地关注上下文的开头和结尾。埋在中间的信息会被漏掉——这就是有充分记录的"迷失在中间"效应
更多上下文 = 注意力竞争更激烈 | 往窗口里塞勉强相关的文本会积极损害效果。每一个垃圾段落都会稀释对重要内容的注意力
提示词规则直接由此得出:
把关键指令放在开头,长提示词在结尾再重申一遍。
毫不留情地精选上下文。五个相关的段落胜过五十个勉强相关的段落。(如果你读过我那篇循环工程的文章,这就是 agent 循环内部上下文卫生为什么如此重要的原因。)
不要把"能塞进窗口"等同于"会被好好使用"。一次 10 万 token 的倾倒能塞进去。那不意味着模型会恰当地权衡第 50,000 个 token。
5. 训练:预训练 vs 微调 vs RLHF
是时候回答一直藏在这一切背后的问题了:一个下一 token 预测器是如何变成你聊天的那个乐于助人的助手的?答案是一条三阶段的流水线,而了解这些阶段能解释数量惊人的模型行为。
阶段 1:预训练——阅读互联网
模型一开始是一堆随机数。然后它被喂入巨量的文本——公共互联网的很大一部分、书籍、代码——并玩一个游戏玩了数万亿次:这里有一个序列,预测下一个 token。猜错了,就略微调整权重,重复。
在数千块 GPU 上运行几个月,就产生了一个基础模型。它知识渊博得惊人,也毫无用处得惊人。问它"法国的首都是哪里?",它可能会回答"德国的首都是哪里?意大利的首都是哪里?"——因为测验列表很可能就在它的训练数据里,而延续这个模式是它唯一的技能。
阶段 2:监督微调——学习助手格式
接下来,模型在一套小得多、经过筛选的例子上训练,这些例子的形状正是它应该模仿的:一个问题,然后是一个有帮助的回答。成千上万次演示"当你看到一个请求时,这样回应。"
这教的是格式和行为,而不是新知识。基础模型早就知道法国了。微调教它的是:一个问题的预期延续是一个答案。
阶段 3:RLHF——学习人类偏好什么
最后,人类(以及越来越多的 AI 评判者)比较成对的模型回答:这个比那个好。这些偏好训练模型去偏向人们评分高的回答——更有帮助、更无害、格式更好。
阶段 | 数据规模 | 它教什么 | 它解释的行为
预训练 | 数万亿 token | 知识、语言、推理模式 | 知识截止日期、广度、从互联网继承的偏见
微调 | 数千到数百万个例子 | 助手格式 | 为什么它回答而不是延续你的文本
RLHF | 人类偏好对比 | "好"是什么样 | 礼貌、拒绝、模棱两可、讨好
那么这对你有什么改变?
知识截止是结构性的。预训练在某个日期结束。那之后的一切根本不在权重里——这个博览群书的自动补全停止阅读了。近期事件需要搜索或检索,句号。
讨好是一种训练产物。RLHF 奖励人们喜欢的回答,而人们喜欢被赞同。这就是为什么当你反驳一个正确答案时,模型会退让。问"这有什么问题?"而不是"这很好,对吧?",你会得到更诚实的输出。
拒绝和模棱两可活在阶段 3 里。基础模型会很乐意完成任何东西。谨慎是后来刻意训练进去的。
6. 推理:你按下发送时发生了什么
你写好了提示词。你按下发送。让我们跟踪它。
你的文本被 token 化(第 2 节)、被嵌入(第 3 节),并被推过注意力层(第 4 节)。从另一端出来的是关于每一个可能下一 token 的概率分布(第 1 节)。现在到了大多数人从没想过的一步:模型如何从这个分布里选择?
因为它并不是每次都简单取最高概率的 token。它如何采样,由你常常可以自己设置的参数控制,而这些参数至关重要。
温度:风险旋钮
温度在采样前重塑概率分布:
低温(0 到 0.3):锐化分布。高概率 token 变得几乎确定。输出专注、一致、重复。
高温(1.0+):抹平分布。不太可能的 token 有了真实机会。输出多样、有创意,偶尔失控。
这就是为什么同一个提示词在不同运行中会给出不同答案——在任何高于零的温度下,采样都是随机的。以及为什么温度 0 在实践中仍不完全确定(硬件层面的浮点怪癖),尽管已经很接近。
Top-p:候选截断
Top-p(核采样)把采样限制在累计概率超过 p 的最小 token 集合内。在 top-p 0.9 时,模型只从最强的大约 90% 概率质量中采样,从不触碰那荒诞的尾部。
真正有效的设置
用例 | 温度 | 原因
代码生成 | 0 - 0.2 | 存在一个正确答案;你每次都想要它
数据提取、分类 | 0 | 一致性就是全部意义
事实问答、摘要 | 0.1 - 0.4 | 基本确定,略微自然
一般写作、聊天 | 0.6 - 0.8 | 均衡的多样性
头脑风暴、虚构 | 0.9 - 1.2 | 你想要那些不太可能的 token
看看旋钮如何起作用:
prompt = "Write a tagline for a coffee shop."
# temperature = 0.0(三次运行)
# "Where every cup tells a story."
# "Where every cup tells a story."
# "Where every cup tells a story."
# temperature = 1.3(三次运行)
# "Caffeinate your rebellion."
# "Beans with feelings. Mostly good ones."
# "Sunrise is negotiable. Coffee isn't."
那么这对你有什么改变?
如果你在 LLM API 上构建任何东西,却没有刻意设置温度,你就把一个核心质量旋钮留在了默认值上。在温度 1.0 下做提取流水线?你造了一台老虎机。在温度 0 下做头脑风暴工具?你造了一个回声机。
7. 为什么 LLM 会幻觉(以及什么真正有用)
现在我们终于能回答人人都问的那个问题了,而答案已经贯穿整篇文章自行组装起来了。
一个 LLM 会幻觉,是因为它是一个预测引擎,而不是检索引擎。当你问某件事时,它不会去查数据库并返回"无结果"。它生成统计上最合理的延续。如果真相在训练数据中被充分代表,那么合理的延续通常是真的。如果没有——一篇冷门的论文、一个细分 API、截止日期之后的任何东西——模型就会生成一个形状完全像正确答案的东西,而且没有任何内部标记说"这是我编的"。
这就是关键部分:幻觉不是故障。它是系统在"设计与真相分道扬镳"的输入上按设计运行的结果。这个博览群书的自动补全被问及一本它从没读过的书时,照样流畅地自动补全。
这也解释了为什么幻觉内容在格式上如此令人信服。虚假引用会有貌似合理的作者和逼真的页码,因为模型完美地学会了引用的形状。形状恰恰是下一 token 预测世界级擅长的东西。
什么真正有用
技巧 | 如何工作 | 成本
通过 RAG 接地(grounding) | 检索真实文档(嵌入搜索,第 3 节),粘贴进上下文,指示:只根据这些回答 | 中
允许说"我不知道" | 一个明确的出口能减少编造——没有它,回答总是更可能的延续 | 微不足道
提前要求来源 | "引用所提供文本中支持每个说法的部分"会让没有根据的说法无处遁形 | 低
验证步骤 | 第二次调用:"把这段文本中的每个说法对照源材料检查一遍" | 低
事实工作降低温度 | 采样到的低概率 token 越少,自由发挥就越少 | 微不足道
外部验证循环 | 用于关键用途:在接受前把说法对照搜索、文档或测试检查 | 高
两段能出大力的提示词片段:
Answer using ONLY the provided context. If the context does not
contain the answer, say "Not found in the provided material."
Do not supplement from your general knowledge.
For each factual claim in your answer, add [source: <section>]
pointing to where in the provided material it comes from.
Claims without a source should not appear.
那么这对你有什么改变?
别再问"我如何让模型停止幻觉"——你做不到,那正是让它能工作的同一套机制。改问:"对于这个任务,真相生活在哪里,我如何把它放到模型面前?"放在上下文里通过 RAG、放在一个验证步骤里、或放在一次人工审查里。这个重新框定,就是"对抗工具"和"使用工具"之间的区别。
8. 这对你如何写提示词意味着什么
这是收获的一节。上面的一切压缩成八条规则,每一条都能追溯回让它成立的机制。这张表就是整篇文章:
# | 规则 | 因为(机制)
1 | 先要推理,再要答案 | 输出从左到右生成,是模型唯一的草稿纸(第 1 节)
2 | 别信自信;去核实事实 | 预测没有查找步骤——流畅与准确无关(第 1、7 节)
3 | 避免数字数、拼写和精确算术任务——或者给模型一个工具 | 它看到的是 token,不是字符(第 2 节)
4 | 描述含义,别去猎寻神奇关键词 | 嵌入把同义词放进同一个邻域(第 3 节)
5 | 把关键指令放在开头和结尾;删掉无关上下文 | 注意力偏好边缘,并因垃圾而稀释(第 4 节)
6 | 不提供来源,就不要问截止日期之后的事件 | 预训练在某个日期结束;权重是冻结的(第 5 节)
7 | 要求批评,不要要求认可 | RLHF 训练模型去赞同你(第 5 节)
8 | 为每个应用刻意设置温度 | 采样参数是质量旋钮,不是脚注(第 6 节)
还有几个规则实际运作的例子:
规则 1 的实践:
弱:"这条 SQL 查询高效吗?先回答是或否,然后解释。"
强:"逐步分析这条 SQL 查询:检查连接、
它可用的索引,以及行数估计。
然后下结论它是否高效。"
规则 7 的实践:
弱:"我觉得这个项目应该用微服务。好主意,对吧?"
强:"这是我的计划:为这个项目用微服务。
反驳它。一个持怀疑态度的资深工程师会怎么说?"
规则 5 和 6 一起用,针对任何事实性的、近期的事情:
[在这里粘贴相关的、当前的源材料]
仅用上面的材料回答:<问题>
如果材料没覆盖到,请说明。
这些都不是花招。每一条都只是顺应机器实际工作的方式,而不是对抗它。这就是全部论点:提示词技巧多半是机械共情。
收尾
让我们最后一次从头到尾跑一遍整条流水线。
你的提示词被拆成 token。每个 token 变成含义空间中的一个向量。注意力让每个 token 一层又一层地权衡其他每个 token,构建出上下文。出来的是一个关于下一 token 的概率分布。采样参数挑选一个。重复,直到完成。做这件事的模型是由三个训练阶段塑造的:互联网给了它知识,微调给了它礼貌,人类偏好给了它个性——包括那些讨好的部分。
一个博览群书却无法查找任何东西的自动补全。这就是这台机器。不是魔法,而且说实话比魔法更有意思,因为魔法你没法拿来干活——机制可以。
你不需要背下这些任何一条。你需要在下次输出出问题时能想起它:模型数错了字母?Token。忽略了你长提示词的中间部分?注意力。赞同了你的坏主意?RLHF。编造了一条引用?没有检索的预测。同一个提示词,不同的答案?采样。
诊断胜过念咒。每一次都是。
喜欢这篇文章吗?
每周我都会拆解一个实用的 AI 工程主题——agent、提示词、工具,以及让它们运转的系统——用你刚刚读到的这种实操风格。
订阅 ByteBuilders,把下一次深度拆解送到你的收件箱:https://bytebuilders.beehiiv.com/subscribe
没有废话,没有垃圾邮件。每周就一个有用的、可以立刻动手的想法。 标签:# X # 营销 # AI # 循环 # 硬件 # 增长 # 指南 相关文章 如何构建一家 AI 原生公司:招聘、标准与节奏 *我们花了一年时间办黑客松、AI 培训和答疑。但直到我们把 AI 能力变成一项硬性要求,一切才真正改变。* AI 循环 Claude 营销
原文参考:https://maxed.wiki/posts/how-large-language-models-actually-work/ (Maxed.wiki,本页为站内中文整理)