GraphRAG 的索引速度慢,LightRAG 的查詢延遲高?
這些影響效率的難題,現(xiàn)在終于迎來改進(jìn)——
由華東師范大學(xué)李翔老師帶領(lǐng)的的 Planing Lab 團(tuán)隊(duì)推出高效解決方法E GraphRAG。
并且值得關(guān)注的是,該方法在構(gòu)建索引時(shí)間上是 GraphRAG 的1/10,在查詢時(shí)間上是 LightRAG 的1/100。
現(xiàn)有的 RAG 方法中,大部分都是依賴于文本知識(shí)庫(kù),通過向量檢索的方式,從中檢索到與問題相關(guān)的一些文檔片段作為補(bǔ)充知識(shí)。
這種方法難以實(shí)現(xiàn)對(duì)整個(gè)文檔知識(shí)庫(kù)的全局理解,比如通過普通 RAG 的方法,模型仍然無法回答 " 這篇小說的主旨是什么 " 這類問題。
為了解決對(duì)知識(shí)庫(kù)的全局理解問題,RAPTOR 提出了先對(duì)文檔塊進(jìn)行聚類,然后遞歸構(gòu)建文檔總結(jié)樹,然后在這個(gè)文檔總結(jié)樹上進(jìn)行向量查詢的方法,來引入不同粒度的信息;
GraphRAG 則利用了大模型強(qiáng)大的信息抽取能力,由大模型從逐個(gè)文檔塊中抽取出三元組,然后構(gòu)成一張圖,之后再通過圖分割算法分割成多個(gè)社區(qū),再由大模型對(duì)社區(qū)進(jìn)行總結(jié),從而得到了不同粒度的信息。
然而,GraphRAG 在圖構(gòu)建以及查詢的過程中需要調(diào)用太多次大模型,導(dǎo)致其開銷過重,難以實(shí)用。
為了解決這一問題,LightRAG 讓大模型一次性抽取出所有粒度的三元組,從而減少了總結(jié)不同社區(qū)帶來的大模型調(diào)用開銷;
FastGraphRAG 則是在查詢的過程中利用了 PageRank 算法來聚合全局信息,從而避免了查詢時(shí)的大模型開銷。
但是這些方法仍然面臨一些問題:
每一個(gè)文檔塊需要調(diào)用一次大模型,帶來的開銷仍然相對(duì)較高;
嚴(yán)重依賴于大模型自身的能力,當(dāng)模型參數(shù)量較小或者不支持 Json 格式輸出的時(shí)候,這些方法難以實(shí)現(xiàn);
需要手動(dòng)設(shè)置查詢模式,限制了其面對(duì)不同類型問題時(shí)的靈活性。
因此,本文中提出通過使用SpaCy來進(jìn)行文檔中的實(shí)體識(shí)別,利用實(shí)體之間的句中共現(xiàn)關(guān)系構(gòu)成一張圖,然后利用大模型對(duì)文檔塊按順序遞歸總結(jié),將其構(gòu)建成不同粒度的文檔總結(jié)樹,之后結(jié)合利用圖和樹來進(jìn)行查詢,實(shí)現(xiàn)高效率、高性能。
方法構(gòu)建階段
利用 LLM 遞歸總結(jié)文檔樹:將文檔塊按照順序排列,每 g 個(gè)文檔塊一組,交給大模型來進(jìn)行內(nèi)容總結(jié),由于文檔塊是連續(xù)的,這里的相鄰文檔塊之間的重疊可以合并,節(jié)約 token 消耗;
然后對(duì)于大模型生成的總結(jié),繼續(xù)每 g 個(gè)一組,進(jìn)一步總結(jié),構(gòu)成一個(gè)文檔樹。
通過這種方式,團(tuán)隊(duì)得到了不同層次、不同粒度的信息,越接近根節(jié)點(diǎn),信息越全局;
越接近葉子節(jié)點(diǎn),信息越具體。
利用 SpaCy 抽取實(shí)體圖:對(duì)于每一個(gè)文檔塊,團(tuán)隊(duì)利用 SpaCy 抽取其中的實(shí)體以及名詞(他們可能是潛在的實(shí)體的代稱),然后在同一句子內(nèi)出現(xiàn)的實(shí)體以及名詞之間構(gòu)建連邊,體現(xiàn)二者之間存在一定關(guān)系。
然后將所有的文檔塊對(duì)應(yīng)的子圖合并到一起,構(gòu)成一個(gè)針對(duì)整個(gè)文檔中的實(shí)體關(guān)系的實(shí)體圖。
同時(shí),團(tuán)隊(duì)構(gòu)建兩個(gè) index,來描繪文檔和實(shí)體之間的關(guān)系,即文檔塊中抽取出哪些實(shí)體,一個(gè)實(shí)體能從哪些文檔塊中抽取出來。
通過這兩個(gè)任務(wù),團(tuán)隊(duì)得到了上圖中的四種數(shù)據(jù)結(jié)構(gòu)以及兩個(gè)索引,即總結(jié)節(jié)點(diǎn)、文檔節(jié)點(diǎn)、實(shí)體、邊;以及實(shí)體到文檔塊的一對(duì)多索引,文檔塊到實(shí)體的一對(duì)多索引。
檢索階段
同時(shí)團(tuán)隊(duì)提供了偽代碼,其中標(biāo)的是全局檢索的部分。
假設(shè)要檢索最多 k 個(gè)文檔塊,具體步驟如下:
利用 SpaCy 從問題中抽取出來實(shí)體,然后將這些實(shí)體兩兩組合(無序),假設(shè)有 n 個(gè)實(shí)體,團(tuán)隊(duì)會(huì)得到 * 個(gè)候選實(shí)體對(duì)(即圖中 Entity Extraction 步驟)。
如果步驟 1 中不存在實(shí)體,那么認(rèn)為這是一個(gè)全局的問題,同時(shí)無法利用實(shí)體信息來輔助檢索,直接通過向量檢索的方式,從文檔樹上檢索到相關(guān)的文檔塊。
候選實(shí)體對(duì)中肯定存在噪聲,因此拿它到團(tuán)隊(duì)構(gòu)建好的圖中去過濾,即兩個(gè)實(shí)體如果在圖中的距離超過 h 跳,那么就認(rèn)為他們是無關(guān)的,將其排除(即圖中 Graph Filtering 步驟)。
根據(jù)上一步剩余的實(shí)體對(duì)數(shù)量,團(tuán)隊(duì)如果有剩余的實(shí)體,進(jìn)行 5 的 local 檢索,如果沒有,則執(zhí)行步驟 6 的全局檢索:
如果有剩余的實(shí)體對(duì),團(tuán)隊(duì)利用實(shí)體到文檔塊的索引將每個(gè)實(shí)體對(duì)中的兩個(gè)實(shí)體映射到各自對(duì)應(yīng)的文檔塊上,然后對(duì)這兩個(gè)文檔塊集合取交集,即得到了和這兩個(gè)實(shí)體均相關(guān)的文檔塊(即圖中的 Index Mapping 步驟)。
如果沒有剩余的實(shí)體對(duì),那么也就意味實(shí)體并非緊密相關(guān),那么這也更可能是一個(gè)全局查詢,因此團(tuán)隊(duì)首先通過向量檢索檢索到樹上的 top- 2k 個(gè)相關(guān)的文檔塊作為候選;
然后由于問題中也有實(shí)體,因此實(shí)體可以輔助進(jìn)行查詢,即計(jì)算每一個(gè)候選文檔塊中實(shí)體的出現(xiàn)次數(shù)作為權(quán)重,如果這個(gè)候選文檔塊是總結(jié)塊,那么其對(duì)應(yīng)的權(quán)重即為其子節(jié)點(diǎn)的權(quán)重之和,向下一直遞歸。
這樣的設(shè)計(jì)自然會(huì)給總結(jié)塊更高的權(quán)重,自然符合了這是一個(gè)全局查詢的假設(shè)(即圖中的 Occurrence Ranking 步驟)。
如果步驟 5 返回了超過 k 個(gè)文檔, 那說明團(tuán)隊(duì)的約束太松,因此團(tuán)隊(duì)令 h =h-1,然后重新執(zhí)行步驟 5,循環(huán)至只剩下不超過 k 個(gè)文檔。
如果步驟 7 返回了 0 個(gè)文檔,那么取縮緊約束之前的一個(gè)查詢結(jié)果,從其中進(jìn)行篩選,具體篩選指標(biāo)為:
看這個(gè)文檔包含了多少個(gè)不同的問題相關(guān)的實(shí)體;
看這個(gè)文檔中問題相關(guān)的實(shí)體出現(xiàn)了多少次。
團(tuán)隊(duì)首先比較指標(biāo) 1,當(dāng)指標(biāo) 1 打平時(shí),比較指標(biāo) 2,取最高的 k 個(gè)文檔作為結(jié)果。
最后團(tuán)隊(duì)將其整理為實(shí)體 1,實(shí)體 2:文檔內(nèi)容的形式,輸入給模型。
實(shí)驗(yàn)結(jié)果
團(tuán)隊(duì)發(fā)現(xiàn),該方法達(dá)到了最短的索引構(gòu)建時(shí)間,同時(shí)沒有帶來查詢的延遲。
在性能上,在大部分實(shí)驗(yàn)設(shè)置下超過或者接近了最優(yōu)的 GraphRAG 方法,實(shí)現(xiàn)了效率與性能的均衡。
值得關(guān)注的是,該方法在構(gòu)建索引時(shí)間上是 GraphRAG 的 1/10,在查詢時(shí)間上是 LightRAG 的 1/100。
團(tuán)隊(duì)發(fā)現(xiàn)該方法構(gòu)建索引時(shí)間隨著文檔 token 數(shù)量以最低的斜率線性增長(zhǎng),體現(xiàn)該方法可以擴(kuò)展到更大的文檔上。
針對(duì)團(tuán)隊(duì)整體方法必要性的消融:只用向量檢索,確保團(tuán)隊(duì)的 local-global 檢索系統(tǒng)是有效的;
針對(duì) local 檢索的消融:分別以及同時(shí)消去 Graph Filter 以及 Entity-aware Ranking,確保團(tuán)隊(duì)的 local 檢索的部件是有效的;
針對(duì) global 檢索的消融:分別以及同時(shí)消去 Dense Retrieval 以及 Occurrence Ranking,發(fā)現(xiàn)在 NovelQA 上出現(xiàn)了一個(gè)異常的升高,可能是由于模型的幻覺導(dǎo)致的。
通過結(jié)合樹與圖,該團(tuán)隊(duì)達(dá)成了 GraphRAG 效率與效果的平衡,在該方法中,圖主要用于信息點(diǎn)的關(guān)系發(fā)現(xiàn)以及過濾噪聲,而樹則主要用于提供具體不同粒度的信息內(nèi)容,二者各有所長(zhǎng),相互依賴。
論文地址:https://arxiv.org/abs/2505.24226
代碼倉(cāng)庫(kù):https://github.com/YiboZhao624/E-2GraphRAG
一鍵三連「點(diǎn)贊」「轉(zhuǎn)發(fā)」「小心心」
歡迎在評(píng)論區(qū)留下你的想法!
— 完 —
點(diǎn)亮星標(biāo)
科技前沿進(jìn)展每日見