爆火的本地知識庫項目是什么?什么是RAG?本地知識庫與大模型的關系 原創
“ 本地知識庫就相當于大模型的外部資料庫。”
很多人應該都聽過本地知識庫項目,它是當今人工智能領域爆火的項目之一,那么到底什么是本地知識庫?它和大模型有什么關系?怎么構建本地知識庫?
1、為什么需要本地知識庫?
其實本地知識庫和大模型本身沒有什么直接關系,可以說它們是兩個完全獨立的技術。
但因為大模型的幻覺問題和大模型的數據更新遲緩,因此才把知識庫技術與大模型技術相結合,產生了大模型知識庫技術。
什么是知識庫?
知識庫簡單來說就是資料庫,比如國家圖書館收錄了我國幾千年來的歷史書籍和資料;每家企業都會有一些內部數據;各個領域都有自己領域內的數據和資料。
而怎么管理這些資料和數據,就是知識庫技術,知識庫的核心有兩點,一是數據的存儲,二是數據的檢索。
在互聯網技術出現之前,知識庫都是以檔案室或資料室的形式存在;而計算機技術出現之后,特別是大數據技術出現之后,知識庫就可以從線下走到了線上。
而大數據技術也為處理大量復雜數據提供了可能。
大模型技術是當前人工智能領域爆火的技術之一,但它有一個致命的缺陷就是,它的訓練數據是有時間限制的,比如chatGPT的數據還是兩年前的,它對近兩年的情況就什么都不知道了。
解決這個問題其實有多種方式,比如用最新的數據對大模型進行重新訓練,或者使用微調技術比如lora,用最新的數據進行微調。
但這兩種方式一來成本太高,二來門檻太高,對很多小公司是不可接受的。其次就是,哪怕重新訓練出來的大模型,在一些垂直領域的問題上經常會出現“幻覺”問題。
所以,大模型知識庫技術就出現了,大模型就類似于一個大學生;它有足夠的基礎知識,然后在一些沒有接觸過的領域或者不懂的問題,就去圖書館查資料。
更形象的表達應該是類似于學生期末考試之前,會發考前資料,然后告訴你考試內容在資料里。
這樣既解決了大模型的時間限制問題,也解決了成本和門檻問題,也大大減少了幻覺的產生。
2、怎么實現大模型知識庫?
實現大模型知識庫理論上很簡單,就是在問大模型的時候,帶上“資料”,大模型根據資料內容進行回答。
但這里需要解決幾個問題:
第一,資料的加載問題,隨著技術的發展資料的類型也是多種多樣,比如有文本文檔,圖片,視頻,聲音等等;文本文檔還有txt,word,excel等多種格式,還有很多格式化及非格式化數據,因此文檔的加載是一個非常麻煩的事情。
第二,資料的存儲問題,有了資料之后,需要把資料進行加載然后統一處理,而如果這些資料是給人看,那么只需要把文檔按照原本的格式保存即可。但因為大模型只認識向量格式的數據,因此需要把文檔轉化為向量格式存儲,而這就是向量數據庫。
第三,數據的檢索問題,數據加載到向量數據庫之后,應該怎么檢索就是一個問題。因為如果資料庫比較小問題還不大,如果資料庫很龐大,怎么快速的檢索,也是一個值得思考的問題。
大模型知識庫的使用流程
大模型知識庫加載流程如下:
文檔加載,通過加載工具把各種格式的文檔加載到向量數據庫中;其次,需要對文檔進行轉換拆分,比如按照固定長度進行拆分;然后,通過embedding大模型,把拆分后的文檔根據語義轉換為向量格式;最后存儲到向量數據中。
然后使用的時候,從向量數據庫中檢索數據。
embedding模型的作用是為了把文檔進行有意義的語義轉換,否則文檔數據直接存儲到數據庫中就會出現資料錯誤的問題。
流程如下圖所示:
上一步加載完文檔之后,就可以進行使用了。
使用的步驟是,用戶對大模型進行提問,然后通過embedding把用戶提問轉化為向量格式,然后根據提問從向量數據庫中檢索和提問內容有關的資料。如下圖8-11步所示。
檢索到資料之后,根據用戶提問和檢索資料,構建prompt template(提示詞模板),最后輸入到大模型中,獲得結果。
整個知識庫的流程如下圖所示:
本文轉載自公眾號AI探索時代 作者:DFires
