一文徹底搞懂GraphRAG
自ChatGPT引領(lǐng)人工智能的新潮流以來,我們見證了大型語言模型(LLM)與私有數(shù)據(jù)結(jié)合的巨大潛力。這種結(jié)合不僅催生了功能強(qiáng)大的AI應(yīng)用,也標(biāo)志著AI專業(yè)能力的提升。
然而,隨著深入探究,我們發(fā)現(xiàn)傳統(tǒng)的文本嵌入檢索技術(shù)(Text2Vec RAG)在處理知識庫問答時仍存在局限。本文闡述如何通過圖形RAG技術(shù),有效填補(bǔ)這一空白,實(shí)現(xiàn)對知識庫的深入挖掘和全面理解。
1 局部和全局問題
文本嵌入檢索技術(shù)讓LLM應(yīng)用能夠穩(wěn)定地根據(jù)知識庫內(nèi)容回答問題。Text2Vec的優(yōu)勢在于能夠從知識庫中提取關(guān)鍵事實(shí),直接回答用戶的問題。但這種方法也有局限,它依賴于查詢的具體性,且難以處理跨文檔的抽象問題。
想象一下,有一個詳盡的諾貝爾和平獎得主知識庫。問系統(tǒng)“2023年的諾貝爾和平獎得主是誰?”這種問題,系統(tǒng)能迅速給出答案,因為這些信息在知識庫中清晰可查。但若問“過去十年最杰出的諾貝爾和平獎得主有哪些?”系統(tǒng)就可能束手無策,尤其是當(dāng)問題需要跨文檔整合信息時。例如,用戶可能好奇“最近幾屆諾貝爾和平獎得主主要關(guān)注哪些議題?”如果這些議題在知識庫中沒有直接提及,傳統(tǒng)的文本嵌入檢索就難以給出滿意的答案。
因此,引入圖形RAG,這不僅能夠解決具體的局部問題,還能應(yīng)對需要全局視角的復(fù)雜問題。
知識圖譜通過半結(jié)構(gòu)化的層次方法組織信息,允許我們在數(shù)據(jù)集的全局層面上進(jìn)行推理,識別節(jié)點(diǎn)間的復(fù)雜關(guān)系。圖形RAG利用這種結(jié)構(gòu),通過識別緊密相連的節(jié)點(diǎn)群體——即社區(qū),來構(gòu)建對用戶查詢的深入理解。
圖形RAG的流程簡化為:
- 圖形提取:從數(shù)據(jù)中抓取節(jié)點(diǎn)和邊,形成知識圖譜。
- 圖形存儲:將圖譜存儲于數(shù)據(jù)庫,保證信息的管理和檢索。
- 社區(qū)檢測:發(fā)現(xiàn)圖中的社區(qū),每個社區(qū)代表一個主題。
- 社區(qū)報告:為每個社區(qū)制作報告,梳理節(jié)點(diǎn)和邊的關(guān)系。
- 上下文構(gòu)建:通過Map Reduce技術(shù)整合社區(qū)信息,為用戶查詢提供精準(zhǔn)上下文。
這一流程優(yōu)化了信息檢索,對用戶復(fù)雜查詢的響應(yīng)更加精準(zhǔn)和全面。
2 構(gòu)建知識圖譜:圖形提取
構(gòu)建對非結(jié)構(gòu)化知識庫的抽象理解,首先需要提取構(gòu)建知識圖譜的關(guān)鍵節(jié)點(diǎn)和邊,這一過程可以通過大型語言模型(LLM)自動化實(shí)現(xiàn)。挑戰(zhàn)在于甄別哪些概念和關(guān)系是有價值的。
例如,從一篇關(guān)于沃倫·巴菲特的文章中提取信息,他的持股和出生地等信息顯然是關(guān)鍵實(shí)體和邊,而他上次董事會會議上領(lǐng)帶的顏色則可能無關(guān)緊要。關(guān)鍵在于根據(jù)應(yīng)用場景和領(lǐng)域定制提取提示,這將直接影響從數(shù)據(jù)中提取的信息類型。
設(shè)定提取提示可以通過兩種方式:一是多輪提示,即提供一系列輸入輸出樣例讓LLM學(xué)習(xí);二是LLM微調(diào),即在特定數(shù)據(jù)集上訓(xùn)練模型以提高性能。雖然微調(diào)可能更有效,但也更耗費(fèi)時間。
3 圖譜數(shù)據(jù)的存儲與管理
已經(jīng)成功設(shè)置LLM的提取流程。面對存儲問題,雖然Neo4j和Arango DB是圖形數(shù)據(jù)庫的首選,但學(xué)習(xí)新的查詢語言可能耗時。
為了簡化,可以使用graph2nosql,這是一個Python接口,支持在NoSQL數(shù)據(jù)庫中存儲圖形數(shù)據(jù),并支持基本的圖形操作,如節(jié)點(diǎn)管理、圖形可視化和社區(qū)檢測。這樣,可以避免復(fù)雜的數(shù)據(jù)庫技術(shù)棧,同時保持?jǐn)?shù)據(jù)的靈活性和易用性。
graph2nosql 數(shù)據(jù)模型
4 社區(qū)檢測
完成圖形數(shù)據(jù)的提取與存儲后,緊接著的任務(wù)便是識別圖中的社區(qū)結(jié)構(gòu)。社區(qū)由緊密相連的節(jié)點(diǎn)群組成,其內(nèi)部聯(lián)系遠(yuǎn)比與圖外節(jié)點(diǎn)更為頻繁。這一識別過程可以通過多種社區(qū)檢測算法實(shí)現(xiàn)。
Louvain算法是其中一種廣泛應(yīng)用的方法,它通過不斷迭代合并節(jié)點(diǎn),形成社區(qū),直至達(dá)到優(yōu)化的模塊度標(biāo)準(zhǔn)——模塊度是評價社區(qū)劃分優(yōu)劣的一個重要指標(biāo)。
除此之外,還有幾種知名的社區(qū)檢測算法,包括:
- Girvan-Newman算法
- Fast Unfolding算法
- Infomap算法
這些算法各有優(yōu)勢,適用于不同的場景和需求。
5 社區(qū)報告生成
社區(qū)報告基于已識別的社區(qū),提煉出節(jié)點(diǎn)和邊的關(guān)鍵信息,幫助我們把握知識庫的核心主題。每個社區(qū)都代表一個主題,為解答相關(guān)問題提供具體上下文。社區(qū)報告是跨文檔信息整合的起點(diǎn),有助于構(gòu)建對知識庫的整體理解。
例如,諾貝爾和平獎得主的社區(qū)報告可能會突出顯示與獲獎?wù)呦嚓P(guān)的主要議題。而"發(fā)現(xiàn)"功能則進(jìn)一步深化了這些報告,提供了更細(xì)致的洞察。
為了確保社區(qū)報告的相關(guān)性和準(zhǔn)確性,應(yīng)根據(jù)具體應(yīng)用場景進(jìn)行細(xì)致的提示設(shè)計或模型微調(diào)。
6 上下文構(gòu)建:Map Reduce的應(yīng)用
在處理查詢時,采用map-reduce模式來構(gòu)建從中間到最終的響應(yīng)。
Map階段:這里,我們將每個社區(qū)與用戶查詢配對,利用社區(qū)報告來生成對查詢的初步答案。同時,還會讓LLM評估社區(qū)報告對用戶查詢的相關(guān)性。
Reduce階段:隨后,根據(jù)生成的中間響應(yīng)的相關(guān)性得分進(jìn)行排序,篩選出最相關(guān)的前k個社區(qū)。這些社區(qū)的報告,連同節(jié)點(diǎn)和邊的信息,將作為最終LLM提示的上下文,確保答案的準(zhǔn)確性和深度。
7 結(jié)語
Text2vec RAG在知識庫問答方面存在局限,而圖形RAG則能巧妙地補(bǔ)上這一短板。它通過社區(qū)報告為知識庫提供了更深層次的理解,幫助團(tuán)隊快速定位關(guān)鍵信息,提升效率。然而,這種方法在調(diào)用LLM時成本較高,可能帶來延遲。
未來,RAG系統(tǒng)可能會采用混合策略,根據(jù)查詢類型選擇最合適的工具,如利用社區(qū)報告作為上下文候選。這一領(lǐng)域的探索仍在進(jìn)行中。
本文轉(zhuǎn)載自 ??AI科技論談??,作者: AI科技論談
