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