檢索增強(qiáng)生成(RAG):如何讓AI大模型更懂我?
大模型的局限性體現(xiàn)在缺少實(shí)時(shí)性、無(wú)法獲取私有知識(shí)等方面,而RAG可以幫助解決私有知識(shí)問(wèn)題,讓私有知識(shí)庫(kù)和AI大模型更好地融合。怎么理解RAG的原理、應(yīng)用場(chǎng)景和優(yōu)缺點(diǎn)?一起來(lái)看看本文的分享。
上文簡(jiǎn)單介紹了AI大模型非常重要的提示工程,今天我們繼續(xù)學(xué)習(xí)檢索增強(qiáng)生成(Retrieval-Augmented Generation,RAG)。
RAG可以將私有知識(shí)庫(kù)和AI大模型融合,讓大模型“知道”我們的私有知識(shí),變得越來(lái)越“懂”我們。
一、AI大模型的局限性
使用過(guò)大模型的小伙伴應(yīng)該知道,雖然大模型看起來(lái)無(wú)所不能,但是它也經(jīng)常胡編亂造,沒(méi)有足夠的確定性,這也限制了大模型在各種場(chǎng)景的落地。
大模型的局限性,可以簡(jiǎn)單歸納為以下兩點(diǎn):
- 沒(méi)有實(shí)時(shí)性:AI大模型的知識(shí)不是實(shí)時(shí)的,最新的GPT-4 Turbo也只是把知識(shí)庫(kù)更新到2023年4月,所以無(wú)從得知該時(shí)間之后發(fā)生的事情。
- 無(wú)法獲取私有知識(shí):大模型的訓(xùn)練數(shù)據(jù)主要來(lái)源于互聯(lián)網(wǎng),不可能拿到個(gè)人或企業(yè)的私有數(shù)據(jù),所以無(wú)法回答私有問(wèn)題。
針對(duì)實(shí)時(shí)性問(wèn)題,一般通過(guò)Actions或Function Calling(函數(shù)調(diào)用,可以理解為接口回調(diào))等方式,讓大模型實(shí)時(shí)調(diào)用搜索、地圖、甚至企業(yè)自己實(shí)現(xiàn)的api,獲取各種需要的實(shí)時(shí)信息,減少幻覺(jué),提升確定性。
而RAG可以解決私有知識(shí)問(wèn)題,它通過(guò)外掛知識(shí)庫(kù)的方式,讓大模型可以根據(jù)檢索到的內(nèi)容,回答私有庫(kù)的相關(guān)問(wèn)題,也就是所謂的檢索增強(qiáng),目的同樣是提升確定性。
二、基本概念
RAG的核心目的是通過(guò)某種途徑把我們的知識(shí)告訴給AI大模型,其核心流程就是根據(jù)用戶提問(wèn),從私有知識(shí)中檢索到“包含答案的內(nèi)容”,然后把“包含答案的內(nèi)容”和用戶提問(wèn)一起放到prompt(提示詞)中,提交給大模型,此時(shí)大模型的回答就會(huì)充分考慮到“包含答案的內(nèi)容”,看起來(lái)也就更“懂”我們。
那么具體要如何實(shí)現(xiàn)呢?再看一下核心流程,會(huì)發(fā)現(xiàn)有一個(gè)必須解決的問(wèn)題,就是如何“根據(jù)用戶提問(wèn),從私有知識(shí)中檢索到包含答案的內(nèi)容”,用戶的提問(wèn)是自然語(yǔ)言(包含復(fù)雜的語(yǔ)義理解),傳統(tǒng)的關(guān)鍵字檢索(Elastic Search)是無(wú)法理解語(yǔ)義的,這時(shí)候就需要引入向量檢索的概念了。
- 向量:文本的語(yǔ)義關(guān)系在底層被處理為向量,向量就是一組浮點(diǎn)數(shù),例如[0.72, 0.42, …],代表該文本在N維空間里的坐標(biāo)。在空間中距離越近的向量,語(yǔ)義也就越接近。一般使用歐式距離或余弦距離來(lái)衡量向量的相似度。
- 向量檢索:向量檢索實(shí)際上是將文本分段轉(zhuǎn)換成了一個(gè)個(gè)向量,通過(guò)余弦距離或歐式距離來(lái)計(jì)算兩個(gè)向量之間的相似度,向量相似度越高,表示對(duì)應(yīng)的文本語(yǔ)義相似度越高。
- 向量數(shù)據(jù)庫(kù):專門(mén)為向量檢索設(shè)計(jì)的中間件。
我們可以通過(guò)向量檢索來(lái)獲得與用戶問(wèn)題語(yǔ)義最相近的私有知識(shí)庫(kù)的內(nèi)容,即便用戶問(wèn)題中沒(méi)有包含關(guān)鍵字,也可以通過(guò)語(yǔ)義的相關(guān)性搜索到“包含答案的內(nèi)容”。
實(shí)現(xiàn)RAG的具體步驟如下:
- 加載私有知識(shí)庫(kù)文檔,并將文本切分為一個(gè)個(gè)小片段,需要注意切分的粒度,然后將切分后的文本轉(zhuǎn)換成向量,存入向量數(shù)據(jù)庫(kù)。
- 將用戶的提問(wèn)內(nèi)容也轉(zhuǎn)換成向量,在向量數(shù)據(jù)庫(kù)中檢索相似的文本內(nèi)容,檢索結(jié)果就是“包含答案的內(nèi)容”。
- 將用戶的提問(wèn)內(nèi)容和檢索到的“包含答案的內(nèi)容”組裝成新的提示詞,發(fā)給AI大模型。
- AI大模型參考“包含答案的內(nèi)容”(私有化的知識(shí)資料),回答用戶的問(wèn)題。
這樣我們就可以收獲一位更“懂我”的大模型了。
三、應(yīng)用場(chǎng)景
RAG可以有效擴(kuò)展大模型的知識(shí)庫(kù),以下是一些具體的例子:
- 問(wèn)答系統(tǒng):RAG可以用于構(gòu)建問(wèn)答系統(tǒng),用戶提出問(wèn)題,RAG模型從大規(guī)模的文檔集合中檢索相關(guān)的文檔,然后生成回答。
- 對(duì)話系統(tǒng):在對(duì)話系統(tǒng)中,RAG可以用于生成更豐富、更具信息量的回答。
- 文檔生成:RAG可以用于生成包含特定信息的文檔,例如新聞報(bào)道、研究報(bào)告等。
四、優(yōu)缺點(diǎn)
RAG的優(yōu)點(diǎn):
- 生成的回答更豐富:由于在生成回答時(shí)會(huì)考慮檢索到的文檔,因此生成的回答通常更豐富、更具信息量。
- 能處理開(kāi)放領(lǐng)域的問(wèn)題:傳統(tǒng)的生成模型通常只能處理特定領(lǐng)域的問(wèn)題,而RAG模型可以處理開(kāi)放領(lǐng)域的問(wèn)題,因?yàn)樗梢詮拇笠?guī)模的文檔集合中檢索信息。
RAG的缺點(diǎn):
- 計(jì)算成本高:RAG模型需要在大規(guī)模的文檔集合中進(jìn)行檢索,這會(huì)增加計(jì)算成本。
- 依賴文檔質(zhì)量:RAG模型的性能在很大程度上依賴于文檔的質(zhì)量,如果文檔質(zhì)量差或切分粒度不合適,可能會(huì)影響模型的性能。
- 可能產(chǎn)生不準(zhǔn)確的回答:雖然RAG模型可以生成豐富的回答,但是如果檢索到的文檔包含錯(cuò)誤的信息,可能會(huì)導(dǎo)致生成的回答不準(zhǔn)確。
五、總結(jié)
本文我們主要介紹了RAG的基本原理,RAG可以有效擴(kuò)展大模型的知識(shí)庫(kù),有效提升回答的確定性,讓AI大模型變得更加“懂”我們。
下篇文章,我會(huì)介紹如何讓AI大模型連接外部世界,讓大模型和我們的業(yè)務(wù)連接的更加緊密,甚至看起來(lái)“無(wú)所不能”,敬請(qǐng)期待。
本文由 @AI小當(dāng)家 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!