關于RAG應用中怎么高質量的進行數據召回——召回策略的研究 原創
“ 數據召回是RAG技術的重要領域,而不同的召回策略甚至會產生完全不同的效果。”
RAG技術的核心原理很簡單,本質上就是在外部維護一個資料庫,在進行大模型問答之前,先從資料庫中找到相關的內容,然后一起輸入到大模型中。
但由于文檔的復雜性,在進行文檔處理時很難真正做到高質量的數據處理;因此,在做數據召回時就會面臨著各種各樣的問題。
所以,怎么進行高質量的數據召回,就成為RAG必須要研究的一個課題;而今天,我們就來簡單介紹一下常見的幾種召回策略。
召回策略
RAG的難點主要有兩個,一個是前期的文檔處理;其次就是數據的召回;由于大模型本身無法分辨輸入到模型中的文檔質量,因此關于數據的召回只能進行人為的控制,而人為控制的方法只能通過技術手段來進行約束。
因此,在不考慮前期文檔處理的情況下,RAG應用中最重要的一點就是解決數據召回的問題。
召回的本質其實很簡單,就是快速準確地從外部資料庫中找到與問題相關的數據;比如說,用戶的問題是怎么學習人工智能?
然后就需要從大量的外部數據中快速找到與人工智能相關的內容,包括,書籍,視頻,論文等多種不同的形式。
舉例來說,以目前世界上現存的知識體系為例;涉及的領域沒有一千也有八百;而一個人不可能什么領域都能涉及,什么領域都懂;因此,如果有一個人想快速入門一個領域應該怎么辦?
首先,他可以通過互聯網搜索任何他想從事的領域的內容資料;但現在的問題是,世界上的資料,文檔那么多,搜索引擎怎么知道怎么找到與之相關的數據?
這就是搜索引擎要解決的事情,而RAG需要解決的也是這個事情。
RAG是基于神經網絡模型做的語義性檢索,因此其與傳統的字符匹配方式檢索有很大的區別,比較直觀的體現就是向量計算;因此基于RAG系統有專門的向量數據庫進行向量檢索。
當然,并不是說RAG只能使用向量數據庫,RAG的本質是快速找到相關數據,但RAG不會在意你的數據是使用向量數據庫存儲還是傳統的關系數據庫存儲。也就是說RAG和數據持久化是無關的,或者說數據持久化只是RAG的一部分。
召回策略
關于RAG的召回策略有多種實現方式,最簡單的就是基于傳統的字符匹配和搜索技術,以及目前比較火的語義檢索方式——向量計算。
什么是語義檢索?
所謂的語義就是指,你不但要聽到我所說的話,你還要能聽懂我所說的意思。
比如說,問你吃飯了嗎?這可能只是一種問候語,也可能是他想請你吃飯,順便聊聊天,在不同的環境下其語義是不同的。
RAG的主要召回策略有以下幾種:
- 基于傳統的字符匹配和分詞檢索
- 基于向量計算的語義檢索
- 數據重排技術——Rerank
- 問題拆分技術
- 多路召回
基于傳統的字符匹配和分詞檢索
在大模型出現之前,搜索引擎主要采用的就是字符匹配和分詞技術;常見的技術載體就是關系型數據庫和ES這種分詞檢索工具。
在某些業務場景下,RAG依然會使用這些技術,原因就在于其技術體系比較成熟,解決方案也比較完善,并且效果也不錯。
基于向量計算的語義檢索
基于向量計算的語義檢索,常見的就是向量數據庫或者支持向量計算的傳統關系型數據庫;其本質是通過Embedding(嵌入)模型,把文本轉化成向量,然后通過歐式距離或余弦計算等方式,計算其相似度。
數據重排技術——Rerank
數據重排也是基于向量計算的一種方式,其原理是通過把第一步檢索到的結果通過重排技術,找到其“分數”也就是相似度最高的數據。
舉例來說,你搜索孫悟空,可能會得到很多與之相關的內容,比如說介紹四大名著的內容,介紹三打白骨精的內容,亦或者大鬧天宮的內容;
而你想了解的可能只是大鬧天宮,或者三打白骨精,這時介紹四大名著的內容可能就不需要了。
而通過重排序就可以實現召回數據的二次篩選,達到更加精確的數據匹配。
問題拆分技術
問題拆分原理很簡單,本質上就是利用大模型來分析你的問題,然后給出幾個相似的問題;然后通過這幾個相似問題去進行召回,這樣就可以提高召回數據的精度。
比如說,用戶問題是我想去旅游,你有什么建議嗎?
這時大模型就可以根據這個問題幫你拆分幾個相似性的問題;比如說,我想去一個風景優美的地方;我想找個地方放松一下心情;亦或者我想去看看祖國的大好河山。
通過問題拆分的方式,用戶就可以得到多個相似性的問題,這樣就可以從更多的維度去向量數據庫或者其它地方召回更多相關的問題;之后再通過重排序技術,來找到其中最相關的內容。
多路召回
多路召回的原理也很簡單,就是通過多種不同的策略,或者模型或渠道,檢索出多個與之相關的內容;其有點類似于問題拆分的思想,但區別是問題拆分是從問題入手,而多路召回是從檢索策略或檢索途徑入手。
舉一個比較形象的例子就是,如果你想了解某個行業;你可以選擇從公網上查找數據,也可以選擇找專門的行業論壇或社區了解內容;還可以通過找專業人士交談來了解。
而這種通過多種不同的方式,以及不同的渠道進行數據召回的方式就是多路召回。
當然,召回技術并不僅僅只限于RAG領域,在傳統的搜索引擎領域,召回技術同樣扮演著重要角色;因此,RAG技術也同樣可以應用于搜索引擎領域。
當然,這里僅僅只是介紹一下簡單的,比較常見的召回策略;在RAG的具體實踐中,在不同的場景下也會存在一些特殊的召回方式和策略;比如說數據分類,建立索引等方式,以及知識圖譜等新型技術。
最重要的是,你要理解這些召回方式并不是互斥的;在很多場景下都是把這些策略進行組合使用,以此達到更加精準的召回質量;特別是在大數據量的情況下,完全基于向量相似度計算的方式,其對算力和響應的要求,是不被允許的。
因此,在大數據量的情況下,先進行快速的非精確匹配,然后再進行更加精確的相似度計算是一種常見的召回方式。
本文轉載自公眾號AI探索時代 作者:DFires
原文鏈接:??https://mp.weixin.qq.com/s/plrG1-UsjxygOazV7hNsPw??
