你為什么要用GraphGAG?
其實(shí)我這個(gè)問(wèn)題不算瞎問(wèn)。在你的項(xiàng)目里,你是真覺(jué)得GraphRAG有用,還是就圖個(gè)新鮮勁,這個(gè)是非常重要的思考。
RAG能干啥,其實(shí)不用復(fù)雜的解釋了。
傳統(tǒng)的方式就是基于向量余弦近似度的查找,當(dāng)然BM25其實(shí)也是傳統(tǒng)RAG(別把它當(dāng)新東西),常見一點(diǎn)的基本都有向量查找,或者向量+BM25關(guān)鍵字集成查找,為了方便我就畫向量的了。
如下圖:

通用LLM里不太存在專用領(lǐng)域的知識(shí),RAG可以作為外掛知識(shí)庫(kù)的補(bǔ)充,補(bǔ)充新的知識(shí),另外有些問(wèn)題,不一定讓你回復(fù)標(biāo)準(zhǔn)答案(你懂的)
現(xiàn)在舉幾個(gè)場(chǎng)景,比如說(shuō),你問(wèn)一句,肯德基全家桶多少錢一桶,這你問(wèn)RAG系統(tǒng)指定是沒(méi)啥問(wèn)題。

為啥沒(méi)問(wèn)題呢?
因?yàn)槟愕膯?wèn)題指向特別具體,SKU====>價(jià)格,銀貨兩訖。
那么下一個(gè)問(wèn)題來(lái)了,你所在的團(tuán)隊(duì)去年有哪些貢獻(xiàn)?
這咋答啊?太宏觀了
要硬來(lái)也不是不行,比如搜索你所在的團(tuán)隊(duì)有誰(shuí)?然后找這些人的各個(gè)lead的項(xiàng)目的chunk,最后把所有chunk one by one塞給LLM,讓LLM總結(jié),總結(jié)的出來(lái)的中間態(tài)還應(yīng)該有個(gè)外置的memory吧,比如redis存著,最后所有人的貢獻(xiàn)全出來(lái),再過(guò)一遍L(zhǎng)LM 刷總結(jié)。早上問(wèn)的,這一套下來(lái)可能都吃中午飯了(夸張的修辭手法),主要是大概率這效果肯定不好,受限于每次生成的結(jié)果優(yōu)劣,就有一個(gè)疊加效應(yīng),另外也受限于token數(shù)的限制,每人總結(jié),再疊加總結(jié)可能還好一點(diǎn),要一股腦的送進(jìn)LLM讓它亂處理,可要了親命了....
圖片
其實(shí),上一段所做的操作,嚴(yán)格來(lái)說(shuō),可以理解為就是構(gòu)建知識(shí)圖譜的一個(gè)過(guò)程,只是毫無(wú)章法而已,而且你必須要把RAG系統(tǒng)Agentic化,否則RAG是做不了這個(gè)事的。
那構(gòu)建知識(shí)圖譜這事,其實(shí)挺費(fèi)時(shí)費(fèi)力的,GraphRAG這個(gè)軟件也好,框架也好,主要干得第一件事就是用LLM來(lái)構(gòu)建知識(shí)圖譜。

- 原始文檔(Source Documents):
- 系統(tǒng)從原始文檔開始,通過(guò)文本提取和分塊(chunking)將文檔拆分成較小的文本片段。
- 文本片段(Text Chunks):
- 將這些文本片段經(jīng)過(guò)領(lǐng)域定制的摘要化處理,以提取關(guān)鍵的實(shí)體、關(guān)系和相關(guān)屬性。
- 元素實(shí)例(Element Instances):
- 在這一步,系統(tǒng)識(shí)別并提取出圖節(jié)點(diǎn)(如實(shí)體)和邊(如關(guān)系),這些信息將被進(jìn)一步處理為元素摘要。
- 元素摘要(Element Summaries):
- 系統(tǒng)為每個(gè)提取的元素(節(jié)點(diǎn)和邊)生成獨(dú)立的摘要,這些摘要提供了每個(gè)元素的獨(dú)立描述。
- 圖社區(qū)(Graph Communities):
- 通過(guò)社區(qū)檢測(cè)算法(如Leiden算法),將圖劃分為多個(gè)社區(qū),每個(gè)社區(qū)包含彼此之間關(guān)系緊密的節(jié)點(diǎn)和邊。
- 社區(qū)摘要(Community Summaries):
- 為每個(gè)社區(qū)生成一個(gè)綜合的摘要,描述該社區(qū)內(nèi)的所有元素及其關(guān)系。這些摘要在查詢時(shí)可以獨(dú)立使用。
- 社區(qū)回答(Community Answers):
- 在接到用戶查詢后,系統(tǒng)會(huì)利用這些社區(qū)摘要來(lái)生成部分回答。每個(gè)社區(qū)摘要獨(dú)立處理,并生成與查詢相關(guān)的回答。
- 全局回答(Global Answer):
- 最終,將所有部分回答匯總生成一個(gè)綜合性的全局回答,來(lái)滿足用戶的查詢需求。
索引時(shí)間 vs. 查詢時(shí)間:
- 索引時(shí)間:在這段時(shí)間內(nèi),系統(tǒng)構(gòu)建知識(shí)圖譜并生成所有相關(guān)的社區(qū)摘要。這是一個(gè)預(yù)處理步驟,使得系統(tǒng)能夠更快速地響應(yīng)未來(lái)的查詢。
- 查詢時(shí)間:當(dāng)用戶發(fā)出查詢時(shí),系統(tǒng)利用預(yù)先生成的社區(qū)摘要并并行處理,最終生成全局性的答案。這一步是針對(duì)用戶查詢的實(shí)時(shí)處理。
這里面LLM都參與了哪幾部分呢?
主要是以下4個(gè)部分
1. 元素實(shí)例提取(Element Instances Extraction):
- 對(duì)每個(gè)文本片段,使用大語(yǔ)言模型(LLM)來(lái)提取圖中的元素實(shí)例。具體來(lái)說(shuō),LLM被用來(lái)識(shí)別和提取以下內(nèi)容:
a.實(shí)體(Entities):如人、地點(diǎn)、組織等。
b.關(guān)系(Relationships):描述實(shí)體之間的連接或關(guān)聯(lián)。
c.協(xié)變量(Covariates):其他相關(guān)的描述或聲明,例如主語(yǔ)、賓語(yǔ)、關(guān)系類型等。
- 這些元素實(shí)例被表示為圖的節(jié)點(diǎn)和邊,形成一個(gè)初步的圖結(jié)構(gòu)。
2. 元素摘要生成(Element Summarization):
- 在提取了元素實(shí)例之后,LLM還負(fù)責(zé)生成這些元素的摘要。每個(gè)節(jié)點(diǎn)或邊的實(shí)例被獨(dú)立地總結(jié)為一個(gè)描述塊,這些描述塊提供了對(duì)每個(gè)圖元素的獨(dú)立理解。
3. 社區(qū)摘要生成(Community Summarization):
- 對(duì)于每個(gè)社區(qū),LLM生成一個(gè)社區(qū)摘要。這些摘要描述了社區(qū)內(nèi)部所有節(jié)點(diǎn)和邊的關(guān)系及其重要性。社區(qū)摘要可以用于后續(xù)的查詢回答生成過(guò)程。
4. 生成回答(Answer Generation):
- 在查詢時(shí)間,系統(tǒng)首先根據(jù)查詢問(wèn)題選擇相關(guān)的社區(qū)摘要。然后,LLM利用這些社區(qū)摘要生成部分回答。
- 最后,將所有部分回答整合成一個(gè)綜合性的全局回答,提供給用戶。
左邊的圖都好理解,就是構(gòu)建圖里的邊和節(jié)點(diǎn)的過(guò)程,一度,二度啥的。
右邊的是干啥的呢?就是層級(jí)回答,這是干啥的呢?
這就是今天要說(shuō)的題目的重點(diǎn),你為啥要用graphRAG
假設(shè)有一連串的問(wèn)題
1.你去年的工作結(jié)果是什么?
2.你團(tuán)隊(duì)的工作貢獻(xiàn)有啥?
3.你們大部門的貢獻(xiàn)?
4.整個(gè)公司的產(chǎn)品GTM的狀態(tài)?
這靈魂四問(wèn),用傳統(tǒng)的RAG基本是不太現(xiàn)實(shí)的,但是借助Graph RAG的圖譜能力和層級(jí)化能力則可以提前生成了關(guān)于 2,3,4問(wèn)題的答案和關(guān)聯(lián)性(Summarization)
GraphRAG主要的能力就是干這事的
所以我們總結(jié)一下:
應(yīng)用場(chǎng)景:
- 傳統(tǒng)RAG:適用于需要從大規(guī)模文檔庫(kù)中檢索并生成內(nèi)容的應(yīng)用,如問(wèn)答系統(tǒng)、摘要生成等。
- Graph RAG:由于其對(duì)復(fù)雜關(guān)系的建模能力,更適用于需要理解和生成復(fù)雜知識(shí)結(jié)構(gòu)的應(yīng)用,如知識(shí)圖譜問(wèn)答、關(guān)系推理等。
而你的應(yīng)用如果不太涉及下面的業(yè)務(wù),我勸你別用GraphRAG
原因有這么幾點(diǎn):
- 錢,我前文中說(shuō)的要LLM參與的幾個(gè)點(diǎn),那沒(méi)一個(gè)是省token的,而且是預(yù)加載過(guò)程,也就是說(shuō)只要你想玩GraphRAG,那這錢是省不了的,基于VectorDB和BM25的都沒(méi)不需要這個(gè)。
- 新的數(shù)據(jù)加入,圖這玩意兒不同于向量數(shù)據(jù)庫(kù),你愿意新增幾條,大可新增幾條,只要performance夠就行,你每次加新數(shù)據(jù),如果和多條邊或者節(jié)點(diǎn)相關(guān),就會(huì)大規(guī)模重構(gòu)圖的結(jié)構(gòu),又是新折騰輪回的開始。
- 圖譜構(gòu)建的問(wèn)題,這個(gè)嚴(yán)格說(shuō)不是GraphRAG的問(wèn)題,是圖系統(tǒng)本身的問(wèn)題,一個(gè)良好的知識(shí)圖譜構(gòu)建不太可能靠LLM就全程搞定,所以你圖譜構(gòu)建的魯棒性和健壯性,對(duì)LLM要求極高。這東西出很久了,相信你們測(cè)過(guò)的也知道,效果是不錯(cuò),因?yàn)槟銈兤匠?wèn)的問(wèn)題,往往標(biāo)準(zhǔn)rag cover不住,但是它也僅僅是占這塊的便宜而已。其它的針對(duì)性問(wèn)答,關(guān)于具體問(wèn)題,它不會(huì)比傳統(tǒng)rag有什么特別大的優(yōu)勢(shì)。
最后一點(diǎn),傳統(tǒng)rag不能回答靈魂四問(wèn)嗎?
1.你去年的工作結(jié)果是什么?
2.你團(tuán)隊(duì)的工作貢獻(xiàn)有啥?
3.你們大部門的貢獻(xiàn)?
4.整個(gè)公司的產(chǎn)品GTM的狀態(tài)?
答案是當(dāng)然可以,你提前有這個(gè)問(wèn)題不就完了嗎?咋么有呢?讓LLM生成唄。
有兄弟會(huì)說(shuō),你說(shuō)這不本末倒置嗎?哪有先有答案后有問(wèn)題的?
本文轉(zhuǎn)載自微信公眾號(hào)「??熵減AI???」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系??熵減AI???公眾號(hào)。??微博:Transformer-周
純研究O1的論文都發(fā)出來(lái)了,讓我想起來(lái)研究紅樓夢(mèng)的紅學(xué)-AI.x社區(qū)
本文轉(zhuǎn)載自 ??熵減AI??,作者: 周博洋

















