建構大型語言模型應用與前沿
微調、RAG 與提示之間的取捨(fine-tuning vs RAG vs prompting)
當一個基礎模型做的事不太是你所需要的,你有三條大方向能改變它的行為,依工夫由小到大排列。提示(prompting)用脈絡裡的指令與範例來引導它。RAG 在提問當下藉由檢索文件,把對的知識餵給它。微調(fine-tuning)則真的透過在範例上訓練來調整它的權重。在這三者間取捨,是 LLM 工程裡最常見、也最常被誤解的決定之一。
提示最便宜、迭代最快,不會永久改變任何東西,最適合形塑格式、語氣與簡單的行為。當問題出在「缺少或會變動的知識」——私有文件、當下的事實——RAG 才是對的工具,因為它不必重新訓練就能把答案紮根於可檢索的文字,而且你一更新文件,它的知識就更新。微調則用來教一項提示無法可靠達成的、穩定的新技能、風格或格式,或把冗長的提示壓進權重裡;它要花資料、算力與一條訓練流水線,並且把知識烤在一個固定的日期上。
常見的錯誤,是當真正的問題其實是「缺知識」(RAG 解決得更便宜)或「行為」(更好的提示常就能修好)時,卻先去動用微調。一條好用的拇指法則:一直提示到它不再進步為止、缺口是知識時加上 RAG、缺口是提示搆不到的行為或技能時才微調。這三者並不互斥——強大的系統常常同時結合一個微調過的模型、檢索,以及一個用心寫的提示。
另見