什么是大语言模型

开篇问题

当你向大语言模型输入“解释一下 HTTP 缓存”,它会生成一段看起来像人写的说明。这个过程很容易被误解成:模型在脑子里查找了一份资料,然后把答案复述出来。

但大语言模型的基本工作方式并不是查资料,也不是执行一组显式规则。它更像一个在海量文本和代码中训练出来的概率系统:给定当前上下文,估计接下来最合理的语言片段。

本章先回答一个基础问题:所谓“大语言模型”,到底是什么?

本章你会理解什么

读完本章,你应该能够理解:

  • 大语言模型中的“大”“语言”“模型”分别指什么。
  • 为什么语言模型不是数据库、不是搜索引擎,也不是普通函数。
  • 模型训练阶段和使用阶段的区别。
  • 模型“会说话”“会写代码”背后的共同机制。
  • 为什么同一个问题可能得到不同回答。

核心概念

大语言模型,英文是 Large Language Model,通常简称 LLM。

可以拆成三个词理解:

Large:规模大。它通常包含大量参数,使用大量文本、代码和其他符号序列训练。这里的“大”不只是文件体积大,也意味着模型有足够容量去吸收复杂语言模式。

Language:处理语言。这里的语言不只包括中文、英文,也包括代码、Markdown、JSON、SQL、错误日志、配置文件等由符号组成的序列。

Model:从数据中学出来的统计结构。它不是人手写出的规则库,而是通过训练过程,把大量样本中的模式压缩进参数里。

如果用开发者熟悉的方式类比,传统程序的核心是“人写规则,机器执行规则”;语言模型的核心是“人提供训练目标和数据,机器在训练中学出参数,使用时根据参数生成输出”。

这个类比不完美,但能抓住一个关键差异:模型的行为不是由一段清晰可读的业务逻辑直接决定的。

机制拆解

1. 文本被看作序列

语言模型处理的不是“整篇文章的意义”,而是一串离散符号。实际系统会先把文本切成 token,再把 token 转成数字表示。

例如一句话可以粗略看成:

大语言模型 能 生成 文本

模型看到的是一个序列。它学习的是序列中各个片段之间的关系:什么词常跟在什么词后面,什么结构常出现在什么结构之后,什么代码片段适合接在某段 API 调用之后。

这也是为什么自然语言、代码和结构化文本都可以进入同一类模型。它们表面不同,但都可以表示成符号序列。

2. 训练不是把答案存进去

训练时,模型会看到大量文本片段,并反复练习一个基本任务:根据前面的内容预测后面的内容。

如果训练样本是:

浏览器发起请求后,服务器返回 HTTP 响应。

模型在训练过程中会不断学习:在“服务器返回 HTTP”之后,什么 token 更可能出现?“响应”的概率应该高于“咖啡”。

这个过程会调整模型内部的参数。参数可以理解为大量数字,它们共同决定模型在不同上下文下如何分配概率。

训练完成后,原始训练数据不会以文档库的形式放在模型内部。模型保留下来的是从训练数据中学到的模式,而不是一套可直接查询的原文索引。

3. 使用时是逐步生成

当你输入一个问题时,模型并不是一次性吐出完整答案。它通常会一步一步生成 token。

流程可以简化成:

每生成一个 token,新的 token 又会成为后续上下文的一部分。答案就是这样逐步展开的。

这解释了一个现象:模型输出具有连续性。前面生成的内容会影响后面内容,就像写文章时前一句会限制下一句的走向。

4. 能力来自模式组合

大语言模型看起来有很多能力:解释概念、写代码、改写文本、总结内容、翻译、推理、生成表格。

从底层看,这些能力都可以被统一到“根据上下文生成合适的后续序列”这个框架里。

例如写代码时,模型不是启动了一个专门的“写代码模块”。它是在当前上下文中生成最可能、最符合模式的代码 token。因为训练数据中包含大量代码、注释、文档和错误修复示例,所以模型学到了许多程序结构和工程表达方式。

当然,“生成得像正确答案”不等于“保证正确”。语言模型擅长生成符合上下文的内容,但它不会天然拥有外部世界的实时状态、业务权限、运行时验证和事实校验。

开发者常见误解

误解一:大语言模型是一个巨大的数据库

数据库以明确结构存储数据,并支持查询、更新和一致性约束。语言模型不是这样工作的。

模型可能在训练中见过某些事实,但它不是通过主键查表返回答案。它根据上下文生成概率上合理的输出。因此它可能说出正确事实,也可能把几个相似模式拼成错误答案。

误解二:模型越大就一定越可靠

规模通常会提升能力上限,但不会自动解决所有可靠性问题。更大的模型仍然可能误解上下文、生成不存在的引用、写出无法运行的代码,或者在不确定时给出自信表达。

可靠性还取决于任务定义、上下文质量、输出约束、评估方法和使用场景。

误解三:模型输出等于模型“理解”

模型可以生成非常像理解后的回答,但我们不能简单把这种输出等同于人类理解。

对工程使用来说,更稳妥的看法是:模型学到了大量语言和符号模式,能够在很多场景下产生有用的泛化行为。至于它是否像人一样理解,不是构建系统时最需要依赖的假设。

误解四:模型是一段确定性业务代码

普通函数在相同输入下通常返回相同输出。语言模型则可能受到采样策略、系统实现、上下文长度、模型版本等因素影响。

即使输入相同,模型也可能生成不同措辞,甚至不同解法。这种不确定性是它有创造力的一部分,也是工程上必须管理的风险。

小实验/思考实验

请想象你要实现一个只会补全日志级别的极简“语言模型”。

训练样本里经常出现:

[INFO] server started
[ERROR] database connection failed
[WARN] retry request

现在给它一个前缀:

[ERR

即使没有任何数据库查询,它也可能补出:

OR]

因为在训练样本中,[ERR 后面最常见的延续是 OR]

真正的大语言模型复杂得多,但思想上仍然可以从这个小例子出发:它不是查找一个预设答案,而是在当前上下文中生成最可能的延续。

你可以进一步思考:如果训练样本里既有正确日志,也有拼写错误日志,模型会学到什么?如果输入前缀非常短,它的不确定性会不会更高?

本章小结

大语言模型是一个基于大量数据训练出来的语言生成模型。它把文本、代码和结构化符号看作序列,通过训练学习这些序列中的规律,并在使用时根据上下文逐步生成后续 token。

它不是数据库,不是搜索引擎,也不是普通确定性函数。它的能力来自对语言模式的学习和组合;它的风险也来自同一个机制:生成合理内容并不总是等于生成真实、可执行、可验证的内容。

理解这一点,是继续学习 token、embedding、attention 和 Transformer 的入口。

自测题

  1. 为什么说大语言模型不是通过“查表”回答问题?
  2. “语言”在大语言模型里为什么不只指自然语言?
  3. 训练阶段和使用阶段分别在做什么?
  4. 为什么同一个输入可能得到不同输出?
  5. 如果模型生成了一段看似合理但错误的解释,这和它的基本机制有什么关系?