RAG 或 Fine Tume - 為您的用例選擇正確方法的權威指南
序幕
隨著對大型語言模型 (LLMs) 的興趣激增,許多開發人員和組織正忙于構建應用程序,以利用他們的力量。但是,當預訓練LLMs的開箱即用沒有按預期或希望執行時,關于如何提高LLM應用程序性能的問題就來了。最終,我們到了問自己的地步:我們應該使用檢索增強生成(RAG)還是模型微調來改善結果?
在深入研究之前,讓我們揭開這兩種方法的神秘面紗:
RAG:這種方法將檢索(或搜索)的能力集成到文本生成中LLM。它結合了一個檢索器系統和一個 LLM,前者從大型語料庫中獲取相關文檔片段,后者使用這些片段中的信息生成答案。從本質上講,RAG 幫助模型“查找”外部信息以改善其響應。
微調:這是采用預訓練LLM并在較小的特定數據集上進一步訓練它的過程,以使其適應特定任務或提高其性能。通過微調,我們根據數據調整模型的權重,使其更符合我們應用程序的獨特需求。
RAG 和微調都是提高基于應用程序性能LLM的強大工具,但它們涉及優化過程的不同方面,這在選擇一個而不是另一個時至關重要。
以前,我經常建議組織在深入研究微調之前先試驗 RAG。這是基于我的看法,即兩種方法都取得了相似的結果,但在復雜性、成本和質量方面有所不同。我甚至曾經用如下圖來說明這一點:
在此圖中,復雜性、成本和質量等各種因素沿單個維度表示。收獲是什么?RAG 更簡單、更便宜,但其質量可能不匹配。我的建議通常是:從RAG開始,衡量其性能,如果發現不足,則轉向微調。
然而,我的觀點從那以后發生了變化。我認為,將 RAG 和微調視為實現相同結果的兩種技術過于簡單化,只是其中一種比另一種更便宜且更簡單。它們從根本上是不同的 — 它們不是_共線性的,_而是_正交_的 — 并且滿足LLM應用程序的不同要求。
為了更清楚地說明這一點,考慮一個簡單的現實世界類比:當被問到“我應該用刀子還是勺子吃飯嗎?”時,最合乎邏輯的反問題是:“嗯,你在吃什么?我問了朋友和家人這個問題,每個人都本能地回答了這個反問題,表明他們不認為刀和勺子是可以互換的,或者一個是另一個的劣質變體。
這是關于什么的?
在這篇博文中,我們將深入探討區分 RAG 和在各個維度上進行微調的細微差別,在我看來,這對于確定特定任務的最佳技術至關重要。此外,我們將研究一些最受歡迎的LLM應用程序用例,并使用第一部分中建立的維度來確定哪種技術可能最適合哪種用例。在這篇博文的最后一部分,我們將確定在構建LLM應用程序時應考慮的其他方面。其中每一個都可能需要有自己的博客文章,因此我們只能在本文的范圍內簡要介紹它們。
你為什么要關心?
選擇正確的技術來適應大型語言模型可以對 NLP 應用程序的成功產生重大影響。選擇錯誤的方法可能導致:
- 特定任務的模型性能不佳,導致輸出不準確。
- 如果該技術未針對您的用例進行優化,則會增加模型訓練和推理的計算成本。
- 如果您以后需要轉向不同的技術,則需要額外的開發和迭代時間。
- 在部署應用程序并將其呈現在用戶面前時出現延遲。
- 如果選擇過于復雜的適應方法,則缺乏模型可解釋性。
- 由于大小或計算限制,難以將模型部署到生產環境。
RAG 和微調之間的細微差別涉及模型架構、數據要求、計算復雜性等。忽視這些細節可能會破壞您的項目時間表和預算。
這篇博文旨在通過清楚地列出每種技術何時是有利的,從而防止浪費精力。有了這些見解,您就可以從第一天起就采用正確的適應方法。詳細的比較將使您能夠做出最佳的技術選擇,以實現您的業務和 AI 目標。這份為工作選擇正確工具的指南將使您的項目為成功做好準備。
所以,讓我們開始吧!
提高性能的關鍵考慮因素
在我們選擇 RAG 與 Fintuning 之前,我們應該從某些維度評估我們LLM項目的需求,并問自己幾個問題。
我們的用例是否需要訪問外部數據源?
在微調或使用 LLM RAG 之間做出選擇時,一個關鍵的考慮因素是應用程序是否需要訪問外部數據源。如果答案是肯定的,RAG 可能是更好的選擇。
顧名思義,RAG 系統旨在通過在生成響應之前從知識源檢索相關信息來增強 LLM的能力。這使得這種技術非常適合需要查詢數據庫、文檔或其他結構化/非結構化數據存儲庫的應用程序。檢索器和發電機組件可以進行優化,以利用這些外部源。
相比之下,雖然可以進行微調LLM以學習一些外部知識,但這樣做需要來自目標領域的大量標記的問答對數據集。此數據集必須隨著基礎數據的變化而更新,因此對于頻繁更改的數據源來說,這是不切實際的。微調過程也沒有明確地對查詢外部知識所涉及的檢索和推理步驟進行建模。
因此,總而言之,如果我們的應用程序需要利用外部數據源,那么使用 RAG 系統可能比僅通過微調來“融入”所需的知識更有效且可擴展。
我們是否需要修改模型的行為、寫作風格或特定領域的知識?
另一個需要考慮的非常重要的方面是,我們需要模型在多大程度上調整其行為、編寫風格,或者為特定領域的應用程序定制其響應。
微調的出色之處在于它能夠使 LLM的行為適應特定的細微差別、語氣或術語。如果我們希望模型聽起來更像醫療專業人士,以詩意的風格寫作,或使用特定行業的行話,那么對特定領域的數據進行微調可以讓我們實現這些定制。這種影響模型行為的能力對于與特定風格或領域專業知識保持一致至關重要的應用程序至關重要。
RAG雖然在整合外部知識方面很強大,但主要側重于信息檢索,并且不會根據檢索到的信息本質上調整其語言風格或領域特異性。它將從外部數據源中提取相關內容,但可能無法展示微調模型可以提供的定制細微差別或領域專業知識。
因此,如果我們的應用程序需要專門的寫作風格或與特定領域的白話和慣例進行深度對齊,那么微調提供了實現這種對齊的更直接的途徑。它提供了真正與特定受眾或專業領域產生共鳴所需的深度和定制,確保生成的內容感覺真實且消息靈通。
快速回顧
在決定使用哪種方法來提高LLM應用程序性能時,這兩個方面是迄今為止要考慮的最重要的方面。有趣的是,在我看來,它們是正交的,可以獨立使用(也可以組合使用)。
圖片由作者提供
但是,在深入研究用例之前,在選擇方法之前,我們應該考慮幾個更關鍵的方面:
抑制幻覺有多重要?
一個LLMs缺點是他們傾向于產生幻覺——編造沒有現實依據的事實或細節。在準確性和真實性至關重要的應用中,這可能會帶來很大的問題。
微調可以通過將模型建立在特定領域的訓練數據中來在一定程度上幫助減少幻覺。但是,當面對不熟悉的輸入時,模型仍可能做出響應。需要對新數據進行重新培訓,以不斷減少虛假捏造。
相比之下,RAG 系統本質上不太容易產生幻覺,因為它們將每個反應都建立在檢索到的證據中。在生成器構建答案之前,檢索器從外部知識源中識別相關事實。此檢索步驟充當事實檢查機制,降低了模型的混淆能力。生成器被約束為合成由檢索到的上下文支持的響應。
因此,在抑制謊言和富有想象力的捏造至關重要的應用中,RAG 系統提供了內置機制來最大限度地減少幻覺。在生成響應之前檢索支持證據使 RAG 在確保事實準確和真實的輸出方面具有優勢。
有多少標記的訓練數據可用?
在決定 RAG 和微調時,要考慮的一個關鍵因素是可供我們使用的特定于領域或任務的標記訓練數據的數量。
微調以LLM適應特定任務或領域在很大程度上取決于可用標記數據的質量和數量。豐富的數據集可以幫助模型深入了解特定領域的細微差別、復雜性和獨特模式,使其能夠生成更準確且與上下文相關的響應。但是,如果我們使用的是有限的數據集,那么微調帶來的改進可能是微不足道的。在某些情況下,數據集不足甚至可能導致過度擬合,即模型在訓練數據上表現良好,但在處理看不見或真實世界的輸入時遇到困難。
相反,RAG 系統獨立于訓練數據,因為它們利用外部知識源來檢索相關信息。即使我們沒有廣泛的標記數據集,RAG 系統仍然可以通過訪問和整合來自其外部數據源的見解來勝任執行。檢索和生成的結合確保了系統保持知情,即使在特定領域的訓練數據稀疏的情況下也是如此。
從本質上講,如果我們有大量的標記數據來捕捉領域的復雜性,那么微調可以提供更定制和更精細的模型行為。但是,在此類數據有限的情況下,RAG 系統提供了一種強大的替代方案,可確保應用程序通過其檢索功能保持數據知情和上下文感知。
數據的靜態/動態程度如何?
在 RAG 和微調之間進行選擇時要考慮的另一個基本方面是數據的動態性質。數據更新的頻率如何,模型保持最新的必要性有多大?
LLM對特定數據集進行微調意味著模型的知識在訓練時成為該數據的靜態快照。如果數據頻繁更新、更改或擴展,這可能會迅速使模型過時。為了在如此動態的環境中保持最新狀態LLM,我們必須經常對其進行重新訓練,這一過程既耗時又耗費資源。此外,每次迭代都需要仔細監視,以確保更新后的模型在不同場景中仍然表現良好,并且在理解上不會產生新的偏差或差距。
相比之下,RAG 系統在具有動態數據的環境中具有固有的優勢。他們的檢索機制不斷查詢外部資源,確保他們為生成響應而提取的信息是最新的。隨著外部知識庫或數據庫的更新,RAG 系統會無縫集成這些更改,從而保持其相關性,而無需頻繁地重新訓練模型。
總而言之,如果我們正在努力應對快速發展的數據環境,RAG 提供的敏捷性是傳統微調難以比擬的。通過始終與最新數據保持連接,RAG 確保生成的響應與當前信息狀態保持一致,使其成為動態數據場景的理想選擇。
我們的LLM應用程序需要有多透明/可解釋?
最后一個要考慮的方面是我們需要深入了解模型決策過程的程度。
微調 LLM雖然功能強大,但運行起來就像一個黑匣子,使其響應背后的推理更加不透明。隨著模型將數據集中的信息內化,辨別每個響應背后的確切來源或推理變得具有挑戰性。這可能會使開發人員或用戶難以信任模型的輸出,尤其是在關鍵應用中,在這些應用中,理解答案背后的“為什么”至關重要。
另一方面,RAG 系統提供的透明度水平通常在僅經過微調的模型中找不到。鑒于 RAG 的兩步性質——檢索和生成——用戶可以窺探該過程。檢索組件允許檢查哪些外部文檔或數據點被選為相關文檔或數據點。這提供了一個有形的證據或參考線索,可以對其進行評估,以了解建立響應的基礎。在需要高度問責制的應用程序中,或者當需要驗證所生成內容的準確性時,將模型的答案追溯到特定數據源的能力可能非常寶貴。
從本質上講,如果透明度和解釋模型響應基礎的能力是優先事項,那么 RAG 提供了明顯的優勢。通過將響應生成分解為不同的階段并允許深入了解其數據檢索,RAG 可以提高對其輸出的信任和理解。
總結
在考慮這些維度時,在 RAG 和微調之間進行選擇變得更加直觀。如果我們需要傾向于獲取外部知識和重視透明度,RAG 是我們的首選。另一方面,如果我們正在處理穩定的標記數據,并旨在使模型更接近地適應特定需求,那么微調是更好的選擇。
在下一節中,我們將了解如何根據這些標準評估熱門LLM用例。
使用案例
讓我們看一下一些流行的用例,以及如何使用上述框架來選擇正確的方法:
摘要(在專業領域和/或特定風格中)
1. 需要外部知識嗎?對于以前述摘要的樣式進行匯總的任務,主要數據源將是前述摘要本身。如果這些摘要包含在靜態數據集中,則幾乎不需要連續的外部數據檢索。但是,如果有一個經常更新的摘要動態數據庫,并且目標是不斷使樣式與最新條目保持一致,那么 RAG 在這里可能很有用。
2. 需要進行模型適配嗎?這個用例的核心圍繞著適應一個專門的領域或和/或特定的寫作風格。微調特別擅長捕捉風格上的細微差別、音調變化和特定領域的詞匯,使其成為此維度的最佳選擇。
3. 減少幻覺至關重要嗎?幻覺在大多數LLM應用中都是有問題的,包括總結。但是,在此用例中,要摘要的文本通常作為上下文提供。與其他用例相比,這使得幻覺不那么令人擔憂。源文本限制了模型,減少了富有想象力的捏造。因此,雖然事實的準確性總是可取的,但考慮到上下文基礎,抑制幻覺對于總結來說優先級較低。
4. 訓練數據可用?如果有大量的先前摘要以模型可以從中學習的方式進行標記或結構化,那么微調將成為一個非常有吸引力的選擇。另一方面,如果數據集有限,并且我們依靠外部數據庫進行風格調整,RAG 可以發揮作用,盡管它的主要優勢不是風格適應。
5. 數據的動態性如何?如果先前摘要的數據庫是靜態的或不經常更新,則微調模型的知識可能會在更長的時間內保持相關性。但是,如果摘要經常更新,并且模型需要不斷與最新的樣式更改保持一致,則 RAG 可能由于其動態數據檢索功能而具有優勢。
6. 需要透明度/可解釋性?這里的主要目標是風格對齊,因此特定摘要樣式背后的“為什么”可能不如其他用例那么重要。也就是說,如果需要追溯并了解哪些先前的摘要影響了特定輸出,RAG 提供了更多的透明度。不過,這可能是此用例的次要問題。
建議:對于此用例,**微調**似乎是更合適的選擇。主要目標是風格對齊,這是微調大放異彩的維度。假設有相當數量的先前摘要可供訓練,那么微調將LLM允許對所需的樣式進行深度調整,捕獲領域的細微差別和復雜性。但是,如果摘要數據庫具有極強的動態性,并且追溯影響具有價值,則可以考慮采用混合方法或傾向于RAG。
關于組織知識(即外部數據)的問答系統
1. 需要外部知識嗎?依賴于組織知識庫的問答系統本質上需要訪問外部數據,在本例中為組織的內部數據庫和文檔存儲。該系統的有效性取決于它是否能夠利用這些來源并從中檢索相關信息以回答問題。鑒于此,RAG 是此維度更合適的選擇,因為它旨在通過從知識源檢索相關數據來增強LLM功能。
2. 需要進行模型適配嗎?根據組織及其領域的不同,可能需要模型與特定的術語、語氣或約定保持一致。雖然 RAG 主要關注信息檢索,但微調可以幫助調整LLM其對公司內部語言或其領域的細微差別的響應。因此,對于這個維度,根據具體要求,微調可能會起作用。
3. 減少幻覺至關重要嗎?在此用例中,幻覺是一個主要問題,因為 LLMs的知識截止。如果模型無法根據它所訓練的數據回答問題,它幾乎肯定會恢復為(部分或全部)編造一個看似合理但不正確的答案。
4. 訓練數據可用?如果組織有一個結構化和標記的以前回答過的問題的數據集,這可以支持微調方法。但是,并非所有內部數據庫都出于培訓目的進行了標記或結構化。在數據沒有整齊地標記的情況下,或者主要關注點是檢索準確且相關的答案,RAG 能夠在不需要大量標記數據集的情況下訪問外部數據源,這使其成為一個引人注目的選擇。
5. 數據的動態性如何?組織中的內部數據庫和文檔存儲可能是高度動態的,經常更新、更改或添加。如果這種活力是組織知識庫的特征,那么RAG提供了一個明顯的優勢。它不斷查詢外部資源,確保其答案基于最新的可用數據。微調需要定期進行再培訓以跟上這些變化,這可能是不切實際的。
6. 需要透明度/可解釋性?對于內部應用程序,尤其是在金融、醫療保健或法律等領域,了解答案背后的原因或來源至關重要。由于 RAG 提供了檢索和生成的兩步過程,因此它本質上可以更清楚地了解哪些文檔或數據點影響了特定答案。這種可追溯性對于可能需要驗證或進一步調查某些答案來源的內部利益相關者來說是無價的。
建議:對于這種用例**,RAG 系統**似乎是更合適的選擇。鑒于需要動態訪問組織不斷發展的內部數據庫,以及回答過程中的透明度的潛在要求,RAG 提供的功能非常適合這些需求。但是,如果非常強調定制模型的語言風格或適應特定領域的細微差別,則可以考慮納入微調元素。
客戶支持自動化(即自動聊天機器人或幫助臺解決方案,提供對客戶查詢的即時響應)
1. 需要外部知識嗎? 客戶支持通常需要訪問外部數據,尤其是在處理產品詳細信息、帳戶特定信息或故障排除數據庫時。雖然許多查詢可以通過一般知識來解決,但有些可能需要從公司數據庫或產品常見問題解答中提取數據。在這方面,RAG從外部來源檢索相關信息的能力將是有益的。但是,值得注意的是,許多客戶支持交互也基于預定義的腳本或知識,這些可以通過微調模型有效地解決。
2. 需要進行模型適配嗎?客戶互動需要一定的語氣、禮貌和清晰度,并且可能還需要公司特定的術語。微調對于確保LLM適應公司的聲音、品牌和特定術語特別有用,從而確保一致且與品牌一致的客戶體驗。
3. 減少幻覺至關重要嗎?對于客戶支持聊天機器人來說,避免虛假信息對于維持用戶信任至關重要。僅微調就會使模型在面對不熟悉的查詢時容易產生幻覺。相比之下,RAG 系統通過在檢索到的證據中建立響應來抑制捏造。這種對來源事實的依賴使 RAG 聊天機器人能夠最大限度地減少有害的謊言,并在準確性至關重要的情況下為用戶提供可靠的信息。
4. 訓練數據可用?如果一家公司有客戶互動的歷史,那么這些數據對于微調來說是非常寶貴的。可以使用以前客戶查詢及其解決方案的豐富數據集來訓練模型,以便將來處理類似的交互。如果此類數據有限,RAG 可以通過從產品文檔等外部來源檢索答案來提供回退。
5. 數據的動態性如何?客戶支持可能需要解決有關新產品、更新的政策或更改的服務條款的查詢。在產品陣容、軟件版本或公司策略頻繁更新的情況下,RAG 從最新文檔或數據庫動態拉取的能力是有利的。另一方面,對于更靜態的知識領域,微調就足夠了。
6. 需要透明度/可解釋性?雖然透明度在某些領域是必不可少的,但在客戶支持中,主要關注點是準確、快速和禮貌的響應。但是,對于內部監控、質量保證或解決客戶糾紛,對答案來源的可追溯性可能是有益的。在這種情況下,RAG 的檢索機制提供了額外的透明度層。
建議:對于客戶支持自動化,**混合方法**可能是最佳選擇。微調可以確保聊天機器人與公司的品牌、語氣和一般知識保持一致,處理大多數典型的客戶查詢。然后,RAG 可以作為一個補充系統,介入進行更動態或具體的查詢,確保聊天機器人可以從最新的公司文檔或數據庫中提取,從而最大限度地減少幻覺。通過集成這兩種方法,公司可以提供全面、及時和品牌一致的客戶支持體驗。
圖片由作者提供
需要考慮的其他方面
如上所述,在決定 RAG 和微調(或兩者兼而有之)之間時,還應考慮其他因素。我們不可能深入研究它們,因為它們都是多方面的,并且沒有像上述某些方面那樣的明確答案(例如,如果沒有訓練數據,則根本不可能進行微調)。但這并不意味著我們應該忽視它們:
可擴展性
隨著組織的發展和需求的變化,所討論的方法的可擴展性如何?鑒于 RAG 系統的模塊化特性,它可能會提供更直接的可擴展性,尤其是在知識庫增長的情況下。另一方面,頻繁地微調模型以適應不斷擴展的數據集可能對計算要求很高。
延遲和實時要求
如果應用程序需要實時或近乎實時的響應,請考慮每種方法引入的延遲。RAG 系統涉及在生成響應之前檢索數據,與基于內部知識生成響應的微調LLM系統相比,可能會引入更多延遲。
維護和支持
從長遠考慮。哪個系統更符合組織提供一致維護和支持的能力?RAG 可能需要維護數據庫和檢索機制,而微調則需要一致的重新培訓工作,尤其是在數據或需求發生變化的情況下。
堅固性和可靠性
每種方法對不同類型輸入的魯棒性如何?雖然 RAG 系統可以從外部知識源中提取,并可能處理一系列廣泛的問題,但經過良好微調的模型可能會在某些領域提供更高的一致性。
道德和隱私問題
存儲和檢索外部數據庫可能會引發隱私問題,尤其是在數據敏感的情況下。另一方面,一個微調的模型雖然不查詢實時數據庫,但仍可能根據其訓練數據產生輸出,這可能會產生其自身的道德影響。
與現有系統集成
組織可能已經擁有某些基礎設施。RAG 的兼容性或與現有系統的微調(無論是數據庫、云基礎設施還是用戶界面)都會影響選擇。
用戶體驗
考慮最終用戶及其需求。如果他們需要詳細的、有參考支持的答案,RAG 可能更可取。如果他們重視速度和特定領域的專業知識,那么微調的模型可能更合適。
成本
微調可能會變得昂貴,尤其是對于非常大的模型。但在過去的幾個月里,由于采用了QLoRA等參數高效技術,成本大幅下降。設置 RAG 可能是一項巨大的初始投資——包括集成、數據庫訪問,甚至可能是許可費——但隨后還需要考慮定期維護外部知識庫。
復雜性
微調可能會很快變得復雜。雖然許多提供商現在提供一鍵式微調,我們只需要提供訓練數據,但跟蹤模型版本并確保新模型仍然全面表現良好是具有挑戰性的。另一方面,RAG 也會很快變得復雜。需要設置多個組件,確保數據庫保持新鮮,并確保各個部分(如檢索和生成)恰到好處地組合在一起。
結論
正如我們所探討的,在 RAG 和微調之間進行選擇需要對LLM應用程序的獨特需求和優先級進行細致入微的評估。沒有一個放之四海而皆準的解決方案;成功在于使優化方法與任務的特定要求保持一致。通過評估關鍵標準(對外部數據的需求、調整模型行為、訓練數據可用性、數據動態、結果透明度等),組織可以就最佳前進路徑做出明智的決策。在某些情況下,同時利用 RAG 和微調的混合方法可能是最佳的。
關鍵是要避免假設一種方法普遍優越。像任何工具一樣,它們的適用性取決于手頭的工作。方法和目標的錯位可能會阻礙進展,而正確的方法可以加速進展。當一個組織評估提升LLM應用程序的選項時,它必須抵制過度簡化,而不是將 RAG 和微調視為可以互換的,并選擇使模型能夠實現其與用例需求相符的功能的工具。這些方法解鎖的可能性是驚人的,但僅憑可能性是不夠的——執行就是一切。工具就在這里,現在讓我們把它們付諸實踐。
本文轉載自 ??AI大模型世界??,作者:海科·霍茨
