時間過得好快,下週就是大學部的AI數據科學基礎課程的最後一週,花了幾週時間將過去所寫的學科人物誌文本內容作為AI LLM訓練的資料,大概有30多篇共62000多字,文字數量加起來雖然不算大,但作為測試瞭解Finetuning與RAG方法的差異,應該還是足夠的。
在開始前,雖然已知道RAG與Finetuning兩者在過程與效果上的差異,但總要實際經歷過一遍,透過試做與嚐誤,才能真正理解文本資料結構如何更貼近AI LLMs的特性,以及兩種方法在實務應用上的權衡考量。
獲取文本數據的第一步,就是學會數據下載與清理,這部份涉及多種資料處理方法,如透過AI程式或插件輔助,同樣的方法還可以爬蟲其他公開資料。文本資料最關鍵的是要編輯成JSONL的架構,將原始文本轉換為結構化的提問與回答格式,這是訓練對話模型的標準做法。為了提升效率,試著使用GitHub的Easy Dataset進行文本分割、問題自動生成、答案生成與格式標準化輸出,且輸出格式支援Alpaca、ShareGPT等主流框架,相比人工製作成本感覺省了90%的時間。
最後產生了187條的JSONL問答數據,原本6萬多文字轉換成不到200條結構化數據,數量確實偏少,但對於概念驗證來說應該足夠,未來可以透過擴充數據來提升效果。
Finetuning是直接修改AI模型的內部結構,讓它把特定知識「記住」並融入回答中。
Finetuning就像是:JSONL → 訓練 → 新模型 → 直接回答。
嘗試將JSONL格式的問答數據來訓練模型,實際操作後更能體會要讓大型語言模型真正「學進去」特定知識並正確運用,需要仔細調整各種訓練參數,避免AI學太少(學不會)或學太多(只會背誦而失去靈活性)。就像教學生一門全新的科目一樣,不僅需要精心安排教學方式,AI學習的過程也需要強大的計算設備(特別是GPU),而且還不保證能達到預期效果。實驗結果顯示,小規模數據集容易讓AI產生錯誤記憶或胡編亂造的問題,回答品質不盡如人意。
因為人物誌的數據集規模有限,所以改用RAG方法,給AI一個參考書(外部知識庫)來查詢參考。
RAG的運作就像是: JSONL → 向量化 → 檢索 ← → GGUF模型 → 回答。
RAG(檢索增強生成)是一種混合做法,原理是不改動AI模型本身,而是在它回答問題時提供相關的參考資料。原理作法是先把訪談記錄轉換成AI能理解的數字與編碼,建立一個可以快速搜尋的知識庫,就像一個超級智慧的圖書館索引系統,能根據問題的內容快速找到最相關的資料片段。
實際運作時,當問AI關於人物誌的問題,系統會先在知識庫中搜尋相關的訪談內容,通常會找出3-5個最相關的片段,然後把這些參考資料連同原始問題一起交給AI,讓它基於這些具體資料來組織回答,這麼做的好處是AI的回答有明確的資料來源,不容易憑空編造。
不過RAG也不是萬能的,實際使用中發現了一些明顯的限制。
首先是檢索品質的問題,如果問題的表達方式與知識庫中的內容差異較大,搜尋系統可能找不到真正相關的資料,導致AI基於不相關的內容來回答,效果反而不如預期。譬如問「如何在學術界生存」,但知識庫中用的是「研究所適應」等不同用詞,就會有檢索失敗的可能。
其次是上下文長度的限制,AI模型能處理的文字長度有上限,當檢索到的參考資料太多或太長時,系統必須進行截斷或篩選,可能會丟失重要資訊。而且每次查詢都需要額外的檢索時間,在使用上會有明顯的延遲感。
最後是知識整合能力有時還不大夠,RAG擅長回答能在單一文檔中找到答案的問題,但對於需要跨多個資料來源進行推理和綜合的複雜問題,效果就比較有限,不過這部份在人物誌文本中不是太重要,除非想要比較誰與誰的學習背景與經驗的差異。
「內化知識」與「外部查詢」,正是AI學習的兩種截然不同的路徑。兩者在成本、效果、以及維護難易度上各有優劣。
採用外部查詢(RAG)的方法,AI的回答更有憑有據,因為每次都是基於實際的文檔內容。當知識庫需要更新時,只需要重新整理資料並重建索引,不用重新訓練AI模型,大幅降低了維護成本。而且,RAG系統對硬體設備的要求相對較低,一般的伺服器就能運行。
相對地,內化知識(Finetuning)的方法雖然在回答速度上有優勢(不需要額外的搜尋時間),但訓練過程需要大量的計算資源和時間。當領域知識需要更新時,必須重新收集資料、重新訓練整個模型,在現實應用中不太實際。此外,訓練過的模型容易產生幻覺問題,也就是說得很有道理但實際上是錯誤的內容。
透過這幾週實際操作學科所人物誌文本數據的訓練與檢索實驗,深刻體會到選擇適當的AI解決方案需要考慮資料規模、更新頻率、硬體資源、以及應用需求等多重因素。無論選擇哪種技術路徑,如何組織和處理資料、設計系統架構、以及解決實際問題的能力,都是開發實用AI應用的關鍵。
寫到這裡,感覺應該要更新自己的吃飯設備了,上面這些理由,應該夠充分吧。