我在我Substack上的電子報開設了一個新專題,分享自己由 0 開始學習 AI 開發的過程,例如 RAG、AI Agent,有興趣可以訂閱我的電子報。
還記得我上回提到的那個「喝醉酒的 Chatbot」嗎?
事情是這樣的:
我想做一個公司內部 Chatbot,試試看 AI 技術,於是沒想太多就動手準備了一些資料餵給模型去做 Fine-tuning。
結果誕生了一個前言不對後語、會講亂碼的模型…
我曾把這段經歷分享到某個討論區,有人問我:
為什麼不用 RAG?
嗯…
其實那時候的我不知道 RAG 是什麼。
Finetune V.S. RAG
為了不再讓我的模型宿醉,我開始研究 RAG,也重新思考 Fine-tuning 應該用在哪裏。
後來我大致畫下了這條分界線:
- Finetune 較適合處理調整語氣、補上專業領域知識 (例如醫療、法律)
- RAG (Retrieval Augmented Generation) 較適合根據最新資料回答問題,資料更新只需換 Embeddings (之後會深入探討此概念,暫時可理解為代表文字意思的數字),無須再次訓練模型
用日常例子來說的話:
Finetune 像大學選科,要花大把的金錢及時間,但畢業後就變成一個腦中有知識的人。
RAG 像開卷考試 (Open Book Exam),不用全都懂,只要買本書,找到資料就能作答。資料更新了,換書就好。
而我想做的 Chatbot 剛好有幾個特點:
- 資料更新頻密
- 團隊缺乏 AI / ML 人才
- 資料內容不算太專業
所以,RAG 才是更適合的選擇。
以下是一些關於 RAG 和 Finetuning 的補充資料:
想做 RAG,第一步得有自己的模型
作為一位新手,我一開始只知道 ChatGPT。
但不想付費用 OpenAI 的 API,又不想把公司資料上傳雲端的話,那怎麼辦呢?
調查一圈後,發現可以考慮的有幾個:
- Hugging Face
- LM Studio
- Ollama
最後我選了 Ollama,因為:
- 支援 CLI 操作 (工程師的最愛)
- 公司資料留在本地,不怕外洩
- 教學資源豐富,容易上手
Ollama 是什麼?
一句話:
一個能在本地跑 LLM 的工具
可以用它來下載、部署、跑模型,熟 CLI 的話會覺得很順手。
它支援不少開源 (Open Source) 模型,例如:
- deepseek (因低成本爆紅)
- gemma (Google)
- llama (Meta)
- phi (Microsoft)
當中不乏參數少、佔硬碟少的模式,適合本地開發測試,可以到它的模型列表查看。
模型的名字怎麼來?
第一眼看到的時候覺得跟 Docker 映像的命名方法很相似,簡單來說是:
<品牌/系列><版本>:<參數量>
<Brand/Series><Version>:<Number of Parameters>
例如:
- gemma3:4b (Google Gemma 系列的第 3 版本,40 億參數量)
- llama3.1:8b (Meta Llama 系列的第 3.1 版本,80 億參數量)
- phi3:3.8b (Microsfot Phi 系列的第 3 版本,38 億參數量)
參數越多,表現通常越好,但也更吃資源。選模型前,記得看清楚自己的電腦扛不扛得住。
LLM 不是萬能的,也不是穩定的
跑了幾輪 LLM 後,有些心得想要記錄下來:
沒有全能的模型
剛開始試了幾個模型,發現每個都有些不支援的功能:
- Gemma 不支援 embeddings
- DeepSeek 不支援 tool use
而且 Ollama 官網上寫的功能,有時也不太準…
所以我現在都當在「招新人」,一個個試用,不行就換。
同一個 Prompt 同一個模型,答案不一定一致
LLM 是根據機率運作的,就算同一個 Prompt 問 10 次,答案也可能有點不同。
這對習慣確定性的工程師來說,是種心理挑戰,因為不是寫個固定 input 就能得到固定的 output。
不是所有任務都適合 LLM
LLM 的能力大家有目共睹,我亦相信未來 LLM 能替我們做很多不同的工作,但如果我想要的答案是固定、不容模糊的答案的話 (例如報稅、計算邏輯),有時候寫死規則比用模型更快、更穩。
如果你對實作細節有興趣的話,歡迎閱讀我此篇電子報。