1.1 大模型應用的方向:RAG
1.1.1 什么是RAG
1. 生成式AI
一種能夠生成各類內容的技術,包括文本、圖像、音頻和合成數據。自2022年底ChatGPT在全球范圍內推廣以來,基于Transformer解碼器結構的大模型已能在短時間內為用戶生成高質量的文本、表格、代碼,使整個AI領域邁入了新的時代。
大語言模型(Large Language Model,LLM)經過海量文本數據的訓練后,能將這些文本數據以一種黑盒形式壓縮在模型參數中。預訓練完成后,模型便掌握了大量的人類知識世界。當模型的規模足夠大且經過指令微調對齊后,便可通過提示模板,運用零樣本(zero-shot)或少樣本(few-shot)的提示詞來完成許多自然語言理解和自然語言生成任務。
然而,大模型并不具備在環境中不斷變化的場景中回答特定問題所需的全面知識。例如,早期的ChatGPT的預訓練語料庫時間截止至2021年,這意味著模型無法準確輸出2021年以后的事實性問題,這正是現代大模型所面臨的知識更新困境。實際上,對于一個大模型來說,更新基礎模型知識庫是非常困難的一件事情。首先,需要保證預訓練數據的質量;其次,更新知識庫后的模型通常都需要重新訓練,至少要將新數據與舊數據按照一定的比例進行混合訓練,而不能僅僅使用新數據,否則會出現災難性遺忘的問題。
2. RAG
2020年,Facebook在"Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"一文中首先提出了一種稱為檢索增強生成(RAG)的框架。該框架可以使模型訪問超出其訓練數據范圍之外的信息,使得模型在每次生成時可以利用檢索提供的外部更專業,更準確的知識,從而更好地回答用戶問題。
RAG在推理過程中分為兩個階段:檢索和內容生成。在檢索階段,通過算法檢索與用戶問題相關的知識片段。在開放領域中,這些知識片段可以來自互聯網上搜索引擎檢索到的文檔,例如微軟Bing AI的模式;在私有領域的企業場景中,通常使用大量的內部文檔通過更小的信息源約束來提高模型生成的安全性和可靠性。
完成檢索之后,可以獲取到一些與用戶輸入相關的可靠外部知識。在內容生成階段,通過一個結構化的prompt模板約束,將這些外部知識添加到用戶的問題中,并傳遞給語言模型。模型基于知識增強的prompt,通過自己的大量參數計算,就可以生成一個針對該用戶問題的更準確的單寧。在這個過程中,還可以約束模型對生成的答案進行溯源,以方便地知道模型是依據哪些知識片段完成最終答案生成的。
1.1.2 RAG與模型微調的對比
模型微調是指在一個特定任務上用一定量的數據來訓練模型的過程,通過在特定數據集上微調可以提高模型在特定數據集上的性能。如果有足夠大的監督數據集,且數據集不會發生改變,那么微調是一個很不錯的方法。盡管大模型的微調成本較高,但現在已有大量低成本微調的方法,例如LoRA。然而,如果數據集是動態的,就需要不斷的重新訓練模型以跟上數據的變化;或者如果沒有足夠大的數據集,那么微調不是一個好辦法。在這種情況下,可以使用RAG來提高大模型的性能。同樣,可以利用RAG來提供大模型在摘要、翻譯等任務上的性能,因為這些任務可能無法進行微調。
RAG
- 定義:將大規模知識庫檢索與大模型生成相結合。檢索相關文檔并使用它們生成答案
- 優點:可以用到外部知識
- 挑戰:需要可靠的召回系統
- 用例:數據經常更新的智能回答場景
模型微調
- 定義:使用較小的數據集細化針對特定任務的預訓練模型。調整模型的權重以使其更適用于特定任務
- 優點:可以在特定任務上獲得不錯的效果,尤其是在監督數據充足的情況下
- 挑戰:數據不足時存在過擬合風險,模型只能處理訓練數據截止日期之前的場景
- 用例:利用模型完成特定任務,例如情感分類、意圖識別
1.2 為什么需要RAG
1.2.1 大模型的知識更新問題
大模型的知識源于預訓練階段,通過大量的無監督數據,利用下一個詞預測任務來完成訓練。待訓練完成之后,模型便能將大量的知識壓縮到自身的參數中。然而,在互聯網時代,知識更新迅速,導致大模型難以實時更新所蘊含的知識。
1.2.2 大模型生成結構的不可解釋性問題
深度模型由于其內部結構非常復雜,導致人們難以理解模型對輸入做出的決策。然而,模型的解釋性在很多方面都非常重要,因為它可以讓開發人員理解模型時如何進行預測的,從而對模型產生的結果更有信心。此外,解釋性還能幫助開發人員找到可以改進的方面,從而對模型進行更好的調整。在大模型領域中,模型基本都基于Transformer的解碼器結構,因此大模型的生成結果仍然存在不可解釋性問題。
然而,在使用RAG系統后,可以告之每個答案的來源。如果對答案不確定,還可以查看提供的溯源網頁進行查看。相較于純粹的大模型生成,RAG具有較強的可解釋性。
1.2.3 大模型的數據泄漏問題
可以通過數據提取攻擊大模型,獲取電話、身份信息、電子郵件等敏感數據。
然而,在使用RAG系統之后,由于模型組織答案所用到的知識來源于預先提供的知識庫信息,利用個人私有數據不僅可以使模型的答案更具有個性化,還能讓整個系統變得更加安全,降低被誘導輸出敏感信息的風險。
1.2.4 大模型的訓練成本問題
近幾年,模型的規模不斷攀升。BERT-Base僅有1億參數量,而如今已出現千億、萬億級別的大模型。
龐大的參數量意味著需要更多的訓練資源。同時,考慮到訓練時長,一個大模型訓練的成本極其昂貴。早在2021年,便有科學家在論文中通過大量實驗證明,可以使用僅1/25參數量的模型結合RAG系統,在Pile數據集上達到GPT-3的效果
1.3 RAG的工作流程
RAG的工作流程涉及3個主要階段:數據準備、數據召回和答案生成