RAG 2.0架構詳解:構建端到端檢索增強生成系統

關於檢索增強生成(RAG)的文章已經有很多了,如果我們能創建出可訓練的檢索器,或者說整個RAG可以像微調大型語言模型(LLM)那樣定製化的話,那肯定能夠獲得更好的結果。但是當前RAG的問題在於各個子模塊之間並沒有完全協調,就像一個縫合怪一樣,雖然能夠工作但各部分並不和諧,所以我們這裏介紹RAG 2.0的概念來解決這個問題。

什麼是RAG?

簡單來說,RAG可以爲我們的大型語言模型(LLM)提供額外的上下文,以生成更好、更具體的迴應。LLM是在公開可用的數據上訓練的,它們本身是非常智能的系統,但它們無法回答具體問題,因爲它們缺乏回答這些問題的上下文。

所以RAG可以向LLM插入新知識或能力,儘管這種知識插入並不是永久的。而另一種常用向LLM添加新知識或能力的方法是通過對我們特定數據進行微調LLM。

通過微調添加新知識相當困難,昂貴,但是卻是永久性。通過微調添加新能力甚至會影響它以前擁有的知識。在微調過程中,我們無法控制哪些權重將被改變,因此也無法得知哪些能力會增加或減少。

選擇微調、RAG還是兩者的結合,完全取決於手頭的任務。沒有一種適合所有情況的方法。

RAG的經典步驟如下:

  • 將文檔分成均勻的塊。
  • 每個塊是一段原始文本。
  • 使用編碼器爲每個塊生成嵌入(例如,OpenAI嵌入,sentence_transformer等),並將其存儲在數據庫中。
  • 找到最相似的編碼塊,獲取這些塊的原始文本,並將其作爲上下文與提示一起提供給生成器。

RAG 2.0

當今典型的RAG系統使用現成的凍結模型進行嵌入,使用向量數據庫進行檢索,以及使用黑盒語言模型進行生成,通過提示或編排框架將它們拼接在一起。各個組件技術上可行,但整體遠非最佳。這些系統脆弱,缺乏對其部署領域的任何機器學習或專業化,需要廣泛的提示,並且容易發生級聯錯誤。結果是RAG系統很少通過生產標準。

而我們要說的RAG 2.0的概念,通過預訓練、微調並對所有組件進行對齊,作爲一個整體集成系統,通過語言模型和檢索器的雙重反向傳播來最大化性能:

 

https://avoid.overfit.cn/post/18853fc6f10e4e23a992880c624ea1dd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章