Skip to content

生成式AI导论:从“文字接龙”说起

1. 生成式AI的本质:文字接龙

LLM(大型语言模型,如 ChatGPT、Gemini、Claude、DeepSeek 等)的核心机制其实非常简单——就是文字接龙

举个直观的例子:

  • 你输入:“人工智” → 模型预测下一个内容很可能是“能”
  • 你输入:“大预言模” → 模型会立刻纠正为“型”(基于上下文的概率推算)

在这一过程中,有两个核心概念需要明确:

  • Prompt(提示词):你输入给模型的前面内容,也就是模型进行“接龙”的上下文依据。
  • Token(词元):模型预测并输出的最小单位。它可以是单个汉字、一个词语片段、一个标点,甚至是一个空格。注意:这里说的 Token 不是指 API 计费消耗的那个量,而是指生成的基本语义单元

完整接龙过程示例(以常见问答为例):

用户输入: 世界上最高的峰是?
模型内部一步一步接龙输出:
珠 → 穆 → 朗 → 玛 → 峰 → 。 → [结束]

模型每一步都在预测“接下来最合理出现的字或词是什么”。整个生成式AI做的事情,本质就是:给定一个 Prompt,不断预测并输出下一个 Token,直到结束

文本生成流程示意:

Prompt(输入内容)

模型处理(计算概率)

输出下一个 Token 的概率分布(从几万到几十万的 Vocabulary 中选择)

采样选中一个 Token(如“珠”)

将新 Token 拼接到上下文末尾 → 再次预测下一个 Token

循环往复,直到生成特殊的结束标记(如 <|endoftext|>)

2. 模型是怎么知道该接什么的?

模型输出的其实并不是一个确定的字词,而是一个概率分布。它内部维护着一个庞大的 Vocabulary(词汇表),通常包含几万到几十万个 Token(涵盖常用汉字、英文子词、数字、符号等)。

例如输入“人工”后,模型内部的计算结果可能是:

  • “智能” → 概率 45%
  • “呼吸” → 概率 5%
  • “降雨” → 概率 0.1%
  • …… 其余概率极低的奇怪组合

随后,模型会像“扔骰子”一样,根据这个概率分布随机采样下一个 Token。这也是为什么你问同一个问题两次,得到的回答可能在措辞上略有不同。

程序员视角类比:这很像 IDE 里的代码自动补全。你输入 System.out.,补全列表里 println 排第一,而不是随机乱码。

因为模型是在“扔骰子”,所以它必须具备两种基础能力:

  1. 语言知识(语法、表达习惯、句式)——相对容易通过海量语料学到。
  2. 世界知识(事实、常识、逻辑推理)——非常困难,因为真实世界的知识几乎是无穷无尽的,且不断更新。

案例对比:

  • 问:“在标准大气压下,水的沸点是多少?”
    → 模型大概率回答“100摄氏度”(因为这是训练语料里概率最高的搭配)。
  • 问:“在海拔4000米的高山上,不盖锅盖水的沸点大约是多少?”
    → 如果模型没见过相关物理常识的上下文,可能就胡乱编一个数字(比如还是100度),这就是“幻觉”的早期苗头。

3. 大模型是怎么学会这些的?

我们可以把语言模型抽象成一个极其复杂的数学函数:

f(x) = 极其复杂的神经网络运算

  • x 是输入的 Prompt(转为向量后的数字)。
  • f(x) 是输出的下一个 Token 的概率分布。

这个函数内部有海量的参数(权重)。普通模型可能只有几亿参数,而真正意义上的“大模型”通常拥有数百亿甚至数千亿参数。这些参数并不是程序员一行行写的规则,而是模型通过“自学”从数据中挖掘出来的。

训练数据的主要来源:

  1. 互联网公开语料(网页、维基百科、书籍、开源代码库)。
  2. 人工标注的高质量指令数据(一问一答,教会模型“对话感”)。
  3. 用户使用过程中的反馈数据(点赞、点踩、重新生成)。

4. 为什么AI有时会回答“答案是……”而不是直接说?

严格来说,未经特别调整的基座模型只会做续写。比如你问“1+1=”,它可能接着写“2,这是一个简单的数学题……”。

我们之所以觉得 AI 像助手一样直接回答,是因为平台在你的输入前面自动拼接了一段隐藏指令,这叫做 Chat Template(对话模板)

一个典型的隐式 Chat Template 大概长这样:

text
<|system|>你是一个乐于助人、知识渊博的AI助手。回答要清晰、准确。</s>
<|user|>世界上最高的峰是?</s>
<|assistant|>

正是基于这个前缀,模型看到 assistant 标记后,就知道接下来应该直接输出答案内容了。

4.1 幻觉(Hallucination)的根源

正因为 AI 本质上是在做概率续写,它并没有一个像数据库那样的“真实资料库”。当遇到记忆模糊或没见过的事实,它会“编造”出概率上通顺、但事实上错误的文本。这在学术上被称为幻觉

4.2 应对幻觉的利器:RAG(检索增强生成)

RAG(Retrieval-Augmented Generation) 是目前工业界最常用的“外挂记忆”方案。

原理简述:模型在动笔回答之前,先跑去查阅一下“小抄”(外部知识库),把查到的真实内容塞进 Prompt 里,再开始文字接龙。

RAG 简化流程:

用户问题:公司今年的年假政策是什么?

Step 1: 检索(Retrieve)
在内部 Wiki / PDF / 数据库 中搜索“年假政策”
找到相关文档片段:“员工入职满一年享有5天年假...”

Step 2: 增强(Augment)
构建新 Prompt = [检索到的文档内容] + [用户原始问题]

Step 3: 生成(Generate)
模型阅读文档后回答:“根据公司政策,年假为5天...”(大幅减少幻觉)

程序员实例:当你问一个 2025 年新发布的框架用法时,RAG 可以先实时抓取最新的 GitHub README 或官方 Changelog,再为你生成代码,而不是靠模型 2024 年的过期记忆瞎编一个不存在的 API。

5. 大模型其实是一个“黑盒子”

我们可以把模型理解成一个状态不断变化的黑箱。输入的内容不同、语境不同,输出的结果就会截然不同。

  • 问:“今天是几号?”
    • 如果模型没联网:它可能随机回答一个训练数据里的常见日期(通常是错的)。
    • 如果模型调用了时间查询工具:它能准确回答当前时间。

因此,我们对输入(Prompt)的设计直接决定了输出的质量。这个设计过程就是 Prompt Engineering(提示词工程)

5.1 核心概念区分

  • System Prompt(系统指令):设定 AI 的角色、语气、安全边界(比如“你是一个严谨的律师”),在整场对话中持续生效。
  • User Prompt(用户指令):具体的任务指令或问题。

一个完整的 Prompt 后台拼接示意:

[System Prompt] 你是一个程序员导师,回答时要附带关键代码注释。
[User Prompt]  如何在 Python 中读取 JSON 文件?

(Chat Template 自动包装成模型能理解的 Token 序列)

模型生成结构清晰、带代码示例的回答

进阶小贴士:现代 Prompt 工程不仅仅指写话术,还包括 Context Engineering(上下文工程)——即管理模型的“记忆窗口”,决定把哪些历史对话、哪些文档片段塞进有限的 Token 长度里。

6. 不只是文本:图像、声音、视频的生成

生成式 AI 的原理并不局限于文字。图像、声音、甚至视频的生成,本质上也是一种“接龙”——只是接龙的对象发生了变化。

  • 图像生成:对像素块进行接龙(扩散模型去噪过程可视作一种接龙)。
  • 声音生成:对音频采样点序列进行接龙。

然而,直接在原始像素或波形上计算极其消耗算力。目前的多模态大模型普遍采用 “压缩-处理-还原” 的架构:

多模态生成流程:

原始图像/声音(高维信号)

[Encoder 编码器] 压缩成 Token 序列(离散的符号表示)

大模型 Transformer 处理(在 Token 空间里做文字/图像接龙)

[Decoder 解码器] 将 Token 还原成图像像素/声音波形

最终输出的图片或音频

扩展开来:生成式 AI 的基本逻辑就是学习复杂对象的序列概率分布。这些对象的基本构成单元,我们都可以抽象地称为 Token。比如:

  • 文本的 Token:字、词。
  • 图像的 Token:压缩后的视觉特征块。
  • 蛋白质的 Token:氨基酸序列(生物学里的天然 Token)。

7. 实战小建议与延伸阅读

如果你想自己动手试一试,以下是入门配置建议:

  • 开源模型推荐:Gemma(Google)、Llama(Meta)、Mistral、Qwen(通义千问)。
  • 运行平台:Google Colab(免费 T4 GPU)、Kaggle Notebooks。
  • 本地工具:Ollama(一键运行大模型)、LM Studio。

总结回顾:

  1. 核心本质:生成式 AI = 给定 Prompt 预测下一个 Token 的接龙游戏。
  2. 能力边界:擅长语言表达(语法、文采),但事实知识有限(需要 RAG 辅助)。
  3. 统一抽象:无论文本、图像还是蛋白质,一切皆为 Token 的有序生成。

Released under the MIT License.