[AI 分享] Graph RAG讓知識庫更聰明
摘要 : 傳統RAG常把零散投訴直接拼貼成答案,難以做推理與總結;結合知識圖譜的Graph RAG可提升分析與結論品質。
內容:
當公司上線一套RAG知識庫後,大家通常會期待它能像聰明的分析助手一樣,從大量資料中整理出真正有價值的結論。但實際上,若直接拿所有客戶投訴去問「三個最根本的系統性問題是什麼」,傳統RAG很可能只會把客戶A、客戶B、客戶C各自說了什麼逐條列出,最後再補一句「總結完了」。這種結果本質上更像是複製貼上,停留在現象整理,還無法上升到系統性問題的歸納。
這也正是傳統RAG常見的短板:它擅長把相關片段找出來,卻不一定能真正理解片段之間的關聯,更不一定能完成深層推理與總結。因此,當問題從「某個人叫什麼名字」這類簡單查詢,升級成「產品與競品相比有何優劣」或「從投訴中總結根本原因」這類複雜分析時,效果往往就不理想。
傳統RAG的核心流程大致分成三個階段。第一是索引階段,也就是先把原始文件切成較小的文本塊,再透過embedding模型把文本轉成向量,最後存入向量資料庫。第二是檢索階段,當使用者提出問題時,系統會把問題也轉成向量,並在向量資料庫中尋找語義最相近的幾段內容,通常取Top K個文本塊作為參考資料。第三是生成階段,把問題與檢索出的片段一併交給大語言模型,讓模型根據這些上下文產生答案。
這種方法的優勢很明顯:它能有效補足大語言模型知識更新不即時的問題,也能降低模型憑空猜測、一本正經胡說八道的情況。不過,這個前提通常是問題本身相對直接、答案可以從少數片段中取得。若問題需要跨文件、跨段落整合資訊,甚至進一步推理與歸納,傳統RAG就會遭遇明顯限制。
其中第一個限制是多跳推理困難。很多複雜問題的答案並不直接存在於某一段文件裡,而是必須綜合多個片段後才能得出。例如某段歷史為何引發重大事件,或某產品為何持續收到某類抱怨,這些都需要模型跨多個資訊點建立邏輯鏈。傳統RAG通常只能抓到局部相似內容,卻難以把分散資訊串成完整推理脈絡。
第二個限制是關係資訊缺失。因為文本被切成獨立片段後,片段中的人物、事件、概念彼此之間的隱含關係,往往就被打散了。換句話說,系統知道某些內容出現過,卻不一定知道它們之間到底是什麼關係,因此難以形成更高層次的理解。
第三個限制是上下文冗長、重點被稀釋。檢索出來的文本塊通常不只包含關鍵資訊,也夾帶大量與問題無直接關聯的內容。這不僅浪費模型的Token資源,也可能讓模型在過長的上下文中忽略真正重要的訊息,出現所謂「大海撈針」效應,最終使答案不夠準確。
為了解決這些問題,引入知識圖譜就成了提升RAG智慧程度的重要方法。知識圖譜的價值,在於它能把原本非結構化的文本,轉化成結構化的知識表示,例如以「實體—關係—實體」這類三元組來描述知識之間的關聯。透過這種方式,原本只是散落在各段文字中的資訊,可以被整理成一張能清楚表達關係的知識網路。
也因此,結合知識圖譜的Graph RAG,不只是把資料找出來而已,而是更進一步幫助系統理解知識之間的連結,提升推理、歸納與總結能力。對於像「從所有客戶投訴中找出三個最根本的系統性問題」這類高階分析任務,這種方法比傳統RAG更有機會產出真正可用、可向老闆交代的結論,而不是只停留在表層現象的堆疊。