微軟開(kāi)源GraphRAG:極大增強(qiáng)大模型問(wèn)答、摘要、推理
7月3日,微軟在官網(wǎng)開(kāi)源了基于圖的RAG(檢索增強(qiáng)生成)——GraphRAG。
為了增強(qiáng)大模型的搜索、問(wèn)答、摘要、推理等能力,RAG已經(jīng)成為GPT-4、Qwen-2、文心一言、訊飛星火、Gemini等國(guó)內(nèi)外知名大模型標(biāo)配功能。
傳統(tǒng)的RAG系統(tǒng)在處理外部數(shù)據(jù)源時(shí),只是簡(jiǎn)單地將文檔轉(zhuǎn)換為文本,將其分割為片段,然后嵌入到向量空間中,使得相似的語(yǔ)義對(duì)應(yīng)相近的位置。
但這種方法在處理需要全局理解的海量數(shù)據(jù)查詢(xún)時(shí)存在局限,因?yàn)樗^(guò)度依賴(lài)局部文本片段的檢索,無(wú)法捕捉到整個(gè)數(shù)據(jù)集的全貌。
所以,微軟在RAG基礎(chǔ)之上通過(guò)“Graph”圖的方式,例如,文本中的實(shí)體,人物、地點(diǎn)、概念等,構(gòu)建了超大的知識(shí)圖譜,幫助大模型更好地捕捉文本中的復(fù)雜聯(lián)系和交互,來(lái)增強(qiáng)其生成、檢索等能力。
開(kāi)源地址:https://github.com/microsoft/graphrag?tab=readme-ov-file
Graph RAG架構(gòu)簡(jiǎn)單介紹
Graph RAG的核心是通過(guò)兩階段構(gòu)建基于圖譜的文本索引:首先,從源文檔中衍生出實(shí)體知識(shí)圖譜;然后,針對(duì)所有緊密相關(guān)的實(shí)體群組預(yù)生成社區(qū)摘要。
所以,Graph RAG的第一步就是將源文檔分割成較小的文本塊,這些文本塊隨后被輸入到大模型中以提取關(guān)鍵信息。
在這個(gè)過(guò)程中,大模型不僅要識(shí)別文本中的實(shí)體,還要識(shí)別實(shí)體之間的關(guān)系,包括它們之間的相互作用和聯(lián)系,用來(lái)構(gòu)建一個(gè)龐大的實(shí)體知識(shí)圖譜,其中包含了數(shù)據(jù)集中所有重要實(shí)體和它們之間的關(guān)系。
簡(jiǎn)單來(lái)說(shuō),這個(gè)過(guò)程就像殺雞一樣,當(dāng)一整只雞(數(shù)據(jù))拿上來(lái)后,我們就要把它分解成腿、翅膀、胸肉等更細(xì)小的組成部分,同時(shí)會(huì)關(guān)注這些部位之間的關(guān)系方便后續(xù)的處理。
接著,Graph RAG使用社區(qū)檢測(cè)算法來(lái)識(shí)別圖譜中的模塊化社區(qū)。這些社區(qū)由相關(guān)的節(jié)點(diǎn)組成,它們之間的聯(lián)系比與圖中其他部分的聯(lián)系更為緊密。通過(guò)這種方式,整個(gè)圖譜被劃分為更小、更易于管理的單元,每個(gè)單元都代表了數(shù)據(jù)集中的一個(gè)特定主題或概念。
在基于圖的索引之上,Graph RAG進(jìn)一步生成社區(qū)摘要。這些摘要是對(duì)社區(qū)內(nèi)所有實(shí)體和關(guān)系的總結(jié),它們提供了對(duì)數(shù)據(jù)集中特定部分的高層次理解。
然后要求大模型對(duì)每個(gè)答案進(jìn)行打分,分?jǐn)?shù)在0—100之間,得分過(guò)低的將被過(guò)濾掉,高分則留下。將剩余的中間答案按照得分高低排序,逐步添加至新的上下文窗口中,直至詞數(shù)限制。
例如,當(dāng)用戶(hù)提問(wèn)“如何進(jìn)行有效減肥時(shí)?”,系統(tǒng)會(huì)利用與問(wèn)題相關(guān)的社區(qū)摘要來(lái)生成部分答案。這些部分答案隨后被匯總并精煉,以形成最終答案。
Graph RAG對(duì)大模型的好處
與傳統(tǒng)RAG相比,Graph RAG的全局檢索能力非常強(qiáng),所以很擅長(zhǎng)處理大規(guī)模數(shù)據(jù)集,以下是對(duì)大模型的主要幫助。
擴(kuò)展上下文理解能力:通常大模型受限于其上下文窗口的大小,這限制了它們理解和生成基于長(zhǎng)文本的能力。Graph RAG通過(guò)構(gòu)建基于圖的索引,將整個(gè)文本集合分解成更小、更易于管理的社區(qū)模塊,從而擴(kuò)展了模型的理解和生成能力。
增強(qiáng)全局查詢(xún):傳統(tǒng)的RAG方法在處理全局?jǐn)?shù)據(jù)的查詢(xún)時(shí)表現(xiàn)不佳,因?yàn)橐蕾?lài)于局部文本片段的檢索。Graph RAG通過(guò)生成社區(qū)摘要,使得模型能夠從整個(gè)數(shù)據(jù)集中提取相關(guān)信息,生成更加全面和準(zhǔn)確的答案。
提高摘要的質(zhì)量和多樣性:Graph RAG方法通過(guò)并行生成社區(qū)摘要,然后匯總這些摘要來(lái)生成最終答案,能幫助大模型從不同的角度和社區(qū)中提取信息,從而生成更豐富的摘要。
優(yōu)化算力、資源利用率:在處理大規(guī)模文本數(shù)據(jù)集時(shí),資源的有效利用至關(guān)重要。Graph RAG通過(guò)模塊化處理,減少了對(duì)算力資源的需求。與傳統(tǒng)的全文摘要方法相比,Graph RAG在生成高質(zhì)量摘要的同時(shí),顯著降低了對(duì)token的需求。
提升信息檢索和生成的協(xié)同:Graph RAG方法通過(guò)結(jié)合檢索增強(qiáng)和生成任務(wù),實(shí)現(xiàn)了兩者之間的協(xié)同工作,提高了生成內(nèi)容的準(zhǔn)確性和相關(guān)性。
增強(qiáng)了對(duì)數(shù)據(jù)集結(jié)構(gòu)的理解:通過(guò)構(gòu)建知識(shí)圖譜和社區(qū)結(jié)構(gòu),Graph RAG不僅幫助模型理解文本內(nèi)容,還能理解數(shù)據(jù)集的內(nèi)在結(jié)構(gòu)。
提高對(duì)復(fù)雜問(wèn)題的處理能力:在處理需要多步驟推理或多文檔信息整合的復(fù)雜問(wèn)題時(shí),Graph RAG能夠通過(guò)檢索和摘要不同社區(qū)的信息,提升對(duì)問(wèn)題更深層次的理解。尤其是在解讀PDF、Word等文檔時(shí)非常有用。
為了評(píng)估Graph RAG的性能,微軟在一個(gè)100萬(wàn)tokens、超復(fù)雜結(jié)構(gòu)的數(shù)據(jù)集上,包含娛樂(lè)、播客、商業(yè)、體育、技術(shù)、醫(yī)療等內(nèi)容,進(jìn)行了綜合測(cè)試。
結(jié)果顯示,全局檢索方法在全面性和多樣性測(cè)試上,超越了Naive RAG等方法。特別是,Graph RAG方法在播客轉(zhuǎn)錄和新聞文章數(shù)據(jù)集上都顯示出了超高的水準(zhǔn),多樣性也非常全面,是目前最佳的RAG方法之一。
同時(shí)Graph RAG對(duì)tokens的需求很低,也就是說(shuō)可以幫助開(kāi)發(fā)者節(jié)省大量成本。
本文轉(zhuǎn)自 AIGC開(kāi)放社區(qū) ,作者:AIGC開(kāi)放社區(qū)
