1.背景
最近有一個很火的開源項目LightRAG,Github6.4K+星※,北郵和港大聯(lián)合出品,是一款微軟GraphRAG的優(yōu)秀替代者,因此本qiang~得了空閑,讀讀論文、跑跑源碼,遂有了這篇文章。
2.?LightRAG框架
2.1已有RAG系統(tǒng)的局限性
1) 許多系統(tǒng)僅依賴于平面數(shù)據(jù)表示(如純文本),限制了根據(jù)文本中實體間復(fù)雜的關(guān)系來理解和檢索信息的能力。
2) 許多系統(tǒng)缺乏各種實體及其關(guān)系之間保持一致所需的上下文意識,導(dǎo)致可能無法完全解決用戶的問題。
2.2 LightRAG的優(yōu)勢
1) 引入圖結(jié)構(gòu):將圖結(jié)構(gòu)引入文本索引及相關(guān)信息檢索的環(huán)節(jié)中,圖結(jié)構(gòu)可以有效表示實體及其關(guān)系,有利于上下文的連貫性與豐富性。
2) 綜合信息檢索: 從所有文檔中提取相互依賴的實體的完整上下文,以確保信息檢索的綜合性。相對于傳統(tǒng)的RAG,可能只關(guān)注于Chunk后的局部文本,缺乏全局綜合信息。
3) 增強檢索效率: 提高基于圖結(jié)構(gòu)的知識檢索效率,以顯著減少響應(yīng)時間。
4) 新數(shù)據(jù)的快速適配: 能夠快速適應(yīng)新的數(shù)據(jù)更新,確保系統(tǒng)在動態(tài)環(huán)境中保持相關(guān)性。
5) 減少檢索開銷: 相對于GraphRAG以社區(qū)遍歷的方法,LightRAG專注于實體和關(guān)系的檢索,進而減少開銷。
2.3 LightRAG的框架

LightRAG將基于圖結(jié)構(gòu)的文本索引(graph-based text indexing)無縫地集成到一個雙層檢索框架(dual-level retrieval framework)中,因此能夠提取實體間復(fù)雜的內(nèi)部關(guān)系,提高響應(yīng)的豐富性和連貫性。
雙層檢索策略包括低級檢索和高級檢索,其中低級檢索重點關(guān)注特定實體及其關(guān)系的準(zhǔn)確信息,高級檢索則包含了廣泛的主題信息。
此外,通過將圖結(jié)構(gòu)與向量表征相結(jié)合,LightRAG促進了相關(guān)實體和關(guān)系的有效檢索,同時基于結(jié)構(gòu)化的知識圖譜中相關(guān)的信息,增強了結(jié)果的全面性。
LightRAG無需重復(fù)構(gòu)建整個索引,降低了計算成本且加速了適配,而且其增量更新算法保障了新數(shù)據(jù)的及時整合。
2.3.1 基于圖的文本索引
1) 實體及關(guān)系抽取:LightRAG先將大文本切分為小文本,然后利用LLM識別并抽取小文本中各種實體及其關(guān)系,此舉可便于創(chuàng)建綜合的知識圖譜,prompt示例如下:

2) 使用LLM性能分析功能生成鍵值對:使用LLM提供的性能分析函數(shù),為每個實體及每條關(guān)系生成一個文本鍵值對(K, V),其中K是一個單詞或短語,便于高效檢索,V是一個文本段落,用于文本片段的總結(jié)
3) 去重以優(yōu)化圖操作:通過去重函數(shù)識別并合并來自不同段落的相同實體和關(guān)系。有效地減少了與圖操作相關(guān)的開銷,通過最小化圖的大小,從而實現(xiàn)更高效的數(shù)據(jù)處理。
2.3.2 雙層檢索機制
1) 在細節(jié)層和抽象層分別生成查詢鍵:具體查詢以細節(jié)為導(dǎo)向,許精確檢索特點節(jié)點或邊相關(guān)信息;抽象查詢更加概念化,涵蓋更廣泛的主題、摘要,其并非與特定實體關(guān)聯(lián)。
2) 雙層檢索機制:低級檢索聚焦于檢索特定實體及其屬性或關(guān)系信息,旨在檢索圖譜中指定節(jié)點或邊的精確信息;高級檢索處理更廣泛的主題,聚合多個相關(guān)實體和關(guān)系的信息,為高級的概念及摘要提供洞察力。
3) 集成圖以及向量以便高效檢索:通過圖結(jié)構(gòu)和向量表示,使得檢索算法有效地利用局部和全局關(guān)鍵詞,簡化搜索過程并提高結(jié)果的關(guān)聯(lián)性。具體分為如下步驟:
a. 查詢關(guān)鍵詞提取:針對給定的問題,LightRAG的檢索算法首先分別提取局部查詢關(guān)鍵詞和全部查詢關(guān)鍵詞
關(guān)鍵詞提取的prompt如下:

b. 關(guān)鍵詞匹配:檢索算法使用向量數(shù)據(jù)庫來匹配局部查詢關(guān)鍵詞與候選實體,以及全局查詢關(guān)鍵詞與候選關(guān)系(與全局關(guān)鍵詞關(guān)聯(lián))
c. 增強高階關(guān)聯(lián)性: LightRAG進一步收集已檢索到的實體或關(guān)系的局部子圖,如實體或關(guān)系的一跳鄰近節(jié)點
2.3.3 檢索增強回答生成
1) 使用已檢索信息: 利用已檢索的信息,包括實體名、實體描述、關(guān)系描述以及原文片段,LightRAG使用通用的LLM來生成回答。
2) 上下文集成及回答生成: 將查詢串與上下文進行整合,調(diào)用LLM生成答案。
2.3.4 整體過程示例

3.?實驗
3.1 數(shù)據(jù)源
從UltraDomain基準(zhǔn)中選取了4個數(shù)據(jù)集,分別包括農(nóng)業(yè)、計算機科學(xué)、法律、混合集,每個數(shù)據(jù)集包含60W-500W個token。

3.2 問題生成
為了評估LightRAG的性能,首先通過LLM生成5個RAG用戶,且為每個用戶生成5個任務(wù)。每個用戶均具有描述信息,詳細說明了他們的專業(yè)知識和特征,以引發(fā)他們提出相關(guān)問題。每個用戶任務(wù)也具有描述信息,強調(diào)其中一個用戶在于RAG交互時的潛在意圖。針對每個用戶任務(wù)的組合,LLM生成5個需要理解整個數(shù)據(jù)集的問題。因此,每個數(shù)據(jù)集共產(chǎn)生125個問題。
問題生成的prompt如下:

3.3 基線模型
選取的4個基線模型包括Naive RAG, RQ-RAG, HyDE, GraphRAG。
3.4評價維度及細節(jié)
實驗中,向量檢索采用nano 向量庫,LLM選擇GPT-4o-mini,每個數(shù)據(jù)集的分塊大小為1200,此外收集參數(shù)(gleaning parameter,目的在于僅通過1輪LLM無法完全提取對應(yīng)的實體或關(guān)系,因此該參數(shù)旨在增加多次調(diào)用LLM)設(shè)置為1。
評價標(biāo)準(zhǔn)采用基于LLM的多維度比較方法,使用GPT-4o-mini針對LightRAG與每個基線的響應(yīng)進行排名。主要包含如下4個維度:全面性(回答多大程度解決了問題的所有方面和細節(jié))、多樣性(與問題相關(guān)的不同觀點,答案的多樣性和豐富性如何)、接受度(答案是否有效使讀者理解主題并做出明確判斷)、整體評價(評估前三個標(biāo)準(zhǔn)的累積評價)。
評價prompt如下:

3.5 實驗結(jié)果
3.5.1 與基線RAG方法比較

3.5.2 雙層檢索及基于圖結(jié)構(gòu)的索引增強消融結(jié)果

3.5.3 具體示例研究

3.5.4 與GraphRAG的成本比較

4.?整體工作流
圖片建議放大,看的更清楚~

LightGraph的源碼可讀性非常強,建議看官們可以基于上面這張流程圖,逐步調(diào)試LightGraph,以了解其檢索和生成兩個模塊的具體細節(jié)。
如果源碼層面有問題的話,可以私信或評論進一步交流~
5.總結(jié)
一句話足矣~
本文針對開源的LightRAG論文研讀以及原理分析,包括核心模塊、框架的整體工作流程等內(nèi)容。
如果想免費獲取使用GPT-4o-mini的api接口,以及對原理或源碼不清楚的看官,可私信或評論溝通。
6.參考
1) LightGraph論文地址: https://arxiv.org/pdf/2410.05779v1
2) LightGraph源碼地址:https://github.com/HKUDS/LightRAG