自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

搭建大模型知識庫流程,以及基于Langchain實現(xiàn)大模型知識庫案例 原創(chuàng)

發(fā)布于 2024-9-5 16:00
瀏覽
0收藏

“ RAG檢索增強生成是為了解決大模型知識不足的問題 ”

大模型主要面臨三個問題:

  • 垂直領域內(nèi)的知識不足
  • 大模型知識有時間限制
  • 大模型幻覺問題

第一個問題產(chǎn)生的原因是因為,沒有經(jīng)過垂直領域數(shù)據(jù)訓練的大模型普遍表現(xiàn)不好;其次是目前的大模型采用的是預訓練模式,也就是說需要先收集訓練數(shù)據(jù)進行訓練,但只能收集之前的數(shù)據(jù),不能收集當前和以后的數(shù)據(jù);最后就是大模型幻覺問題,幻覺問題產(chǎn)生的原因就是知識不足,導致在一些領域問題中一本正經(jīng)的胡說八道。

因此,說到底大模型產(chǎn)生以上三個問題的主要原因就是知識不足,因此RAG——檢索增強生成技術就出現(xiàn)了。

RAG技術配合知識庫技術,就能夠補充大模型知識不足的問題,知識庫的作用就相當于給大模型配置一個資料室,遇到不懂的就去資料室里查。

今天,我們就來討論一下本地知識庫的實現(xiàn)步驟,以及代碼。

知識庫的實現(xiàn)步驟及代碼

嚴格來說,解決大模型知識不足問題的技術是RAG——檢索增強生成,而不是知識庫技術。

知識庫技術在大模型之前就已經(jīng)出現(xiàn)了,簡單來說就是公司內(nèi)部的文檔系統(tǒng),里面記錄了企業(yè)內(nèi)部的資料,文檔等,形式可以是一個web系統(tǒng),甚至就是一個文件夾。

而我們今天說的大模型知識庫是基于RAG技術,結合知識庫技術產(chǎn)生的一個變種,主要區(qū)別就是數(shù)據(jù)格式問題。

RAG文檔檢索生成,就是通過把資料向量化,并為了提升查詢效率需要把向量化的文檔存入到向量數(shù)據(jù)庫,然后每次在問大模型之前,先去向量數(shù)據(jù)庫中查詢與問題相關的內(nèi)容,通過提示詞的方式一并傳入到大模型中,這樣就可以解決大模型知識不足的問題。

搭建大模型知識庫流程,以及基于Langchain實現(xiàn)大模型知識庫案例-AI.x社區(qū)

之所以要把資料向量化的原因是,在傳統(tǒng)的查詢搜索過程中,使用的主要是基于字符匹配的方式進行查詢,比如說你想查詢西紅柿炒蛋的做法,查詢的內(nèi)容中就必須包含西紅柿和炒蛋這幾個字。

而有了大模型技術,把資料向量化之后,就可以通過語義進行查詢,大模型會根據(jù)語義分析,知道西紅柿和番茄是一個東西。


大模型知識庫的原理就是給大模型外掛一個資料庫,但大模型畢竟不是人,需要把資料,文檔等轉(zhuǎn)化為大模型能夠識別的格式,就是文檔向量化。


搭建大模型知識庫,需要經(jīng)過以下幾個步驟:

文檔加載

在當今互聯(lián)網(wǎng)時代,知識的形式多種多樣,比如文本格式的就是txt,word,pdf等;還有其它格式如圖片,結構化數(shù)據(jù)以及非結構化數(shù)據(jù)等。

因此,打造一個知識庫需要支持多種文檔,以及不同文檔的加載路徑,如本地加載,網(wǎng)絡加載等;而這就是文檔加載需要解決的問題。

文檔分割

在大模型應用中,長文本處理是一個問題,并且大模型窗口都有上下文長度限制;并且,文檔還需要處理成大模型能夠識別的向量格式,因此對一些長文本文檔需要進行文本分割,解決文檔過長而導致的問題。

文檔分割根據(jù)不同的任務場景,需要進行不同的處理,比如文檔分割的長度,分割形式(比如,段落,標點符號等),重疊長度等。

詞嵌入

在傳統(tǒng)的知識庫系統(tǒng)中,文檔是以文本,圖片,視頻等格式存在的,使用者主要是人,因此只需要能夠通過網(wǎng)絡加載文檔即可。

但在大模型應用中,大模型不認識字,它能夠處理的格式只有向量。而且,還需要進行語義分析,因此需要通過詞嵌入的方式,把文檔轉(zhuǎn)化為大模型能夠處理的,且語義連貫的形式,也就是向量格式,而這個技術就叫做詞嵌入。

詞嵌入工具本質(zhì)上也是一個大模型,只不過是專門訓練用來完成語義理解和向量轉(zhuǎn)化的模型。


Sentence-transformer 詞嵌入python 庫 可以支持多種嵌入模型 或者可以使用第三方提供的轉(zhuǎn)化工具,比如openAI,通義千問等。


文檔處理整體流程入下圖所示:

搭建大模型知識庫流程,以及基于Langchain實現(xiàn)大模型知識庫案例-AI.x社區(qū)

文檔存儲

文檔存儲的功能就是需要把通過詞嵌入轉(zhuǎn)化的大模型能夠識別的向量格式存儲起來,一般使用的是向量數(shù)據(jù)庫。

當大模型需要使用的時候,再通過檢索的形式從向量數(shù)據(jù)庫中獲取。

文檔存儲的作用是為了解決查詢效率的問題,但也并不是必須的;比如說,當你知識庫的內(nèi)容很少的時候,你也可以選擇每次提問的時候,重新加載文檔并向量化,這樣之前向量化過的文檔就存儲在向量數(shù)據(jù)庫中,下次使用的時候就可以直接從數(shù)據(jù)庫中查詢。

就類似于在web開發(fā)中,你也可以把用戶數(shù)據(jù)通過|或某種符合間隔起來并保存到txt文件中,每次查詢的時候需要讀取文件并解析數(shù)據(jù),這樣就會非常的麻煩;而如果把用戶信息存儲到數(shù)據(jù)庫中,就會方便的多。

搭建大模型知識庫流程,以及基于Langchain實現(xiàn)大模型知識庫案例-AI.x社區(qū)

文檔檢索

從向量數(shù)據(jù)庫中,通過語義對數(shù)據(jù)進行檢索,然后把檢索結果帶入到大模型中,供大模型使用。技術實現(xiàn)是通過數(shù)學計算,根據(jù)向量計算相對位置,位置越近語義相關度越高;比如歐式距離,cos值等。

RAG的難點和重點是數(shù)據(jù)的質(zhì)量和檢索質(zhì)量,也就是說本地知識庫的好壞和使用的模型(用來回答問題的模型,不是詞嵌入的模型)沒有什么關系,只是和你檢索的效果有關。

簡單來說就是,你的知識庫數(shù)據(jù)質(zhì)量和向量數(shù)據(jù)庫的質(zhì)量越好,RAG的效果才越好。

完整代碼用戶可以在公眾號回復  RAG案例 即可獲得。


本文轉(zhuǎn)載自公眾號AI探索時代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/PhxFos15uHHcdLnmyHTlHg??



?著作權歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任
標簽
已于2024-9-5 18:03:15修改
收藏
回復
舉報
回復
相關推薦