GraphRAG 原理詳解

image.png

1 索引

GraphRAG的索引過(guò)程可以分為以下幾個(gè)關(guān)鍵步驟:

  1. 從源文檔到文本塊
    • 將源文檔的文本分割成較小的文本塊,以便后續(xù)處理方椎。文本塊的大小會(huì)影響實(shí)體提取的召回率鳞仙,較小的塊通常能提取更多的實(shí)體。但是冤狡,如果塊太小也會(huì)帶來(lái)一些新的問(wèn)題,例如:較小的文本塊可能無(wú)法提供足夠的上下文信息,導(dǎo)致LLM難以準(zhǔn)確理解實(shí)體之間的關(guān)系泵喘;較小的文本塊也需要更多的LLM調(diào)用,這可能會(huì)導(dǎo)致整體處理效率下降般妙。
  2. 從文本塊到元素實(shí)例
    • 使用LLM(大語(yǔ)言模型)從每個(gè)文本塊中提取實(shí)體和關(guān)系纪铺。實(shí)體包括名稱、類型和描述碟渺,關(guān)系則描述實(shí)體之間的關(guān)聯(lián)鲜锚。(元素是指實(shí)體、關(guān)系以及Claim)
    • 通過(guò)多輪提取苫拍,確保盡可能多的實(shí)體和關(guān)系被提取出來(lái)芜繁。
    • 提取Claim(可選): 在提取實(shí)體和關(guān)系之后,可以使用另一個(gè)LLM提示(prompt)來(lái)提取與實(shí)體相關(guān)的Claim绒极。Claim是與實(shí)體相關(guān)的陳述或主張骏令,通常描述了某個(gè)實(shí)體在文本中的特定行為、觀點(diǎn)垄提、事件或?qū)傩浴?/li>
  3. 從元素實(shí)例到元素摘要
    • 對(duì)提取的實(shí)體和關(guān)系進(jìn)行摘要榔袋,生成每個(gè)元素的描述性文本塊。這些摘要幫助理解實(shí)體的含義和它們之間的關(guān)系铡俐。
    • 例如:
      • 實(shí)體摘要:“微軟”——“全球領(lǐng)先的科技公司凰兑,專注于軟件開(kāi)發(fā)、云計(jì)算和人工智能”
      • 關(guān)系摘要:“微軟“與”人工智能”的關(guān)系——“微軟在AI領(lǐng)域進(jìn)行了大量投資审丘,并推出了多個(gè)AI驅(qū)動(dòng)的產(chǎn)品和服務(wù)”吏够。
      • Claim摘要:“Satya Nadella強(qiáng)調(diào)了AI的重要性”——“微軟CEO Satya Nadella在最近的采訪中強(qiáng)調(diào)了AI對(duì)未來(lái)科技發(fā)展的重要性”。
  4. 從元素摘要到Commutity
    • 將元素摘要構(gòu)建成一個(gè)同質(zhì)無(wú)向加權(quán)圖备恤,其中節(jié)點(diǎn)代表實(shí)體稿饰,邊代表實(shí)體之間的關(guān)系,邊的權(quán)重表示關(guān)系的強(qiáng)度(邊的權(quán)重是基于從文本中提取的關(guān)系實(shí)例的頻率重要性來(lái)計(jì)算的)露泊。
    • 使用社區(qū)檢測(cè)算法(如Leiden算法)將圖劃分為多個(gè)緊密連接的社區(qū)(dense group)喉镰,每個(gè)社區(qū)包含一組高度相關(guān)的實(shí)體。
  5. 從圖社區(qū)到社區(qū)摘要
    • 為每個(gè)社區(qū)生成摘要惭笑,描述該社區(qū)中的主要實(shí)體侣姆、關(guān)系和主題生真。這些摘要在回答全局查詢時(shí)非常有用。
    • 對(duì)于葉級(jí)社區(qū)(最底層的社區(qū))捺宗,直接使用元素摘要生成摘要柱蟀;對(duì)于更高級(jí)別的社區(qū),使用子社區(qū)的摘要來(lái)替代部分元素摘要蚜厉。

2 查詢

GraphRAG的查詢過(guò)程包括全局查詢局部查詢(Local Query)兩種长已。

2.1 全局查詢

GraphRAG的全局查詢過(guò)程是一個(gè)多階段的過(guò)程,旨在通過(guò)利用預(yù)先構(gòu)建的圖索引和社區(qū)摘要來(lái)回答用戶的查詢昼牛。以下是整個(gè)過(guò)程的詳細(xì)步驟:

    1. 查詢解析與實(shí)體識(shí)別
    • 針對(duì)一個(gè)查詢术瓮,系統(tǒng)會(huì)對(duì)該查詢進(jìn)行解析,識(shí)別出其中的關(guān)鍵實(shí)體和主題贰健。之后使用嵌入模型(embedding model)將查詢轉(zhuǎn)換為向量表示胞四,以便與社區(qū)摘要進(jìn)行語(yǔ)義匹配。
  1. 語(yǔ)義匹配與社區(qū)摘要選擇
    • 計(jì)算查詢向量與社區(qū)摘要向量之間的相似度伶椿,找到與查詢最相關(guān)的社區(qū)摘要辜伟。
    • 根據(jù)查詢的復(fù)雜性和所需的詳細(xì)程度,選擇合適層次的社區(qū)摘要(如C0脊另、C1导狡、C2、C3)尝蠕。
      • 對(duì)于全局查詢烘豌,通常選擇較高層次的社區(qū)摘要(如C0或C1),因?yàn)樗鼈兒w了較廣泛的主題看彼。
  2. 隨機(jī)打亂與分塊
    • 將社區(qū)摘要隨機(jī)打亂并分成預(yù)定義大小的塊廊佩,以確保相關(guān)信息均勻分布在多個(gè)塊中,而不是集中在單個(gè)上下文窗口中靖榕。 這種分塊方式有助于避免信息丟失标锄,并提高回答的多樣性。
    • 例如:
      • 假設(shè)有以下社區(qū)摘要:
        • 社區(qū)A:人工智能(AI)在科技行業(yè)中的重要性茁计。
        • 社區(qū)B:云計(jì)算市場(chǎng)的競(jìng)爭(zhēng)格局料皇。
        • 社區(qū)C:隱私政策對(duì)科技公司的影響。
      • 隨機(jī)打亂后星压,社區(qū)摘要可能被重新組合為:
        • 塊1:人工智能的重要性 + 隱私政策的影響践剂。
        • 塊2:云計(jì)算市場(chǎng)的競(jìng)爭(zhēng) + 人工智能的重要性。
        • 塊3:隱私政策的影響 + 云計(jì)算市場(chǎng)的競(jìng)爭(zhēng)娜膘。
  3. 生成中間答案(Map階段)
    • 對(duì)于每個(gè)社區(qū)摘要塊逊脯,使用LLM生成一個(gè)中間答案(partial answer)。
    • LLM還會(huì)為每個(gè)生成的中間答案分配一個(gè)幫助分?jǐn)?shù)(helpfulness score)竣贪,范圍從0到100军洼,表示該答案對(duì)回答查詢的有用程度巩螃。
    • 幫助分?jǐn)?shù)為0的答案會(huì)被過(guò)濾掉,不參與后續(xù)的匯總匕争。
  4. 匯總?cè)执鸢福≧educe階段)
    • 將中間答案按幫助分?jǐn)?shù)從高到低排序避乏。
    • 將這些中間答案逐步添加到一個(gè)新的上下文窗口中,直到達(dá)到token的最大限制甘桑。
    • 使用最終的上下文窗口生成一個(gè)全局答案拍皮,返回給用戶。

2.2 局部查詢

  1. 查詢解析與實(shí)體識(shí)別
    • 對(duì)查詢進(jìn)行解析扇住,識(shí)別出關(guān)鍵實(shí)體和主題春缕。之后盗胀,使用嵌入模型(embedding model)將查詢轉(zhuǎn)換為向量表示艘蹋。
  2. 語(yǔ)義匹配與實(shí)體檢索
    • 計(jì)算查詢向量與圖索引中實(shí)體和關(guān)系的向量之間的相似度,找到與查詢最相關(guān)的實(shí)體票灰。此步驟側(cè)重于語(yǔ)義匹配(向量相似度比較)
  3. 圖遍歷與信息提取
    • 從圖索引中與查詢相關(guān)的實(shí)體節(jié)點(diǎn)出發(fā)女阀,遍歷與之相連的關(guān)系邊Claim,提取詳細(xì)信息屑迂。此步驟側(cè)重于圖遍歷(圖結(jié)構(gòu)分析)
  4. 獲取低層次社區(qū)摘要(可選)
    • 如果查詢需要更詳細(xì)的子主題信息浸策,GraphRAG會(huì)從低層次社區(qū)摘要中提取相關(guān)信息。例如惹盼,如果查詢涉及“微軟在人工智能領(lǐng)域的投資”庸汗,GraphRAG可能會(huì)獲取與“微軟”和“人工智能”相關(guān)的低層次社區(qū)摘要,描述具體的投資項(xiàng)目和合作伙伴手报。
  5. 生成詳細(xì)答案
    • 使用LLM生成一個(gè)詳細(xì)答案蚯舱,描述與查詢相關(guān)的具體信息。例如掩蛤,對(duì)于查詢“微軟在人工智能領(lǐng)域的投資有哪些枉昏?”,生成的詳細(xì)答案可能是:“微軟在人工智能領(lǐng)域進(jìn)行了大量投資揍鸟,包括開(kāi)發(fā)AI驅(qū)動(dòng)的產(chǎn)品(如Azure AI)兄裂、與研究機(jī)構(gòu)的合作(如OpenAI)以及對(duì)初創(chuàng)公司的收購(gòu)(如Nuance Communications)⊙粼澹”
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晰奖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腥泥,更是在濱河造成了極大的恐慌匾南,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件道川,死亡現(xiàn)場(chǎng)離奇詭異午衰,居然都是意外死亡立宜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)臊岸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)橙数,“玉大人,你說(shuō)我怎么就攤上這事帅戒〉瓢铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵逻住,是天一觀的道長(zhǎng)钟哥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瞎访,這世上最難降的妖魔是什么腻贰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮扒秸,結(jié)果婚禮上播演,老公的妹妹穿的比我還像新娘。我一直安慰自己伴奥,他們只是感情好写烤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拾徙,像睡著了一般洲炊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尼啡,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天暂衡,我揣著相機(jī)與錄音,去河邊找鬼玄叠。 笑死古徒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的读恃。 我是一名探鬼主播隧膘,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寺惫!你這毒婦竟也來(lái)了疹吃?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤西雀,失蹤者是張志新(化名)和其女友劉穎萨驶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體艇肴,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腔呜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年叁温,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片核畴。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膝但,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谤草,到底是詐尸還是另有隱情跟束,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布丑孩,位于F島的核電站冀宴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏温学。R本人自食惡果不足惜略贮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枫浙。 院中可真熱鬧刨肃,春花似錦、人聲如沸箩帚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)紧帕。三九已至,卻和暖如春桅打,著一層夾襖步出監(jiān)牢的瞬間是嗜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工挺尾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹅搪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓遭铺,卻偏偏與公主長(zhǎng)得像丽柿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子魂挂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容