# 教模型认识你的世界的三种方式

关于 prompting、RAG 和 fine-tuning 的速成课——这是给模型注入它默认不具备的知识或行为的三种方式。15 个概念——Knowledge Cutoff、In-context Learning、Few-shot、Context Window、RAG、Grounding、Fine-tuning、LoRA、Form vs Facts、Decision Ladder、Evals 等——每个都有英文名、一幅图和一张卡片：是什么 → 怎么运作 → 例子 → 坑。结尾附一份速查表。核心思想：fine-tuning 教形式，RAG 教事实，而 prompting 是你的起点。

- **Author:** Fedor Chishchin
- **Level:** intermediate
- **Reading time:** ~30 分钟阅读
- **Published:** 2026-06-13
- **Source:** https://fedorthinks.com/zh/learn/fine-tuning-express

---

## 1. 模型不了解你的世界

这三种技术的存在都是为了解决同一个问题：模型在通用层面才华横溢，却对你的具体情况一无所知。准确理解它缺什么，正是你挑对补救办法的关键。

### Knowledge Cutoff——它的知识是冻结的、通用的

> 一位才华横溢的毕业生，几年前读过一座浩瀚的图书馆——但没读过你公司的文件，也没读过他们毕业那天之后发表的任何东西。

模型只知道它的 **training data** 里有的东西。这些数据取自公共互联网，冻结在某个 **knowledge cutoff** 日期。这些知识广博而通用——但模型对你的私有数据、你的具体领域，或训练之后发生的任何事一无所知。

所以开箱即用时，它没法回答关于你产品的问题、遵循你的内部风格，或使用上周的数字。这门课里讲的一切，都是在弥合模型的通用知识与你那个特定世界之间的那道鸿沟。

_Diagram: 模型知道截至 cutoff 的公共互联网。最新的事实和你的私有数据都在它之外。_

#### Knowledge Cutoff (训练数据截止点)

- **是什么:** 模型的训练数据被冻结的那个日期。此后发生的事，模型从未见过。
- **怎么运作:** 模型只从一个庞大的公共语料库里学习一次；之后它的知识不会自己更新。
- **例子:** 问它你产品的价格或上周的数字——它要么不知道，要么编一个。
- **坑:** 哪怕不知道，模型的语气也很笃定。知识的缺失不会体现在语气里。
- **关联:** **Prompting**、**RAG** 和 **Fine-tuning** 要解决的根本问题。

### Knowledge Gap vs Behaviour Gap——三种不同的缺口

> 一名新员工可能需要一份简报文档、一个可供查阅的文件柜，或者真正的培训来改变他们的工作方式——三道不同的缺口，三种不同的补救。

缺口有不同的形状，它们的补救办法也不一样。有时你需要模型为这项任务**知道一些事实**。有时需要它**借助一大批不断变化的知识**。有时需要它**表现得不一样**——一种一致的格式、语气或技能。

这就是 **knowledge gap**（知识缺口）和 **behaviour gap**（行为缺口）。它们分别对应那三种技术：告诉它（prompting）、给它一个知识来源（RAG），或重新训练它（fine-tuning）。说清你面对的是哪道缺口，几乎就是整个决策。

_Diagram: 三种缺口，三种技术：少量事实 → prompt，庞大且多变的知识 → RAG，不同的行为 → fine-tuning。_

#### Knowledge Gap vs Behaviour Gap (缺的是什么：事实还是行为)

- **是什么:** “模型不够用”的两种不同情形：它缺**事实**，或者它缺**行为**。
- **怎么运作:** 知识在回答时补进去（prompt、RAG）。行为则来自指令、例子或重新训练。
- **例子:** “不了解我们的价格方案”是知识缺口。“回答的语气不像我们公司”是行为缺口。
- **坑:** 把两者混为一谈，你就是在花大价钱用一件昂贵的工具去对付错的问题。
- **关联:** **Form vs Facts** 和 **Gap Diagnosis** 的基础。

### 地图：六组共 15 个概念

> 一张地铁线路图：先看全部线路，再一站一站地坐过去。

这门课里的每个概念都属于六组之一。先是缺口本身。然后是按成本递增排列的三种技术：prompting、RAG、fine-tuning。接着是它们之间的关键区别。最后是如何选择——以及如何检验这个选择。

_Diagram: 六组概念——各章依次讲它们。_

### 怎么读这门课

> 如果一页备忘录就够了，你不会把人送去培训一年——你让投入匹配真正缺的东西。

每个概念都用同样的方式讲：它的**英文名**（记住它——文档和论文里用的就是这个术语）、一幅来自日常生活的画面、一幅**图**，以及一张带字段的**卡片**：_是什么_、_怎么运作_、_例子_、_坑_，以及*关联*的概念。

这门课的核心思想：这些技术在成本、速度和适用场景上差别极大。最常见的错误是一上来就跳到 fine-tuning——最重的那个选项——而 prompting 或 RAG 本可以更快、更便宜地解决问题。真正的功夫不在于会不会 fine-tune，而在于把缺口诊断得足够准确，从而挑出**能补上它的最轻的技术**。

> **定调的问题:** “这里模型到底缺什么——几条事实、对一个庞大且多变的知识库的访问，还是另一种行为方式——因为这决定了我需要三者中的哪一个？”

> 模型的知识是冻结的、通用的——它不了解你的世界。Prompting、RAG 和 fine-tuning 各补一种不同的缺口，所以选择要从诊断开始。

## 2. Prompting：直接告诉它

第一种也是最便宜的技术，就是把模型需要的东西直接放进 prompt。它立即生效、无需训练，而且能力远超人们的想象——所以你永远从这里开始。

### Prompting / In-context Learning——把它需要的直接放进上下文

> 在任务开始前给一位机灵的临时工做简报：这是情况，这是规则，这是一个好的范例——他们有能力，只是需要上下文。

给模型补上它所缺的最简单办法，就是**把它放进 prompt**——指令、相关事实、你想要的格式、几个例子。模型立刻使用这些信息，无需训练。这叫 **in-context learning**。

模型擅长遵循清晰的指令。所以，许多“模型做不到这个”，其实是“我没讲清楚”。Prompting 是要先穷尽的办法，而不是最后才用的。

_Diagram: Prompt = 指令 + 事实 + 格式 + 例子。模型的 weights 不变；效果立竿见影。_

#### Prompting (In-context Learning)

- **是什么:** 把模型需要的一切直接放进请求文本里。
- **怎么运作:** 模型读取上下文里的指令、事实和例子，并在这一次回答中依赖它们。
- **例子:** 把退货政策放进 prompt，再说“回答要简短、语气友好”——它就照做。
- **坑:** 只对这一次调用有效，并且受窗口大小限制（见 **Context Window**）。
- **关联:** **Decision Ladder** 的最低一级；**Few-shot** 是它的特例。

### Few-shot Prompting——用例子即时教会行为

> 给出三个完全符合你想要的输出的成品例子，然后要第四个——模式当场就学会了，不需要上学。

你不仅能塑造模型*知道*什么，还能直接在 prompt 里通过**展示例子**来塑造它*怎么表现*——这就是 **few-shot prompting**。想要特定的格式、语气或处理任务的方式？放两三个例子进去，模型就会照着模式来。

很多人以为必须 fine-tune 才能做到的事——一致的风格、特定的输出形态——往往靠上下文里的例子就能实现。免费，而且立即生效。

_Diagram: prompt 里有三组输入 → 输出——新的回答就以同样的形态出来。_

#### Few-shot Prompting (从几个例子中学习)

- **是什么:** 直接在 prompt 里放几个期望输出的例子。
- **怎么运作:** 模型看到输入 → 输出的模式，并把它延续下去。
- **例子:** 三条按“问题 / 原因 / 解决”格式写的工单摘要——模型就会把第四条工单也按同样的格式整理。
- **坑:** 例子会占用窗口空间，并且每次请求都要重新发送。
- **关联:** 常常能替代 **Fine-tuning** 来解决风格和格式；在它之前应当先试的办法。

### Context Window——局限：窗口与重复

> 一份简报管一场会议，但你能递出的页数有限，而且每次都得重新递一遍——对备忘录来说没问题，对百科全书就太笨拙了。

Prompting 有两个实实在在的局限。第一，一切都必须塞进 **context window**（上下文窗口），所以你没法把一个庞大的知识库整个贴进去。第二，它是**按次调用**的：你每次都要发送这份上下文，每次请求都要为此付费，而模型在两次调用之间从不*保留*它。

当知识大到装不进窗口、不断变化，或者你得一遍又一遍地粘贴同样的大块材料时，光靠 prompting 就不够了。这正是下一种技术登场的地方。

_Diagram: 局限 1：备忘录装得进窗口，百科全书装不进。局限 2：同样的上下文每次调用都要发送——也都要付费。_

#### Context Window (模型每次调用的工作记忆)

- **是什么:** 模型在一次调用中能看到的文本的最大量。
- **怎么运作:** 你想给模型的一切都必须放进窗口——并且在下一次请求时重新发送。
- **例子:** 一页纸的退货政策放得下。公司由数千份文档组成的整个知识库放不下。
- **坑:** 庞大的上下文每次请求都要付费；模型并不“记得”它。
- **关联:** 窗口不够用时，就往上一级走，到 **RAG**。

> **关于 prompting 的问题:** “在假定我需要更重的办法之前，我真的试过用指令加几个例子，把话对模型讲清楚吗？”

> Prompting 把模型需要的东西——事实、格式、例子——放进上下文，立即生效、无需训练。它强大又便宜，只受限于窗口大小和每次调用都得重复。

## 3. RAG：把事实递给它

当知识对 prompt 来说太大或太新时，你不用全塞进去——而是在需要的那一刻取回相关的那一块。这就是检索增强生成。

### RAG——在运行时检索相关事实

> 开卷考试：你不必背下整座图书馆，而是在提问的那一刻查出少数几页相关内容，并依据它们作答。

**RAG（retrieval-augmented generation，检索增强生成）** 处理对 prompt 来说太大的知识：按需只取回相关的那一部分。提问时，它在你的文档中检索，取出最相关的 **chunks**——文本片段——并把*这些*放进上下文。模型就依据它们作答。

这样，模型依据的是你真实、当前的数据，却从未把它们背下来——你在它需要的那一刻递给它正确的那一页。（RAG 那门课会讲得很深；这里讲的是它在整套方案里的位置。）

_Diagram: 问题 → 检索文档 → 最佳 chunks 进入 prompt → 模型依据它们作答。_

#### RAG (Retrieval-Augmented Generation)

- **是什么:** 在回答之前，先到你的文档中检索相关事实。
- **怎么运作:** 问题 → 索引检索 → 最佳 chunks → 带着这些 chunks 的 prompt → 模型的回答。
- **例子:** 被问到“怎么退货？”时，客服机器人找到退货章节，并依据它作答。
- **坑:** 检索不好，回答就不好。而且 RAG 不会改变模型的行为——只改变它在这次回答中所知道的东西。
- **关联:** **Decision Ladder** 的中间一级；与 **Fine-tuning** 搭配得很好（**Fine-tune + RAG**）。

### Grounding——把回答锚定在庞大、多变、私有的知识上

> 一座你随时更新的参考图书馆：某个事实变了，你不必重印图书管理员的大脑——只需更新书架，下一次查阅就是最新的。

RAG 恰恰在 prompting 吃力的地方大放异彩：对窗口来说太大的知识库、经常变化的事实，或模型从未训练过的私有数据。更新一份文档，下一个回答就立刻反映出来——无需重新训练。

这叫 **grounding**——把模型的回答锚定在你的具体、当前、可能保密的信息上。当缺口是“它需要知道一些东西”，尤其是会变动的东西时，答案通常就是 RAG。

_Diagram: 更新价目表 → 索引更新 → 下一个回答已经用上新版本。无需重新训练。_

#### Grounding (把回答锚定在来源上)

- **是什么:** 模型的回答建立在你的真实来源上，而不是它的记忆上。
- **怎么运作:** 文档在索引里更新；每个回答都由此刻检索到的内容构建。
- **例子:** 价目表早上改了——到午饭时机器人报的已经是新价格。
- **坑:** 索引里过时或相互矛盾的文档，会产出过时或相互矛盾的回答。
- **关联:** 由 **RAG** 实现；恰恰是用 **Fine-tuning** 来灌输事实所给不了的。

### RAG 增加的是知识，不是新行为

> 给人更好的参考书，会让他们见多识广——但不会改变他们的写作风格，也不会教给他们新技能。进来的是事实，不是习惯。

RAG 的关键在于：它改变的是模型*在这次回答中所知道的*，而不是它从根本上*怎么表现*。模型底层的技能、风格和推理都没变——你只是给了它更好的事实去依据。

所以，RAG 是解决 **knowledge gap** 的对症工具，却是解决 **behaviour gap** 的错误工具。如果你需要模型始终以某种特定方式回应，检索更多文档是做不到的。这就指向了第三种技术。

_Diagram: 用了 RAG，模型知道得更多了，但它的 weights 和行为没变。_

> **关于 RAG 的问题:** “缺口是模型需要知道一些东西——庞大的、当前的或私有的事实——而不是表现得不同吗？那么合适的是 RAG，而不是 fine-tuning。”

> RAG 在运行时取回相关事实，把模型锚定在对 prompt 来说太大、太新或太私密的知识上。它增加的是模型所知道的——而不是它如何表现。

## 4. Fine-tuning：改动 weights

最重的技术真的会修改模型本身。它是唯一能改变模型根深蒂固的行为的办法——也是人们出于错误的理由、过早伸手去够的那一个。

### Fine-tuning——用你的例子重新训练模型

> 不是为某个任务给工人做简报，而是送他们去接受培训，从而改变他们默认的工作方式——新的做法已经融入其中，不必每次再递给他们。

**Fine-tuning** 拿一个现有的模型，用你自己的一组例子继续训练它。这会调整它内部的 **weights**——存放模型一切能力的那些数字——于是新的行为就成了模型本身的一部分。

Prompting 和 RAG 在运行时补充信息，模型本身不变。Fine-tuning 则真的*改变了模型*。结果是，它默认就按你的方式表现，无需在每个 prompt 里放指令或例子——它已经学会了。

_Diagram: 基础模型 + 你的例子 → 训练 → 一个新模型，行为已融入它的 weights。_

#### Fine-tuning (用你的数据继续训练)

- **是什么:** 用你的输入 → 输出例子，继续训练一个现有的模型。
- **怎么运作:** 训练会调整 weights，使模型自己对类似的输入产出期望的输出。
- **例子:** 在数千条客服回复上 fine-tune 过的模型，不需要任何指令就能写出公司的口吻。
- **坑:** 它需要高质量的数据、训练和专业能力——而且每当情况变化，就得重新训练。
- **关联:** **Decision Ladder** 的最高一级；用 **LoRA / PEFT** 可以更便宜；可以与 **RAG** 组合。

### Fine-tuning 教什么：行为、格式、风格

> 一种培训，把一个通才变成能可靠地用你们公司的口吻写作、或每次都以同样方式处理你们那项特定任务的人——是习得的习惯，而不是提醒。

Fine-tuning 真正擅长的是**行为**：一致的语气或内部风格、特定的输出格式、模型反复执行的专门任务，或贴合你的领域措辞的方式。

当你有大量“这样的输入应当产出那样的输出”的例子时，fine-tuning 可以把这种模式深深地、可靠地固化下来——效果超出 prompt 里放例子所能达到的。它塑造的是模型*怎么*回应，并且是学进了它的 weights 里。

_Diagram: 各种各样的输入 → fine-tune 过的模型 → 每次都是同样的语气、同样的格式、同样的任务流程。_

### LoRA / PEFT——更便宜，但并不免费

> 送人去参加正规的培训项目，要花时间、花钱，还要一套课程——而一旦工作变了，你还得把他们重新培训一遍。

Fine-tuning 是昂贵的选项。它需要一份高质量的例子数据集（往往很大）、一套训练流程和专业能力。而且这不是一次性的成本：情况一变，你就得重新训练。

**LoRA（Low-Rank Adaptation）** 和其他 **parameter-efficient fine-tuning（PEFT）** 方法，只调整模型的一小部分，而不是全部 weights，从而让它更便宜。这降低了门槛——但 fine-tuning 仍然比 prompting 或 RAG 重得多。

_Diagram: LoRA：主体 weights 保持冻结；只训练旁边一个小小的 adapter。_

_Diagram: Fine-tuning 的循环：数据 → 训练 → 部署 → 世界变化 → 重新训练。这不是一次性的成本。_

#### LoRA / PEFT (Low-Rank Adaptation，参数高效微调)

- **是什么:** 一种 fine-tune 模型的方式，只改动它一小部分参数。
- **怎么运作:** 主体 weights 被冻结；训练一个小小的“adapter”，再接入模型。
- **例子:** 不必为你们的内部风格 fine-tune 整个模型，而是训练一个轻量的 LoRA adapter。
- **坑:** 更便宜不等于便宜：数据、训练和重新训练仍然都在。
- **关联:** 让 **Fine-tuning** 更便宜，但并不能跳过 **Decision Ladder**。

> **关于 fine-tuning 的问题:** “我需要模型默认就表现得不同吗——一致的风格、格式或反复执行的任务——并且有足够的例子来教它，也有预算来维护它？”

> Fine-tuning 重新训练模型的 weights，让新行为融入其中——适合一致的风格、格式和反复执行的任务。它是昂贵的选项：数据、训练和持续维护，即使用了 LoRA 也是如此。

## 5. Form vs Facts：形式与事实

一个区别就能理清 fine-tuning 与 RAG 之间的大部分困惑，并避开最常见的那个昂贵错误。弄懂它，选择往往水到渠成。

### Form vs Facts——fine-tuning 教形式，RAG 教事实

> 你训练一个人怎么写报告（习得的技能），但你把要填进去的数据递给他们（每次查来的）——技能是教的，事实是取的。

这条规则能把一切理清：**fine-tuning 管模型*怎么*回应；RAG 管它*知道什么*。** Fine-tuning 教的是**形式**——风格、语气、格式、任务的形态——把它固化进 weights。RAG 提供的是**事实**——当前的、具体的、私有的信息——在运行时把它们取来。

一个改变行为；另一个改变知识。几乎每个“我该 fine-tune 还是用 RAG？”的问题，只要你问一句缺口到底是形式还是事实，就迎刃而解。

_Diagram: 左边是形式——由 fine-tuning 来教。右边是事实——由 RAG 来带。_

#### Form vs Facts (怎么回答 vs 知道什么)

- **是什么:** 在 fine-tuning 和 RAG 之间做选择的主要规则。
- **怎么运作:** 形式缺口（风格、格式、语气）→ fine-tuning。事实缺口（当前的、具体的、私有的）→ RAG。
- **例子:** “像我们的律师那样写”是形式。“了解我们合同的条款”是事实。
- **坑:** 无论如何都先试 prompt：**Few-shot** 往往就能给你形式，而 prompt 本身也能带上少量事实。
- **关联:** 解释了 **Fine-tuning for Facts**（那个错误）和 **Fine-tune + RAG**（那种组合）。

### Fine-tuning for Facts——昂贵的错误

> 送人去上学，背一本每周都在变的电话簿——等他们背完，它已经过时了，而且每次更新你都得重新培训。

最常见的代价高昂的错误，就是为了添加模型应当知道的**事实**而去 fine-tune。这是一种 **anti-pattern**：它多半效果不好、成本很高，而最糟的是，事实在训练结束的那一刻就被冻结了。

数据一变，fine-tune 过的模型就过时了，你必须重新训练。会变的事实属于 RAG，那里的更新是即时的。为了灌输知识而 fine-tune，是在明明有简单又即时的办法摆在眼前时，去做那件困难又脆弱的事。

_Diagram: 上：用 v1 训练，数据已变成 v2——模型过时了，得重新训练。下：RAG——更新文档，回答已经用上 v2。_

#### Fine-tuning for Facts (用 fine-tuning 灌输知识)

- **是什么:** 试图通过训练把事实“放进”模型里。
- **为什么不好:** 效果差、花费大，而且事实在训练结束的那一刻就过时了。
- **例子:** 在价目表上 fine-tune 过的模型——一周后价格变了，它报的还是旧价格。
- **替代做法:** 事实放进 **RAG**：更新文档就完事了。
- **关联:** 直接违背了 **Form vs Facts**。

### Fine-tune + RAG——fine-tune 形式，检索事实

> 一位受过“怎么做这份工作”培训的专家（fine-tuning），同时还会查阅一份始终最新的参考资料来获取细节（RAG）——两全其美，各司其长。

它们不是对手；最强的系统往往两者兼用。你可以为你领域的行为和风格 fine-tune 一个模型，*并且*在运行时用 RAG 给它喂当前的事实。形式来自 fine-tuning，事实来自检索。

把它们看作互补而非竞争，正是理解了这个区别的标志。你不是在选一种技术——而是把每一种用在它适合的那部分问题上。

_Diagram: RAG 带来新鲜的事实；fine-tune 过的模型以正确的形式作答。_

#### Fine-tune + RAG (混合：形式 + 事实)

- **问题:** 你既需要一致的回答形式，又需要新鲜的事实。
- **思路:** Fine-tuning 提供行为；RAG 在回答时提供知识。
- **例子:** 一个为按律所风格写作而 fine-tune 过的法律助手，并通过 RAG 引用当前的合同。
- **代价:** 要构建并维护两套系统。
- **何时使用:** 当 prompt + RAG 明确做不到你需要的形式时。
- **关联:** **Form vs Facts** 的直接应用。

> **关于区别的问题:** “这个缺口是关于模型该如何回应（形式——倾向 fine-tuning），还是它该知道什么（事实——倾向 RAG）——而我是不是正要错误地为事实去 fine-tune？”

> Fine-tuning 教形式——风格、格式、行为；RAG 教事实——当前的、具体的知识。经典的昂贵错误，就是用 fine-tuning 来添加事实，而它们在训练结束的那一刻就冻结了。

## 6. Decision Ladder

把这三者放在一起，就构成一道成本与能力递增的阶梯。纪律和工程里处处一样：只爬到问题逼你爬到的高度。

### Decision Ladder——从最底层的 prompting 开始

> 在报名培训班之前，你先试着把任务讲清楚——大多数时候，那就是它所需要的全部。

**decision ladder**（决策阶梯）从便宜、即时到昂贵、缓慢：先 **prompting**，再 **RAG**，最后 **fine-tuning**。永远从最底层开始。

先试清晰的指令和几个例子；极大一部分问题就在这里解决了，免费，几分钟。只有当 prompting 确实补不上缺口时，你才往上爬。从顶层开始——先去够 fine-tuning——正是那种有预算的新手所犯的昂贵错误。

_Diagram: 三级台阶：prompting → RAG → fine-tuning。越高越贵、越强。只有下一级不行时才往上爬。_

#### Decision Ladder (prompting → RAG → fine-tuning)

- **是什么:** 选择的顺序：prompting → RAG → fine-tuning。
- **怎么运作:** 从最便宜的一级开始，只有当它确实失败时才往上爬。
- **例子:** 机器人搞混了价格方案 → 先把它们放进 prompt；方案有数千个且会变 → RAG；语气仍然不对，例子也修不好 → 考虑 fine-tuning。
- **坑:** 因为 fine-tuning“听起来更正式”，就忍不住直接跳到最顶层。
- **关联:** 各级台阶是 **Prompting**、**RAG**、**Fine-tuning**；检验手段是 **Evals**。

### 只有当下一级够不着时才往上爬

> 只有当小工具确实干不了这活时，你才换更大的工具——而不是因为大的听起来更正式。

当知识对 prompt 来说太大、太新或太私密时，往上爬到 **RAG**——这是 prompting 填不上的明确的 knowledge gap。当你需要一致的行为，而 prompting 和例子无法可靠地做到，并且你有数据和预算去教它时，再爬到 **fine-tuning**。

每一级台阶，都只因下一级失败才成立。每一步的问题是：更便宜的技术在这里是真的不够用了，还是我只是以为它不够用？

_Diagram: 先用 prompt。解决了——上线。没解决——问问缺什么：事实（RAG）还是行为（fine-tuning）。_

### 大多数产品永远用不到最顶层

> 大多数活儿靠一份好的简报和一本参考书就能完成——完全重新训练是例外，只留给那种确实需要它的罕见情形。

诚实的现实是：绝大多数 LLM 应用用 prompting 和 RAG 就能很好地满足，根本不需要 fine-tuning。Fine-tuning 对于大规模根深蒂固的行为这一特定情形，是一件真实而强大的工具——但它是例外，而不是默认。

把它当作最后的手段，只有在较轻的几级明确失败之后才用。这比因为它听起来高级就去用它，能让你走对路的次数多得多。

> **关于阶梯的问题:** “那些更便宜的台阶——先 prompting，再 RAG——在这件事上真的失败了吗？还是我爬向 fine-tuning，只是因为它听起来比实际需要的更强大？”

> 阶梯是先 prompting，再 RAG，最后 fine-tuning——成本与能力递增。从底层开始，只有当下一级确实够不着时才往上爬。大多数产品永远用不到最顶层。

## 7. 用得好

选得好，归根结底是诚实地诊断缺口，并衡量你的补救是否奏效——和支配模型相关一切的工程纪律是同一套。

### Gap Diagnosis——先诊断，再选工具

> 好医生先诊断再开药——他们不会因为手术够戏剧性就动手术，而是先弄清到底哪里出了问题。

整个决策取决于把缺口说准。模型缺的是*事实*（RAG），需要更清晰的*指令*（prompting），还是需要融入不同的*行为*（fine-tuning）？这就是 **gap diagnosis**。

大多数错误的选择，都来自跳过这一步、直接跳到某种技术。问问到底缺什么，把它对应到最轻的合适工具，你就能避开那些昂贵的弯路——尤其是那个大弯路：为事实而 fine-tune。

_Diagram: 模型表现不足 → 诊断缺什么 → 指令：prompting，事实：RAG，行为：fine-tuning。_

#### Gap Diagnosis (说清缺的是什么)

- **是什么:** 在选技术之前，先准确说出模型缺什么。
- **怎么运作:** 三个问题：缺指令？缺事实？缺行为？答案会指向相应的技术。
- **例子:** “机器人答错了”→ 读它的回答 → 它不知道新规则 → 这是事实 → RAG。
- **坑:** 因为想试试时髦的技术而跳过诊断。
- **关联:** 建立在 **Knowledge Gap vs Behaviour Gap** 之上；**Decision Ladder** 的第一步。

### Evals——衡量它是否真的奏效

> 你不会想当然地认为培训有用——你事后测试一下这位员工，看产出是否变好了。

不管你用哪种技术，都要用 **evals** 来验证它——在真实案例上做测试：这个改动真的改善了输出吗？更好的 prompt、一套 RAG 流水线、一次 fine-tune——每一个都是一个假设，要靠衡量来确认，而不是凭感觉。

这对 fine-tuning 尤其重要，因为它成本高，光凭一句含糊的“好像更好了”不足以证明它值得。衡量能让你诚实地判断：更重的技术是否真的比更轻的技术更配得上它的位置。

_Diagram: 假设 → 在真实案例上跑 evals → 更好：保留；没更好：退回到更轻的工具。_

#### Evals (在真实案例上评估)

- **是什么:** 一组用来衡量回答质量的真实案例。
- **怎么运作:** 让旧版本和新版本在同样的案例上跑一遍，比较得分。
- **例子:** 一百个真实的客户问题：fine-tuning 前后正确回答的占比。
- **坑:** “好像更好了”不是衡量；没有 evals，一个昂贵的选择就站不住脚。
- **关联:** 检验 **Decision Ladder** 的每一级台阶。

### 这一切如何连在一起

> 一个药箱：每种药对应一种病，医生按诊断来选——然后检查它是否有效。

这门课的概念合起来是一幅完整的图。**Gap diagnosis** 指向一种技术：指令 → prompting，事实 → RAG，行为 → fine-tuning。Prompting 包含 **few-shot**；fine-tuning 通过 **LoRA** 变得更便宜；RAG 与 fine-tuning 可以合成**混合**方案。而 **evals** 检验每一个选择。

_Diagram: 诊断 → 三种技术之一（虚线：爬阶梯）→ 它们的变体 → evals 检验一切。_

#### 在选定某项技术之前

- **缺口是什么**——事实、更清晰的指令，还是不同的行为？
- **你先试过 prompting 吗**——清晰的指令加几个例子？
- **这是 knowledge gap 吗**——庞大的、当前的或私有的事实——指向 RAG？
- **这是 behaviour gap 吗**——一致的形式、风格、反复执行的任务——指向 fine-tuning？
- **对于 fine-tuning：**你有例子数据和预算吗，包括持续的维护？
- **你在衡量吗**，所选的技术是否真的改善了输出？

#### 你选得好的迹象

- 你先**诊断缺口**——事实、指令还是行为——再选技术。
- 你**从 prompting 开始**，只有它确实不够用时才往上爬。
- 你用 **RAG 管知识**、用 **fine-tuning 管行为**，从不为添加事实而 fine-tune。
- 有帮助时你会**组合**它们——形式来自 fine-tuning，事实来自 RAG。
- 你用 evals 来**衡量**，并把 fine-tuning 当作有依据的最后手段，而不是默认选项。

## 速查表：全部 15 个概念

### 缺口

- **Knowledge Cutoff** (训练数据截止点): 模型的知识冻结在某个日期，取自公共互联网。
- **Knowledge vs Behaviour Gap** (事实还是行为): 模型缺事实——或者缺你需要的行为。

### Prompting

- **Prompting** (in-context learning): 把指令、事实和格式直接放进 prompt。即时生效，无需训练。
- **Few-shot Prompting** (几个例子): 两三个输入 → 输出的例子——模型会重复这个模式。
- **Context Window** (每次调用的上限): prompt 的上限：一切都必须装得下，并且每次调用都要重新发送。

### RAG

- **RAG** (retrieval-augmented generation): 提问时找出相关的文档 chunks，并依据它们作答。
- **Grounding** (锚定在来源上): 回答建立在你当前的来源上；更新文档，回答随之更新。

### Fine-tuning

- **Fine-tuning** (继续训练): 用你的例子重新训练 weights——行为默认就融入其中。
- **LoRA / PEFT** (参数高效微调): 只训练一个小 adapter——更便宜，但并不免费。

### 形式与事实

- **Form vs Facts** (怎么 vs 什么): Fine-tuning 塑造模型怎么回答；RAG 提供它知道什么。
- **Fine-tuning for Facts** (anti-pattern): 用 fine-tuning 添加事实：昂贵、效果弱，而且马上就过时。
- **Fine-tune + RAG** (混合): 形式来自 fine-tuning，新鲜的事实来自 RAG。

### 选择

- **Decision Ladder** (prompting → RAG → fine-tuning): 只有当下一级确实失败时才往上爬。
- **Gap Diagnosis** (说清缺的是什么): 先说清缺什么，再选工具。
- **Evals** (衡量): 在真实案例上衡量它是否真的变好了。

> 诊断缺口，然后爬阶梯：指令用 prompting，事实用 RAG，行为用 fine-tuning。用能解决问题的最轻的技术，有帮助时就组合它们，并衡量它确实起了作用。

速成课到此结束 · 7 章 · 15 个概念

接下来是实践：拿一个模型力不从心的案例，把缺口大声说出来——事实、指令，还是行为。先试着用 prompting 修它；如果它需要当前或私有的知识，就去够 RAG；只有当你需要例子达不到的根深蒂固行为时，才考虑 fine-tuning。然后衡量它是否真的有改善。当你抓住自己正要为事实去 fine-tune、转而去够 RAG 的那一刻，这个决策就咔哒一声到位了。但有一个想法要高过其余：fine-tuning 教形式，RAG 教事实，而 prompting 是你的起点。在这三者中挑出能弥合你真正缺口的最轻的那个——它通常不是听起来最唬人的那个。
