🐦 第5章 基于大模型的企业知识库
📄 一句话概括

微调不是「让它知道得更多」,是「让它说得更像」。想装事实,微调是最贵的一条路。 三笔账:钱不多、人很贵、更新最慢。一年改 144 份文档,微调跑不过来。 还有一笔暗账:微调会拿通用能力去换风格,这叫灾难性遗忘。

📝 本章和前面几章的关系

上一节说模型不懂你的业务,这一节讲最直觉的那个解法——把它训一遍——为什么通常不划算。 这一节有三个小节:微调是对通用能力的妥协、费用不便宜、不能实时更新。 三件事加起来,构成了「先试 RAG」这个结论。 这不是说微调没用。第 6 章会讲提示词,提示词做不了的「语感」那部分,确实得靠微调。

一、微调到底在改什么

微调是拿一批「输入—输出」样本,接着训练模型,把权重调一调,让它更贴你的语料。 关键在于:它调的是「怎么说」,不是「说什么」。 样本教给模型的是「遇到这类问题,用这种口气、这个格式、这个长度回答」。 它不会把每条事实都记住——2000 条样本要覆盖一百份文档的细节,本来就装不下。

所以微调擅长的是:口吻、格式、行业黑话、固定的输出结构。 不擅长的是:具体数字、具体条款、昨天发生的事。 这一条分不清,后面三笔账都白算。

二、第一笔账:一年要花多少钱

演示里按每天 200 次请求、一年 250 个工作日算。

做法 一年 token token 钱 搭一次
提示词硬塞 4000 万 40 元 0.5 天
RAG 检索 1.30 亿 130 元 2 天
微调 3000 万 30 元 8 天

token 钱三档都不到两百块。 这一列最能说明问题:省 token 这件事, 在这个量级上根本不值得为它做架构选择。 微调那档 token 最省——因为它不用把资料塞进提示词。但省下来的是几十块,花出去的是八天搭一次。 所以真正的成本在人力。下面两笔账都在人力上。

三、第二笔账:一年能改几次

演示里算得更狠一点:一百份文档,每月改 12 份,一年改 144 份。

做法 一年更新工时 一年总人力
提示词硬塞 2.4 小时(144 次) 0.8 天
RAG 检索 7.2 小时(144 次) 2.9 天
微调 144 小时(4 次) 26.0 天

差距不在钱,在「多久能改一次」。 改一份文档,RAG 三分钟,微调要一轮一天半。 所以微调实际上只能攒着做,一季度一次。新政策发布当天,知识库里是空的。 更麻烦的是样本:一万条样本按一百份文档摊,每份二十条。改一份文档,二十条样本要重写。 一年改 144 份,样本库整体换 1.44 遍。

这个算术是微调最真实的成本形态——不是训练贵,是维护贵。

四、第三笔账:拿什么去换

微调是把新东西写进权重。写进去的时候,旧的东西会被挤掉一部分。这叫灾难性遗忘。 表现是:模型在你的业务上答得更像了,但它的通用能力——推理、常识、写代码——会往下掉。 掉多少取决于样本量和训练强度。 本沙箱没有模型,这一项给不出数。 能给的只有机制:权重是一块有限的画布,你在上面多画一笔,别处就得擦掉一笔。

所以微调之前要问一句:我愿意用多少通用能力,去换这点风格?大多数团队算完这笔账, 会先去写提示词。

五、一条判据:这条知识会变吗

问一句话就能定方案。

你想要的 该走哪条
知道更多事实 RAG,改一份文档三分钟
事实会变 RAG,改完重建索引就生效
说话更像我们的客服 微调或提示词,先试提示词
输出严格的 JSON 提示词 + 代码节点校验
懂行业黑话 微调,语感是权重里的事

五行里前三行都是 RAG,后两行才轮到微调。 而第四行甚至不用微调——提示词里写清格式,加一个代码节点做校验,比训一遍便宜得多。 会变的知识走 RAG,不变的语感走微调。 这句话记住,能省掉大半的选型纠结。

六、真要做微调,先做这三件

一、先跑通 RAG 再谈微调。 很多「模型不懂我们」的问题,上了库就没了。 二、把评测集先建起来。 五十条真问题,每条有标准答案。没有它,训完不知道好坏。 三、小步试。 先拿 200 条样本训一版,看通用能力掉多少,再决定要不要加量。

三件里第二件最容易跳过,也最致命。没有评测集的微调,等于闭着眼改代码。

七、动手 Demo:三种做法:提示词、RAG、微调

三档方案摆在同一条时间轴上算:一天 200 次请求、一年 250 个工作日、一百份文档每月改 12 份。 先算 token 与人力,再算样本作废的比例,最后给一条判据。

DOC_N, CHG_M, REQ_D, DAY_Y = 100, 12, 200, 250
SAMPLE, PER_DOC = 2000, 20          # 每份文档摊 20 条样本

PLAN = [(u'提示词硬塞', 0.5, 800, 1/60, u'不变'),
        (u'RAG 检索',  2.0, 2600, 3/60, u'不变'),
        (u'微调',      8.0,  600, 36.0, u'会掉')]

for name, build, per, upd, gen in PLAN:
    tk = per * REQ_D * DAY_Y          # 一年 token
    if name == u'微调':
        hours, n = 4 * upd, 4         # 一年只重训 4 轮
    else:
        hours, n = CHG_M * 12 * upd, CHG_M * 12
    print(name, tk, hours, build + hours / 8.0)

实跑输出:

--------------------------------------------------------------------
三种做法:提示词、RAG、微调
--------------------------------------------------------------------


  ① 一年的账:token 与人力
  --------------------------------------------------------------------

| 做法 | 搭一次 | 一年 token | token 钱 | 一年更新工时 | 一年总人力 | 通用能力 |
|---|---:|---:|---:|---:|---:|---|
| 提示词硬塞 | 0.5 | 4000.0 万 | 40 元 | 2.4 小时(144 次) | 0.8 天 | 不变 |
| RAG 检索 | 2.0 | 1.30 亿 | 130 元 | 7.2 小时(144 次) | 2.9 天 | 不变 |
| 微调 | 8.0 | 3000.0 万 | 30 元 | 144 小时(4 次) | 26.0 天 | 会掉 |

  token 钱三档都不到两百块。真正的成本在人力,不在 token。
  注意微调那一行的工时口径:它不是「改一份文档」,是一轮「改样本、重训、评测」,一轮一天半,
  一年四轮。想每次变更都重训,一年要做 144 轮、648 天,做不完。
  RAG 那一行是 144 次小改,每次三分钟。差距不在钱,在「多久能改一次」。

  ② 样本作废的算术
  --------------------------------------------------------------------
  样本 2000 条,文档 100 份,平均每份摊 20 条。
  每月改 12 份,作废 240 条,占样本库 12.0%。
  一年改 144 份,累计作废 2880 条,等于样本库整体换 1.44 遍。
  一句话:改一份文档,二十条样本要重写。这就是「微调不能实时更新知识」的算术形态。

  ③ 微调换走了什么
  --------------------------------------------------------------------
  微调是把「怎么说」写进权重。
  写进去之后,模型的输出会更贴你的语料,但它原来会的那些东西会被挤掉一部分——这叫灾难性遗忘。
  本沙箱没有模型,这一项给不出数。能给的是一个判断:用通用能力换风格,值不值。
  要是你只是想要「回答别那么啰嗦、按我们的格式输出」,那是提示词的事,一条系统提示词就够,
  不用动权重。

  ④ 一条判据
  --------------------------------------------------------------------

| 你想要的 | 该走哪条 |
|---|---|
| 知道更多事实 | RAG,改一份文档三分钟 |
| 事实会变 | RAG,改完重建索引就生效 |
| 说话更像我们的客服 | 微调或提示词,先试提示词 |
| 输出严格的 JSON 结构 | 提示词 + 代码节点校验 |
| 懂行业黑话 | 微调,语感是权重里的事 |

  ! 问一句「这条知识会变吗」。会变就走 RAG,不变而且关乎语气格式才考虑微调。
  大多数团队一开始就想微调,
  是因为把「模型不懂我们」误当成「模型不够懂我们行业」——其实它只是没看过那几页纸。

①第一张表七列。看两列就够:token 钱全在两百块以内,一年总人力差三十倍。 ②微调那行的工时口径要看清:它算的不是「改一份文档」,是「改样本、重训、评测」一轮一天半, 一年四轮。想每次变更都重训,一年要做 144 轮、648 天,做不完。 ③第二段是本节最硬的算术:改一份文档,二十条样本要重写。一年 144 份,样本库整体换 1.44 遍。 维护成本才是微调的真实成本。 ④「灾难性遗忘」那一段本课给不出数——沙箱没有模型。这里只给机制和那一句判断,不硬编一个百分比。 ⑤第四段那张表五行,前三行都是 RAG。第四行「严格 JSON」甚至不用微调,提示词加代码节点校验就够。

30 秒实验

  1. 算一下你们的知识一年改几份。超过二十份的,微调这条路的维护成本基本判死刑。
  2. 把「模型不懂我们」具体化成五个问题,逐个问。看有几个是「不知道事实」、几个是「说话不像」。
  3. 如果真要试微调,先写五十条带标准答案的问题。写不出来说明现在还不该做。

常见误区

  1. 「微调能让模型学会我们的知识。」它学的是说法,不是事实。两百条样本装不下一百份文档。
  2. 「微调一次训好就一劳永逸。」文档一改,那部分样本就作废了。改一份要重写二十条。
  3. 「微调比 RAG 高级。」两条路解决的是不同问题。会变的知识走 RAG,这是工程判断不是档次问题。
自测三问(点开对答案) 1. 微调改的是「说什么」还是「怎么说」? —— 怎么说。它调的是口吻、格式、语感。具体数字和条款装不进权重。 2. 微调最贵的成本是什么? —— 维护,不是训练。改一份文档要重写二十条样本,一年改一百多份就维护不动了。 3. 什么叫灾难性遗忘? —— 把新东西写进权重时,旧的通用能力被挤掉一部分。权重是一块有限的画布。

微调这条路先放一放,回到主流解法:不训模型,改成先查资料再回答。下一节把这个套路的四个动作拆开。

相关笔记