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