GraphRAG與傳統RAG怎么選?二者的融合方案是什么 原創
?最近工作比較忙,一直在重構公司現有的RAG推薦系統。在給GraphRAG提交了幾個PR并成功合并后,暫時沒有繼續對GraphRAG做出更多貢獻。然而,最近同事和粉絲紛紛私信我,他們最常問的問題有:"什么時候應該使用GraphRAG?","在哪些場景下應該使用傳統的RAG"以及"我們目前在公司使用的是傳統RAG,那要如何與GraphRAG相結合呢?"。為了系統地解答這些問題,我決定寫一篇文章,對這些問題進行詳細的探討。我將先從多個方面解釋GraphRAG和傳統RAG的區別,然后給出二者如何結合的簡單思路。
我們最近建了交流群,感興趣的朋友可以入群交流哈,二維碼放在文末了,如果過期可以加我v: longyunfeigu
知識庫數據特征
GraphRAG
在GraphRAG框架下,我們能夠將產品、品牌、類別以及用戶興趣視作相互聯系的實體,也即圖形的節點。例如:
- 產品:華為P50 Pro
- 攝像頭:萊卡四攝
- 品牌:華為
- 類別:智能手機
- 用戶興趣:高清攝影、適合游戲、旗艦機型
華為P50 Pro 可被關聯至“華為”這一品牌、“智能手機”這一類別,“高清攝影”、“游戲”以及“旗艦機型”這些用戶興趣點上,這種圖形化的表示方式對于推薦相關產品十分有用。
傳統RAG
傳統的RAG可能會選擇將以上數據以一個文本塊的形式進行存儲:
HUAWEI P50 Pro是一款具備徠卡四射的華為旗艦機,搭載有XD Fusion Pro原色引擎、XD Optics計算光學技術、XD Fusion Pro超級濾光系統等華為影像技術,可以提升手機在拍攝時的成像質量。主攝采用了5000萬像素原色鏡頭,可以記錄拍攝場景的肉眼色彩觀感。
因此,當用戶搜尋“優秀攝影效果的手機”時,系統會基于語義匹配來找出這個文本塊。
然而,GraphRAG的優勢就體現在,它可以輕松地在圖形結構中尋找“其他使用萊卡攝像頭的手機”。相較之下,傳統的RAG如果沒有明確符合這一需求的文本塊,就需要依賴編程來進行查詢分解與處理計劃。
知識庫檢索
拿產品推薦系統舉例,考慮一個用戶的查詢:“有哪些適合長時間佩戴并且具有降噪功能的耳機?”
- 在GraphRAG系統中,這個查詢可以從“耳機”節點出發,探索多個與耳機相關的產品節點。系統會首先檢索這些產品的“特性”節點,尋找那些與“長時間佩戴舒適性”相關的耳機;然后,系統會進一步檢索與“降噪功能”相關的特性節點,找到符合條件的耳機產品。通過這種多維度的關聯篩選,GraphRAG能夠為用戶推薦既舒適又具備降噪功能的耳機,精確滿足用戶的需求。
- 在**傳統的 RAG **系統中,系統會嘗試通過關鍵詞如“智能手機”、“高質量視頻”、“良好口碑”等來搜索對應的文本塊。然而,如果存儲的文本塊中沒有同時包含這些關鍵詞的相關信息,系統可能會返回一些只與部分關鍵詞匹配的內容,這樣的推薦可能并不能完全滿足用戶的需求。比如,系統可能會推薦一款雖然具備高質量視頻功能,但在用戶評價方面表現平平的智能手機。
所以我們可以得出結論:GraphRAG 在應對復雜查詢、跨越多個特性進行檢索時,具有顯著優勢。
知識庫治理
隨著數據量的不斷增加,GraphRAG 能夠通過自然地新增節點與關系,將新信息無縫集成到現有的知識圖譜中,無需對已有數據進行大規模重組。其結構化和層次化的特性使得數據檢索更加高效。GraphRAG 利用先進的圖遍歷算法和層次化導航技術,能夠迅速縮小檢索范圍,提升查詢速度。
例如,一個用戶可能會從廣泛的“電子產品”開始查詢,然后逐步縮小范圍到“智能手機”,再進一步到“適合游戲的高性能智能手機”。這種層次化的檢索方式,即便在面對龐大的數據集,也能通過有效的導航快速定位到相關信息。此外,GraphRAG 還可以利用社區反饋和用戶行為數據進一步優化檢索路徑,提高命中率。但是GraphRAG對于新增的數據會重新進行社區檢測,這一步還是比較耗費資源的。
相比之下,傳統的 RAG 系統主要依賴于文本塊來存儲數據,這些數據塊往往是非結構化或半結構化的。隨著知識庫的擴展,新增的數據可能需要重新組織現有的文本塊,甚至可能導致相似內容的多版本重復存儲,存儲效率較低且管理困難。數據規模的增加還顯著影響系統的檢索性能,面對復雜或模糊的查詢時,容易受到噪音數據的干擾。
例如,當用戶查詢“高性能智能手機”和“游戲”相關的內容時,如果數據庫中存在大量類似但不相關的文本塊,系統可能會返回大量冗余結果。要過濾這些不相關的內容,傳統的 RAG 系統可能需要引入復雜的重排序算法,這不僅增加了系統的復雜性,也顯著降低了檢索效率。
概要性(QFS)查詢
GraphRAG
知識圖譜的結構化特征使其在處理數據本身的“元”問題時表現出色,例如“2023年市場上新發布了多少款搭載驍龍8Gen2芯片的手機?”。
Microsoft GraphRAG 針對非結構化文本構建了一個專門的框架,其設計的核心目標之一是能夠更好地回答基于高層語義理解的總結性問題。通過社區檢測算法,GraphRAG 可以識別并劃分知識圖譜中的多個社區,然后利用大規模語言模型(LLM)對這些社區進行總結和概括。Microsoft GraphRAG 會先通過Map-Reduce算法從多個關聯社區(例如不同年份的社區)中搜集有關“高端智能手機”的信息(Map),然后匯總這些信息以生成全面的答案(Reduce)。
"元信息"(Metadata)是關于數據的數據。在計算機科學中,元信息用于描述其他數據的屬性,包括創建日期、作者、位置和文件大小等。這樣的信息對數據的管理和處理非常有用。
"元信息問題"則是指那些需要查詢或處理元信息的問題。例如,“這張照片是誰拍的?”、“這份報告是何時編寫的?”等。在知識圖譜中,元信息可能包括實體的類型、屬性、以及它們之間的關系等,因此,“元信息問題”可能涉及到的是如何從知識圖譜中抽取或推導出有關這些元信息的問題。
傳統RAG
傳統的RAG方法可能會檢索到包含“高端智能手機”、“發展”或“最近幾年”等關鍵詞的文本片段,但難以將這些片段有機地串聯起來,形成一個連貫的趨勢敘述。結果往往是片段化的信息,難以全面回答查詢。
隱藏關系
GraphRAG其更容易通過圖譜中的隱形關系來理解上下文;而傳統RAG則更依賴在明確的文本塊中顯性的匹配關聯,在理解隱性關系時存在局限。
GraphRAG
在 GraphRAG 中,“iPhone 15 Pro” 和 “三星S24” 可能被理解為是相關的,即使在任何文本塊中沒有直接將它們進行比較。因為它們都屬于“高端智能手機”類別,并且在”手機攝影”特性上表現突出。GraphRAG 可以理解這些產品的共同特性,將它們自然地聯系起來。
因此當用戶查詢“和iphone15 pro有相同能力的手機”時,GraphRAG 可以基于這些隱性關聯提供更全面的推薦。
傳統RAG
而在傳統 RAG 中,系統只能根據文本塊中明確提到的內容進行理解。如果某個文本塊沒有同時提到 “iPhone 15 Pro” 和“三星S24”,傳統 RAG 可能無法將這兩個產品聯系起來。
應用場景
選擇使用傳統RAG還是GraphRAG主要取決于數據特征和查詢需求,這兩者構成了其適用性上的關鍵區別。一般來說,以下特征的數據更適合使用GraphRAG:
數據中包含大量相互關聯的實體和復雜的關系,并且結構較為清晰。例如:
- 社交網絡中的用戶關系:如朋友、家庭成員、同事之間的聯系。
- 企業內部的復雜關系:包括部門架構、供應鏈網絡、客戶關系等。
- 醫療數據:涵蓋疾病、癥狀、治療方法、藥品以及病例等復雜關聯。
- 法律數據:涉及法律條文、判例之間的引用關系、解釋與適用情況等。
- 產品推薦系統:涉及到產品、用戶、瀏覽內容、不同產品之間的關聯、用戶之間的關系等。
除了數據特征外,查詢需求也是選擇算法的重要考量。GraphRAG更擅長處理涉及復雜關系、語義推理和多步邏輯關聯的查詢,或者關于知識本身元數據的問題。。例如:
- 多跳關系查詢:如“某人的同事的朋友中,誰在某公司工作?”
- 語義關聯查詢:如“哪些公司提供某類產品并已獲得官方認證?”
- 知識推理查詢:如“根據患者的癥狀和病史,推斷可能的疾病并建議治療方案。”
- 時序關聯查詢:如“查詢某公司過去十年的投資和并購情況?”
對于這些復雜查詢,GraphRAG提供了更強的導航與綜合分析能力。而傳統RAG則更適合處理基于數據內容的具體事實性問題,對復雜關系的處理則較為有限。
性能成本
雖然GraphRAG在數據擴展性方面表現出色,但在實際應用中,其在索引創建和查詢處理過程中引入的復雜性和計算開銷不容忽視。特別是在索引階段,GraphRAG需要進行實體和關系的提取與識別,生成必要的描述信息,識別社區并生成摘要;而在查詢處理階段,則需檢索更多關聯的節點、關系和社區信息。這些額外的步驟對簡單查詢任務來說,尤其是那些傳統RAG也能有效處理的問題,可能顯得不太經濟。
盡管GraphRAG生成的結果更為詳盡,但其所需的時間和token數量(LLM調用)幾乎是傳統RAG的十倍。因此,使用GraphRAG時,務必權衡其性能與成本,確保在合適的場景下發揮其優勢。
GraphRAG和傳統RAG如何結合
總的來看,GraphRAG在處理復雜且高度相互聯系的數據集和需要深度關聯理解的查詢上,顯示出了強大的效能。它可以顯著提升信息查找的準確性和深入程度,尤其是在需要進行多級分析和推導的情況下。然而,這種性能提升也帶來了系統復雜度和資源使用量的增加。因此,在決定是否采用 GraphRAG 之前,必須仔細分析具體的應用場景、數據結構以及典型的查詢模式。
在以下情況下,傳統 RAG 仍然是更理想的選擇:
- 簡單且基于事實的查詢:例如,對于“iPhone 13 的發布日期是什么?”這樣的簡單問題,傳統 RAG 能夠更迅速和明確地給出答案。
- 較低的實施難度:在數據集較小或應用場景不復雜時,傳統RAG的配置與維護過程較為簡單,便于快速實施和操作。
在實際使用場景中,往往一個單一的搜索策略難以覆蓋所有需求。為了達到最優效果和準確率,我們可以考慮創建一個智能路由系統,這個系統會根據問題的類別和可獲得數據的屬性,動態地挑選出最適合的搜索策略。關鍵點在于搭建一套強大的路由系統(通常需要借助LLM來完成),這樣就能夠聰明地將查詢指向最佳的搜索路徑。
?
本文轉載自公眾號AI 博物院 作者:longyunfeigu
