FastRAG:半結(jié)構(gòu)化數(shù)據(jù)的檢索增強(qiáng)生成
本文介紹了FastRAG,一種針對半結(jié)構(gòu)化數(shù)據(jù)的新型RAG方法。FastRAG采用模式學(xué)習(xí)和腳本學(xué)習(xí)來提取和結(jié)構(gòu)化數(shù)據(jù),而無需將整個(gè)數(shù)據(jù)源提交給LLM。它將文本搜索與知識圖譜(KG)查詢相結(jié)合,以提高在問答任務(wù)中檢索上下文豐富信息的準(zhǔn)確性。從評估結(jié)果來看,F(xiàn)astRAG在提供準(zhǔn)確問答的同時(shí),與GraphRAG相比,時(shí)間上提高了90%,成本上提高了85%。
FastRAG提出的背景和動(dòng)機(jī)
FastRAG(Fast Retrieval-Augmented Generation)的提出主要基于以下幾個(gè)動(dòng)機(jī)和背景:
1. 網(wǎng)絡(luò)數(shù)據(jù)處理的復(fù)雜性和挑戰(zhàn)
隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,網(wǎng)絡(luò)數(shù)據(jù)的多樣性和復(fù)雜性顯著增加。網(wǎng)絡(luò)管理任務(wù)需要高效處理和理解半結(jié)構(gòu)化數(shù)據(jù),如日志和配置文件。傳統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)處理工具雖然在一定程度上提供了實(shí)用性,但在全面提取和利用嵌入在半結(jié)構(gòu)化數(shù)據(jù)中的信息方面存在不足。此外,從不同供應(yīng)商關(guān)聯(lián)這些數(shù)據(jù)由于網(wǎng)絡(luò)服務(wù)的分散實(shí)現(xiàn)而變得更加復(fù)雜。
2. 現(xiàn)有RAG方法的局限性
盡管大型語言模型(LLM)和檢索增強(qiáng)生成(RAG)技術(shù)在處理和理解自然語言方面展示了巨大潛力,但現(xiàn)有的RAG方法如VectorRAG和GraphRAG在處理半結(jié)構(gòu)化技術(shù)數(shù)據(jù)時(shí)存在一些局限性:
- VectorRAG:基于語義相似性從文本文檔中提供上下文檢索,但在處理網(wǎng)絡(luò)數(shù)據(jù)的領(lǐng)域特定關(guān)鍵詞時(shí)表現(xiàn)不佳,因?yàn)檫@些關(guān)鍵詞在不同上下文中可能具有不同含義。
- GraphRAG:通過利用知識圖譜(KG)組織從源文檔中提取的信息,但在提供有用答案方面存在不足,特別是在查詢需要精確匹配的特定值(如名稱或類型)時(shí)。
- HybridRAG:結(jié)合了VectorRAG和GraphRAG的優(yōu)勢,提高了響應(yīng)的準(zhǔn)確性和上下文相關(guān)性,但仍繼承了其基礎(chǔ)方法的局限性。
3. 處理時(shí)間和成本的挑戰(zhàn)
現(xiàn)有的RAG系統(tǒng)依賴LLM來提取結(jié)構(gòu)化信息,通常需要將源文檔分成小塊并逐塊處理,這導(dǎo)致了處理時(shí)間和成本的增加。特別是在處理大規(guī)模和頻繁變化的網(wǎng)絡(luò)數(shù)據(jù)時(shí),這種逐塊處理的方法效率低下且成本高昂。
4. 信息檢索的準(zhǔn)確性和效率
在網(wǎng)絡(luò)管理中,準(zhǔn)確和高效的信息檢索至關(guān)重要。現(xiàn)有的RAG方法在處理半結(jié)構(gòu)化技術(shù)數(shù)據(jù)時(shí),往往無法充分利用數(shù)據(jù)的隱含信息,導(dǎo)致檢索效率低下和準(zhǔn)確性不足。
5. 模式和腳本學(xué)習(xí)的必要性
為了解決上述問題,F(xiàn)astRAG引入了模式學(xué)習(xí)和腳本學(xué)習(xí)技術(shù)。通過模式學(xué)習(xí),系統(tǒng)能夠自動(dòng)識別和結(jié)構(gòu)化源數(shù)據(jù)中的實(shí)體類型及其屬性,而無需將整個(gè)數(shù)據(jù)源提交給LLM。腳本學(xué)習(xí)則進(jìn)一步生成解析函數(shù),以高效提取和處理數(shù)據(jù)。
6. 結(jié)合文本搜索和KG查詢
FastRAG將文本搜索與知識圖譜(KG)查詢相結(jié)合,以提高在問答任務(wù)中檢索上下文豐富信息的準(zhǔn)確性。文本搜索基于精確的措辭或結(jié)構(gòu)進(jìn)行匹配,而KG查詢則利用圖數(shù)據(jù)庫的結(jié)構(gòu)化信息,兩者結(jié)合可以更全面地回答復(fù)雜查詢。
7. 成本和時(shí)間的優(yōu)化
FastRAG通過生成JSON模式和Python代碼進(jìn)行數(shù)據(jù)結(jié)構(gòu)化和解析,避免了通過LLM處理所有源數(shù)據(jù)的昂貴過程。這種方法顯著減少了處理時(shí)間和成本,特別是在處理大規(guī)模和頻繁變化的網(wǎng)絡(luò)數(shù)據(jù)時(shí)。
FastRAG設(shè)計(jì)架構(gòu)
FastRAG(Fast Retrieval-Augmented Generation)的設(shè)計(jì)架構(gòu)旨在高效處理和檢索半結(jié)構(gòu)化網(wǎng)絡(luò)數(shù)據(jù),通過結(jié)合模式學(xué)習(xí)、腳本學(xué)習(xí)和信息檢索技術(shù),優(yōu)化數(shù)據(jù)處理和問答任務(wù)的效率和準(zhǔn)確性。
1. 總體架構(gòu)概述
FastRAG的總體架構(gòu)如上圖所示,主要包括以下幾個(gè)關(guān)鍵組件:
- 分塊采樣(Chunk Sampling):選擇代表性的數(shù)據(jù)塊進(jìn)行處理,以減少處理時(shí)間和成本。
- 模式學(xué)習(xí)(Schema Learning):自動(dòng)識別和結(jié)構(gòu)化源數(shù)據(jù)中的實(shí)體類型及其屬性。
- 腳本學(xué)習(xí)(Script Learning):生成解析函數(shù),以高效提取和處理數(shù)據(jù)。
- 信息檢索(Information Retrieval):結(jié)合文本搜索和知識圖譜(KG)查詢,提高問答任務(wù)的準(zhǔn)確性。
2. 分塊采樣(Chunk Sampling)
分塊采樣是FastRAG的第一步,旨在選擇代表性的數(shù)據(jù)塊進(jìn)行處理,以減少處理時(shí)間和成本。該過程涉及兩個(gè)關(guān)鍵程序:關(guān)鍵詞提取和塊選擇。
2.1 關(guān)鍵詞提取
關(guān)鍵詞提取從源數(shù)據(jù)中識別最有意義的術(shù)語。該過程包括以下步驟:
- 文本預(yù)處理:去除標(biāo)點(diǎn)符號并將內(nèi)容標(biāo)記化為單個(gè)單詞。
- 行分割:將文本分成行,并根據(jù)單詞頻率創(chuàng)建矩陣表示。
- K-means聚類:根據(jù)術(shù)語頻率模式的相似性將行分組為nc個(gè)簇。
- 關(guān)鍵詞選擇:在每個(gè)簇中選擇最接近質(zhì)心的nt個(gè)術(shù)語作為關(guān)鍵詞。
2.2 樣本選擇
樣本選擇算法選擇包含提取關(guān)鍵詞的完整集合的最小塊集。該過程包括以下步驟:
- 預(yù)處理:只保留提取的關(guān)鍵詞。
- TF-IDF向量計(jì)算:計(jì)算每個(gè)塊的術(shù)語頻率-逆文檔頻率(TF-IDF)向量。
- 香農(nóng)熵計(jì)算:計(jì)算每個(gè)塊的香農(nóng)熵以衡量其信息多樣性。
- 迭代選擇:迭代選擇塊子集以最大化術(shù)語覆蓋率,直到達(dá)到所需的覆蓋率閾值。
3. 模式學(xué)習(xí)(Schema Learning)
模式學(xué)習(xí)是FastRAG的核心組件之一,旨在自動(dòng)識別和結(jié)構(gòu)化源數(shù)據(jù)中的實(shí)體類型及其屬性。該過程包括以下步驟:
3.1 模式提取
- 初始模式生成:從第一個(gè)樣本塊開始,LLM被提示識別并將實(shí)體類型和屬性結(jié)構(gòu)化為JSON模式。
- 迭代細(xì)化:通過提交新塊給LLM,迭代地細(xì)化之前的JSON模式。
- 驗(yàn)證和修正:每次提示后,驗(yàn)證生成的JSON模式是否良構(gòu),如有錯(cuò)誤則進(jìn)行修正。
3.2 模式類型
從最終模式中提取兩種類型的對象:
- 步驟1模式:僅包括第1級實(shí)體類型(部分),每個(gè)實(shí)體類型包括描述和源數(shù)據(jù)行。
- 步驟2模式:每個(gè)部分與一個(gè)數(shù)組相關(guān)聯(lián),數(shù)組中的對象對應(yīng)于該部分的完整模式。
4. 腳本學(xué)習(xí)(Script Learning)
腳本學(xué)習(xí)是FastRAG的另一個(gè)核心組件,旨在生成解析函數(shù),以高效提取和處理數(shù)據(jù)。該過程包括以下步驟:
4.1 腳本生成
- 初始函數(shù)生成:從第一個(gè)樣本塊開始,LLM被提示生成解析函數(shù)。
- 迭代細(xì)化:通過提交新樣本塊給LLM,迭代地細(xì)化之前的函數(shù)代碼。
- 驗(yàn)證和修正:每次提示后,驗(yàn)證生成的代碼是否語法和功能正確,如有錯(cuò)誤則進(jìn)行修正。
4.2 獨(dú)立處理
- 步驟1解析:將源數(shù)據(jù)中的每一行映射到其對應(yīng)的部分,并將其分成固定大小的塊。
- 步驟2解析:為每個(gè)部分生成特定的解析函數(shù),并使用相應(yīng)的解析函數(shù)處理每個(gè)部分內(nèi)的數(shù)據(jù)。
5. 信息檢索(Information Retrieval)
信息檢索是FastRAG的最終組件,旨在結(jié)合文本搜索和知識圖譜(KG)查詢,提高問答任務(wù)的準(zhǔn)確性。該過程包括以下步驟:
5.1 KG創(chuàng)建
- 實(shí)體插入:在JSON對象中識別的每個(gè)實(shí)體作為節(jié)點(diǎn)插入KG中,實(shí)體類型作為節(jié)點(diǎn)的標(biāo)簽。
- 屬性分配:實(shí)體的簡單類型屬性直接分配為節(jié)點(diǎn)的屬性,而本身是對象的屬性則作為子節(jié)點(diǎn)插入。
- 輸入數(shù)據(jù)節(jié)點(diǎn):對于每個(gè)實(shí)體的input_data屬性中的每一行,創(chuàng)建相應(yīng)的節(jié)點(diǎn)并鏈接到父實(shí)體節(jié)點(diǎn)。
5.2 檢索策略
定義并測試了幾種檢索策略以與KG交互:
- KG查詢(圖):使用提示向LLM提供KG的模式,生成語法正確的GQL語句,執(zhí)行并解釋結(jié)果。
- 文本搜索(文本):使用提示向LLM提供文本搜索功能的示例,生成僅使用文本搜索功能的GQL語句,執(zhí)行并解釋結(jié)果。
- 組合查詢(組合):為給定的輸入查詢并行執(zhí)行KG查詢和文本搜索提示,將結(jié)果提供給LLM合成最終答案。
- 混合查詢(混合):結(jié)合KG查詢和文本搜索的能力,生成可以利用兩種方法中任何相關(guān)功能的GQL語句。
總結(jié)
FastRAG的設(shè)計(jì)架構(gòu)通過分塊采樣、模式學(xué)習(xí)、腳本學(xué)習(xí)和信息檢索等關(guān)鍵組件,實(shí)現(xiàn)了高效處理和檢索半結(jié)構(gòu)化網(wǎng)絡(luò)數(shù)據(jù)的目標(biāo)。通過自動(dòng)識別和結(jié)構(gòu)化源數(shù)據(jù)中的實(shí)體類型及其屬性,生成解析函數(shù),并結(jié)合文本搜索和KG查詢,F(xiàn)astRAG顯著提高了數(shù)據(jù)處理的效率和問答任務(wù)的準(zhǔn)確性,同時(shí)減少了處理時(shí)間和成本。