模組 10 · 第 1 課

什麼時候該微調,什麼時候不該

微調聽起來像是讓模型"學會"你的業務的正道,但它往往不是第一選擇。這一課對比提示詞、RAG 和微調各自能改變什麼、要花多少代價,給出一個判斷的順序。

  • 約 25 分鐘
  • 難度:進階
  • 實測:2026-09-15 結論引用本課程前面模組的實驗結果

程式碼和執行結果保留原樣(簡體中文),與實際執行時完全一致。

很多人第一次想做自己的 AI 應用時,第一個念頭是:"我要用公司的資料微調一個模型。"

這個念頭往往是錯的。這一課講清楚微調能做什麼、不能做什麼,以及在動手之前應該先試什麼。後面幾課會親手做微調,但你應該帶著"是否真的需要"的判斷去學。

三種辦法各改變什麼

到這裡,你已經學過三種讓模型更適合自己需求的辦法:

            改变的是             代价                      改起来
提示词      这一次对话的指令      几乎为零,但每次都占词元     改一行字,马上生效
RAG         模型能看到的资料      要建检索系统,要维护        更新文档,马上生效
微调        模型本身的参数        要准备数据、训练、评估      重新训练,重新部署

它們解決的問題不一樣:

  • 提示詞告訴模型"這次要怎麼做"。第 02 模組用它控制了輸出格式、語氣、步驟。
  • RAG 告訴模型"這裡有你需要的資料"。第 04 模組的答疑助手,就是靠它回答 httpx 文件裡的問題,而且能給出引用。
  • 微調改變模型"平時的習慣"。它不需要每次都提醒,因為已經刻進了參數裡。

一個常見的誤解:用微調灌知識

"把公司文件拿去微調,模型就知道了",這是最常見的誤解。

微調確實能讓模型記住一些內容,但它是一個很差的知識庫:

  • 記不準。模型會把學到的內容和原有的知識混在一起,照樣編造細節。你沒法知道它的回答來自你的文件,還是來自它自己的想像。
  • 沒有出處。RAG 可以告訴你答案來自哪份文件的哪一段(第 04 模組第 5 課),微調做不到。
  • 更新麻煩。文件改了一個字,RAG 只要重新建一下索引;微調要重新訓練、重新評估、重新部署。
  • 會有副作用。第 3 課會親眼看到:只是教模型換一個自我介紹,它回答普通問題的方式也變了,還多了一個原來沒有的錯誤。

所以,需要模型"知道"某些資料時,先用 RAG。

微調適合做什麼

微調擅長的是改變行為,特別是那些很難用幾句提示詞說清楚、或者每次都說太浪費的行為:

  • 穩定的格式和風格。比如總是按公司的格式寫報告,總是用某種語氣。第 2 課在小 GPT 上用 LoRA 微調,它就從"什麼詩都寫"變成了幾乎只寫五言絕句,而它寫詩的"水平"(損失)幾乎沒變,變的是習慣。
  • 特定的任務。比如把使用者的話分成固定的幾十個類別,或者從合同裡抽取固定的欄位。有幾千條標註好的例子時,微調一個小模型,常常能做得和大模型差不多好,而且便宜、快得多。
  • 把大模型的能力"蒸餾"到小模型上。用大模型生成大量高質量的回答,拿去微調一個小模型,讓它在這類任務上接近大模型的水平。推理的成本可以降很多。
  • 縮短提示詞。如果每次請求都要帶一大段固定的指令和例子,微調之後可以省掉它們,減少每次的詞元和延遲。

判斷的順序

1. 先把提示词写好(第 02 模块),并准备评估集(第 06 模块)
      ↓ 效果还是不够?
2. 是缺资料吗?→ 用 RAG(第 04 模块)
      ↓ 不缺资料,是行为、格式、风格不稳定?
3. 在提示词里加几个例子(少样本)
      ↓ 还不行,或者例子太长、太贵?
4. 考虑微调。先准备几百到几千条高质量的数据

幾點說明:

評估集是前提。沒有評估集,你沒法知道微調是讓模型變好了還是變壞了。第 3 課的實驗裡,只看幾個例子,就能發現一個原來答對、微調後答錯的問題;沒有系統的評估,這類問題會悄悄溜進產品裡。

資料是最大的成本。訓練本身很便宜,第 3 課在 CPU 上只用了十幾秒。難的是準備幾百上千條質量好、覆蓋全面的資料。資料裡的錯誤和偏差,模型會原樣學去。

模型會更新。你今天花一個月微調了一個模型,三個月後新出的通用模型,可能不微調就比它好。提示詞和 RAG 可以直接搬到新模型上,微調要從頭再來一次。

先問服務商。截至 2026 年 9 月,有些 API 服務商提供線上的微調服務,有些沒有,價格和支援的模型也常變。自己部署開源模型再微調,就要考慮第 4、5 課講的執行成本。

回頭看 RepoBot 的選擇

這門課第一部分做的 RepoBot,每一個需求其實都在做這個判斷,而且一次都沒有用到微調:

  • 要它回答 httpx 文件裡的問題:缺的是資料,所以第 04 模組加了 RAG。文件更新了,重新建一下索引就行,回答還能帶上出處。
  • 要它先查原始碼再回答:這是多步操作的行為,用提示詞加工具就能做到,所以第 05 模組做成了智慧體。
  • 要它攔下不相關或惡意的問題:第 06 模組用一個寫好的分類提示詞加評估集來做護欄,而不是專門訓練一個分類模型。先用提示詞做到"夠用",有了評估集證明它的準確率,再決定值不值得花力氣訓練。

第 3 課會給 RepoBot 做一次微調,改的只是它的自我介紹。那是為了演示微調怎麼做、會有什麼副作用,而不是因為 RepoBot 真的需要它。

如果確實要微調

大部分情況下,你不需要訓練模型的全部參數。第 2 課會講 LoRA:凍結原來的參數,只訓練一小部分新加的參數。在我們的實驗裡,小 GPT 只訓練了 1.5% 的參數,Qwen2.5-0.5B 只訓練了 0.22%,就達到了目的。它省視訊記憶體、訓練快,存下來的檔案也小,是目前最常用的微調方法。

練習

  1. 回想第 03~06 模組的 RepoBot。下面這些需求,你會用提示詞、RAG 還是微調來實現?為什麼?
    • 讓它回答 httpx 新版本的新功能。
    • 讓它每個回答都以"來源:"結尾,列出引用的文件。
    • 讓它把使用者的問題分成"安裝""用法""報錯""其他"四類,每天要處理十萬條。
  2. 找一個你想用 AI 解決的實際問題,按本課"判斷的順序"走一遍,寫下每一步的結論。

自測

1. 為什麼不建議用微調讓模型"記住"公司的文件?

微調後的模型記不準,會把學到的內容和原有知識混在一起繼續編造;回答沒有出處,沒法核對;文件一更新就要重新訓練;還可能帶來副作用。需要模型使用資料時,RAG 更合適。

2. 微調最適合解決哪類問題?

改變模型的行為:穩定的格式和風格、有大量標註資料的特定任務、把大模型的能力蒸餾到便宜的小模型上、省掉每次都要帶的長提示詞。

3. 在決定微調之前,為什麼一定要先有評估集?

沒有評估集,就無法判斷微調是否真的帶來了提升,也發現不了微調帶來的副作用,比如原來答對的問題現在答錯了。評估集也是比較提示詞、RAG 和微調幾種方案的共同標準。