假設一家公司把產品規格、退款規則和內部流程都整理成文件,然後希望 AI 能回答員工的問題。麻煩很快就會出現:退款規則可能這週才改,產品規格下個月又會換,如果每次文件一改就重新訓練模型,成本很高,更新也慢;但如果完全不處理,模型又只會靠原本學過的內容回答,遇到公司自己的資料時,很容易開始猜。

RAG 和 Fine-tuning 常常就在這種情境裡一起被提到,所以也很容易被當成同一件事。其實兩者解決的問題不太一樣。RAG 是在回答之前,先去外部資料裡找這次真正需要的內容,再把它交給模型;Fine-tuning 則是拿一批訓練範例去調整模型,讓模型本身更傾向用某種方式回答、遵守某種格式,或完成某一類任務。

先記一句就夠:RAG 比較像「考試前可以查資料」,Fine-tuning 比較像「重新教這個人怎麼作答」。

RAG 沒有把文件塞進模型腦袋

RAG 是 Retrieval-Augmented Generation,中文常翻成「檢索增強生成」。名字很長,但流程其實很好理解。系統先準備一批外部資料,例如公司的文件、產品說明、研究報告或知識庫。使用者問問題時,系統先從這些資料裡找出最相關的幾段,再把「問題 + 找到的資料」一起交給語言模型,最後才產生答案。

文件 / 知識庫 → 檢索相關內容 → 把內容放進上下文 → 模型回答

所以一個很常見的誤解是:「我把 PDF 放進 RAG,模型是不是就學會這份 PDF 了?」通常不是。模型本身的參數沒有因為這次檢索就被重新訓練,它只是在這次回答時暫時拿到了相關內容。下次文件更新,只要把檢索用的資料更新掉,新的回答就能開始使用新版內容,不需要重新訓練整個模型。

這也是 RAG 很適合處理會一直變動的知識的原因。今天的產品價格、公司的最新規章、昨天新增的研究資料,都可以留在模型外面。模型需要時再查,而不是期待它幾個月前訓練完成時就已經知道今天發生的事情。RAG 的檢索常會使用 embedding、向量搜尋或語意搜尋,但那些是常見做法,不是「RAG」這三個字本身唯一允許的實作方式。

Fine-tuning 動的是模型本身

Fine-tuning,通常叫微調,做法就不一樣了。你會準備一批輸入和理想輸出的範例,讓模型繼續訓練。模型在這個過程中真的會調整部分或全部參數,於是之後遇到相似輸入時,更容易做出你希望的反應。

例如你希望模型看到客服留言時,一律先判斷問題類型,再用固定 JSON 格式輸出;或者你有一個非常固定的文字分類任務,希望模型長期都照同一套標準做。這些比較接近 Fine-tuning 擅長的方向。它改變的不是「這一次要去哪份文件找答案」,而是模型處理任務時的習慣、格式與行為。

大量範例 → 繼續訓練模型 → 模型參數改變 → 之後的回答行為改變

這也代表 Fine-tuning 不太適合被當成一個隨時更新的資料庫。如果你只是想讓模型知道公司今天新增的一條規定,把那條規定做成訓練資料再重新微調,通常不是最直接的做法。更麻煩的是,就算某個事實出現在訓練資料裡,也不代表模型會像資料庫一樣,在每次需要時都精準地把它取回來。

兩者最容易分錯的地方,是「知識」和「行為」

很多需求一開始都會被描述成「我想讓 AI 更懂我們公司」,這句話太模糊了。如果真正的意思是「我要它回答時能使用公司最新文件」,比較像 RAG;如果真正的意思是「我要它永遠照我們規定的格式輸出,而且把某類問題分得更穩」,那才開始接近 Fine-tuning。

拿剛才的客服系統來看會更清楚。退款規則每天可能改,這份知識適合放在外部文件裡,需要時由 RAG 找回來;但客服回覆必須固定分成「問題類型、處理方式、是否升級人工」三個欄位,這種穩定的輸出行為就可能用 Fine-tuning 改善。兩件事根本沒有衝突,因為一個負責把正確資料送進來,一個負責讓模型更會使用特定方式處理資料。

想更新事實:先想 RAG。

想改變模型做事的方式:才開始想 Fine-tuning。

這不是絕對規則,但拿來判斷第一步通常很有用。

所以到底要選哪一個?

如果資料會一直更新、需要引用來源、內容很多而且不能全部塞進 prompt,RAG 通常比較自然。它讓知識留在模型外面,你可以替換、刪除、追蹤版本,也比較容易知道模型這次到底拿了哪些資料回答。

如果問題不是資料過期,而是模型一直不照你要的格式回答、某類任務表現不穩、你有大量品質好的示範資料,而且這種行為會長期使用,那 Fine-tuning 才比較值得考慮。它需要真正的訓練流程,也需要測試微調後到底有沒有比原模型好,而不是資料丟進去就結束。

還有第三種情況:兩個都用。系統先透過 RAG 找出最新、相關的文件,再交給一個已經針對特定任務微調過的模型處理。研究和實務上都有這種組合,因為「知道去哪找資料」和「拿到資料之後怎麼做」本來就是兩個不同問題。

它們都不是讓幻覺自動消失的按鈕

RAG 可以把可靠資料帶進上下文,但檢索可能找錯文件,模型也可能忽略資料或解讀錯誤;Fine-tuning 可以讓行為更一致,但如果訓練資料本身有問題,模型也可能把那些問題一起學進去。兩者都需要評估、測試和清楚的資料來源,沒有哪一個是「接上去,AI 就突然不會錯」的開關。

RAG 這個名稱在 2020 年的研究〈Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks〉中被系統化提出,原本的設計就是把模型內部的參數化知識,和外部可檢索的非參數化記憶結合起來。後來實作方式變得更多,但最核心的精神沒有變:需要的知識不一定全部要鎖在模型參數裡。

如果只想記住最後一句:RAG 是讓模型回答前先找資料;Fine-tuning 是重新調整模型本身,讓它更會用你要的方式做事。一個主要處理「這次答案要看什麼」,另一個主要處理「模型平常要怎麼做」。

延伸閱讀

Lewis et al. (2020), Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks ↗

OpenAI Developers:Supervised fine-tuning ↗