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