大模型超長窗口上下文與檢索增強生成——RAG 原創
“ 怎么解決大模型的記憶問題,以及保證結果的準確性,目前還是大模型應用中一個亟待解決的問題 ”
看過作者文章的人對RAG技術應該有了初步的了解,但不知道是否了解大模型的窗口大小;即使沒有研究過大模型的窗口,但也應該聽過每次大模型輸入的內容是有限的;而這個有限就是因為大模型窗口的限制。
那么,大模型窗口與檢索增強的關系是什么樣的?怎么解決長對話問題,隨著大模型窗口的增加,RAG會死嗎?
大模型窗口與RAG
RAG——檢索增強這個技術就不在過多介紹了,如果對此不了解的可以看一下作者之前的文章,比如前幾天的??RAG與本地知識庫,向量數據庫,以及知識圖譜的聯系與區別??。
那么今天主要來介紹一下大模型窗口,以及其與RAG技術的區別。
什么是大模型的窗口?
對技術有了解的人應該都知道,大模型是根據Token進行計費的,所謂的Token就是不同模態的數據,轉化為向量之后的一種計算方式;而大模型的窗口全稱是大模型上下文窗口,簡單來說就是大模型一次能夠接受的Token的大小。
大模型的窗口為什么如此重要?
原因就在于,大模型的窗口代表著大模型能夠處理數據的大小,窗口越大代表著能夠輸入到大模型的內容越多,大模型能夠捕捉的上下文就越多,內容就越全面,當然效果相對就越好。
舉個栗子來說,假如你想讓大模型回答一些關于四大名著的問題,那么你直接把四大名著直接都輸入到大模型,這樣肯定就能得到更準確,更好的回答;而如果你只是告訴大模型孫悟空三打白骨精的那一段,那么其它的問題大模型就無法回答了。
這就是大模型上下文窗口的作用,能夠增加大模型上下文理解的能力,原因就在于大模型沒有記憶能力。
但大模型的窗口真的是越大越好嗎?大模型的窗口是否能無限大?
大模型的窗口并不是越大越好,當然更不可能無限大;原因在于,上下文窗口越長,對大模型理解能力要求越高;就類似于,讓一個小學生去看上下五千年,雖然小學生可能真的能看懂,但他對很多東西都理解得不深刻。
這樣就會導致一個問題,那就是大模型對長文本理解的不準確,因此控制窗口大小,讓大模型找到自己理解的極限才是最好的。
因此,這也是為什么今年以來大模型的窗口一直在不斷的增長,因為越長的文本處理能力,代表著模型能力越強;但從目前來看,長上下文窗口依然存在很多問題,比如理解不全面,對算力消耗更高,響應時間過長等等。
為什么說大模型上下文窗口可能會直接導致RAG的死亡?
原因就在于,如果大模型的窗口真的可以無限大,而且大模型又能夠真正理解全部上下文,那么RAG就沒有了存在的意義;因為,直接把全世界所有的數據和資料全部塞進大模型里,這樣大模型就真的無所不知了。
但既然大模型無法做到這一步,因此RAG就肯定有其存在的空間。
其實,歸根結底不論是上下午窗口,還是RAG,亦或者是長對話等等;所有的一切都是因為大模型不具備記憶能力,而想出的補償方法。所以,不論是上下文還是RAG,本身都是為了解決大模型的記憶問題,包括長期記憶和短期記憶。
那么,思考一個問題,長對話問題怎么解決?
其實長對話問題一般有兩個解決方案,就是上面的兩個上下文窗口和RAG;區別就是,上下文窗口是直接把所有歷史對話全部帶入到上下文中,讓大模型自己去理解。而RAG是把對話信息保存到外部數據庫中,然后每次對話都先檢索到與對話最相關的內容,然后拼接到大模型的提示詞中。
當然,還有其它的方案,但暫不在此次討論的范圍之中。
當然,長對話并不只是簡單的解決記憶問題,還一個重要因素就是準確性;在一些特殊的業務場景下,比如醫療,任何輕微的差別都可能導致致命的錯誤;因此,大模型在醫療領域的應用,怎么才能保證百分之百的準確性,這是一個值得思考的問題。
現在大家對長文本和RAG都有了一定的了解,那么你認為上下文和RAG,哪個才是大模型的最終選擇?
本文轉載自公眾號AI探索時代 作者:DFires
