[筆記] RAG 檢索增強生成的技術概念
Q:為何需要RAG資料檢索?
A:光靠LLM大語言模型無法準確回答問題,反而出現一本正經地胡說八道,專業術語稱為LLM的幻覺(Hallucination)。為了解決這問題,有兩種方法:第一種是對LLM的預訓練模型進行微調訓練,第二種是加入RAG做資料檢索和LLM的語句生成。前者需要花費硬體設備進行訓練,後者採用LLM+RAG架構可大幅節省成本,市面上比較接受後者方案。其系統架構如下:
Q:RAG的開發與架構?
A:初期RAG開發階段,需要對資料進行多模態的處理,比如對PDF檔案擷取文字、表格、圖片…等多種模態,過程包含資料清洗,剔除一些符號、重複語句、無意義文字…等。然後,對清洗後的資料進行分塊和向量化,最後寫入向量資料庫。這裡的分塊和向量化會使用到現有的演算法來實現,向量資料庫也有現有的架構可使用。
前面是前期RAG的資料處理階段,後期是指RAG運行階段,需要對接到LLM模型,如下圖。
Q:如何向量化?
A:資料清洗後,資料要進行切塊(chunk),再將其向量化,這過程稱為embedding。有人研究中文embedding的檢索能力,參考https://ihower.tw/blog/archives/12167,需要導入有支援多語言的embedding model效果最好。
切塊採用Jieba分詞的算法,文本會切成小的詞彙,以便之後檢索。這些詞彙換算成向量,而典型檢索的演算法為BM25,優點為方法簡單效果不錯,因此使用廣泛,缺點是單純根據詞頻等統計和關鍵字檢索做判斷,無法理解語意。而Word2Vec使用高維向量來表示單詞,能分辨細微語意之差別。
留言