簡單了解一下GraphRAG

傳統RAG的缺點

????????當我們將一段文本信息以句子分割后,存入到向量數據庫中。用戶提問“老王喜歡吃什么”,這個問題會與向量數據庫中的許多句子關聯性比較強,能返回準確且具體的信息。

????????但是,若是問題換成“出現了幾次西瓜”,西瓜是一個比較具體的名詞/物品,它容易出現在很多句子中,但是在出現的句子中占比又不是很大。

????????用戶的問題中的“西瓜”,在“老王喜歡吃西瓜”這句話中出現,但是這句話的只有一小部分信息是“西瓜”,所以,在提問這種比較細節性的問題時,在做問題與句子之間的相似度計算,相似度可能并不是很大,這就導致最后的查詢結果會漏掉一些句子,甚至匹配錯誤。

????????那么如果劃分的顆粒度再細一點,將“老王喜歡吃瓜”,切成“老王”,“喜歡吃”,‘西瓜’,又分成了三段,那么問題“西瓜出現幾次”這個問題可能會比較好解決了(因為“西瓜”單獨出現了),但是回到原問題“老王喜歡吃什么”又難以解決了,因為“老王喜歡吃什么”,只會匹配到“老王”和“喜歡吃”,匹配不到‘西瓜’,所以原問題又難以得到解決。

????????所以當劃分段落的顆粒度比較粗,容易丟失細節,若劃分顆粒度太細,語義之間的聯系(老王--->喜歡吃---->西瓜)又被消除。這就是傳統RAG的缺點之一。

1. 檢索層面的缺點

  • 語義召回不穩定:依賴向量召回(如基于 embedding),可能出現召回不相關或遺漏關鍵信息的情況。

  • 知識碎片化:檢索出的文檔片段往往是局部的,缺乏整體結構,模型容易“拼湊”出不連貫的回答。

  • 依賴索引質量:如果文本清洗、切分、embedding 表達不佳,檢索效果會大幅下降。

2. 生成層面的缺點

  • 上下文窗口限制:檢索到的內容需要塞進模型上下文,受限于窗口大小,導致長文檔場景容易丟失重要信息。

  • 幻覺問題仍存在:雖然 RAG 能緩解模型“胡編亂造”,但如果檢索不準,模型仍可能基于錯誤內容生成回答。

  • 信息融合困難:模型可能無法很好地整合多個檢索片段的信息,尤其是在需要推理、對比或跨段整合時。

3. 系統架構層面的缺點

  • 延遲較高:RAG 需要兩步(檢索 + 生成),相比純生成模型響應更慢。

  • 維護復雜:需要單獨維護知識庫、向量索引和更新流程,工程成本高。

  • 難以動態更新:傳統 RAG 對知識更新通常需要重新向量化和索引,實時性不足。

4. 應用層面的缺點

  • 魯棒性不足:對用戶提問方式敏感,表達不同可能導致檢索結果差異顯著。

  • 領域依賴強:在知識高度專業、語義微妙的領域(如法律、醫療),檢索誤差對結果影響極大。

  • 可解釋性有限:雖然能返回檢索片段,但生成結果和檢索片段之間的邏輯聯系往往不透明。

知識圖譜

????????為了解決傳統RAG的缺點,人們就應用知識圖譜。下面這張就是一個典型的圖譜,有實體節點“老王”和“習慣”,也有關系節點“愛吃”。

????????我們還可以賦予實體節點和關系節點屬性和描述,比如實體節點“老王”,他的標簽/屬性可以是“人”,可以附帶描述“愛吃西瓜”,關系節點“愛吃”,可以有描述“老王愛吃的東西”等等。比如,在neo4j圖知識庫中可以輕松做到這些。

????????在傳統知識圖譜構建中,我們需要從這一段文字中找出實體,抽取出實體之間的關系,算法十分復雜而且性能也一般。但是,再出現大模型之后,這些步驟就相對容易許多,而且性能也很好。做法就是,寫好一段示例,并加上數據傳給大模型,讓大模型來抽取出實體和關系。需要注意的是里面的實體類型,需要我們自己定義,你可以認為“人”是實體,可以認為“水果”是實體,還可以認為“味道”是實體。

????????并且當大模型返回解析后的知識圖譜之后,通常來說我們會將知識圖譜和原文再發送給大模型,再讓他解析,循環往復直到大模型任務這個原文的實體和關系都已經以最細的粒度抽取完畢了。

這樣我們就借助大模型生成了某一文本段落的知識圖譜。

GraphRAG

合并圖譜

將拆分后的每個段落生成的知識圖譜合并,節點和關系合并的時候,其所帶的描述信息也會一同合并。

之后,把每個節點和關系(邊)的合并后的描述信息再發送給大模型,讓他對這些信息再總結一下,高度概括一下。

用大模型高度總結后的描述信息代替原本合并后的描述信息。此外GraphRAG還會一直維護著圖譜和原文的關聯信息。比如實體節點“老王”是由哪幾段生成。

同理,一段原文也會對應著知識圖譜中的哪些實體節點和關系節點

簡化圖譜

現在的知識圖譜太大了,GraphRAG會通過算法合并部分圖譜作為一個整體,比如將現在的知識圖譜合并成了兩個整體。

再把每個整體中的所有節點和關系的描述信息發送給大模型,再讓大模型進行高度總結,甚至還能推理。比如通過“老王愛吃瓜和桃”和“小王只愛吃瓜”能總結/推理出“小王不愛吃桃”,再將高度總結后的更寬泛更高維的信息返回。

循環此操作,就可以得到一個層級結構的知識圖譜,越往上,信息越凝練高度概括,越往下信息越詳細

查詢

把這個層級結構的知識圖譜中的每條邊每個節點的實體信息和描述都當做文本片段embedding后存入向量數據庫中

同時,將原文的每個切片也都存入向量數據庫中

接下來就是把用戶的提問轉為embedding之后,可以和知識圖譜某基層也可以和原文片段進行匹配,也可以全部查一遍

local_search策略:先從最底層(詳細接近原文)的知識圖譜中找出和問題最近的實體,再反向查詢這個底層的知識圖譜是由原文中哪些片段組成的,這個底層的知識圖普相關的上層(有高層次的抽象問題)或相鄰的節點(低層次的細節問題)和關系也會被找到,最后將這些節點和邊的信息和原文片段和問題一起發給大模型。local_search從最底層,所以適應細節問題

global_serch從知識圖譜的頂層開始查起,所以比較適用于高層次抽象問題,比如“這篇文章的主旨是什么”

補充

萊頓社區檢測算法

b站:AI知識圖譜 GraphRAG 是怎么回事?_嗶哩嗶哩_bilibili

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96702.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP 狀態碼背后的邏輯:從請求到響應的完整流程解析(含完整流程圖)

在日常的 Web 開發與 API 調試中,我們經常會遇到各種 HTTP 狀態碼 ——404 Not Found、401 Unauthorized、500 Internal Server Error... 這些數字背后并非隨機出現,而是服務器處理請求過程中不同階段的 "反饋信號"。理解這些狀態碼的觸發邏輯…

Vue:下拉框多選影響行高

目錄 一、 出現場景二、 解決方案 一、 出現場景 在使用el-select增加multiple屬性進行多選時&#xff0c;會出現高度塌陷的情況 二、 解決方案 首先需要在el-select中增加collapse-tags屬性&#xff0c;并在style中增加如下樣式 方案一 <style scoped> ::v-deep .e…

如何在高通躍龍QCS6490 Arm架構上使用Windows 11 IoT企業版?

1.簡介研華已將高通躍龍QCS6490 技術應用于嵌入式模塊、單板電腦和AI攝像頭等各種規格的嵌入式硬件中。QCS6490平臺支持全面的操作系統生態系統&#xff0c;包括Windows、Ubuntu、Yocto和 Android。Windows 11 IoT企業版是微軟新一代的物聯網操作系統&#xff0c;具有更強的安全…

阿里云國際代理:如何利用RDS構建高可用、可擴展的數據庫架構

講下云數據庫RDS案例解析&#xff0c;若在上云或用云過程中有不懂的&#xff0c;可尋云樞國際yunshuguoji助力免卡上云用云。1、RDS MySQL數據庫代理支持讀寫分離、連接保持、就近訪問、事務拆分、連接池、SSL加密等功能&#xff0c;能夠降低主實例負載&#xff0c;提高實例可用…

C++之特殊類設計

文章目錄前言一、 設計一個不能被拷貝的類1. C98 實現方式2. C11 實現方式二、設計一個只能在堆上創建對象的類1. 方法一&#xff1a;析構函數私有&#xff0c;提供destory接口釋放資源2. 方法二&#xff1a;構造函數私有三、 設計一個只能在棧上創建對象的類1. 實現方式四、設…

TupiTube,一款免費開源的 2D 動畫創作工具

TupiTube&#xff0c;一款免費開源的 2D 動畫創作工具 ** ** 功能 ** &#xff1a;開源、免費的 2D 動畫軟件&#xff0c;界面簡單&#xff0c;支持逐幀動畫、剪紙動畫、定格動畫&#xff0c;能導入素材并導出多種視頻和圖片格式&#xff0c;適合兒童、學生和動畫愛好者入門創作…

MoE架構訓練系統設計:專家并行與門控網絡優化策略

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;注冊即送-H卡級別算力&#xff0c;80G大顯存&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生更享專屬優惠。 摘要 混合專家&#xff08;Mixture of Experts&#xf…

使用Python爬蟲,selenium和requests誰更強?

py爬蟲的話&#xff0c;selenium和reqeusts誰更強&#xff0c;selenium是不是能完全取代requests? 答案基本是可以的&#xff0c;selenium適合動態網頁抓取&#xff0c;因為它可以控制瀏覽器去點擊、加載網頁&#xff0c;requests則比較適合靜態網頁采集&#xff0c;它非常輕…

編譯原理-文法壓縮練習

這個任務的目標就是把一個給定的文法變得“干凈”和“高效”&#xff0c;剔除所有無用的部分。根據幻燈片&#xff0c;無用的&#xff08;多余的&#xff09;規則分為兩大類&#xff1a; 不可達規則&#xff1a;規則的“頭”&#xff08;左部非終結符&#xff09;從起始符號出發…

GPU硬件架構和配置的理解

從公司架構理解GPU架構想象一個GPU就像一家大型科技公司&#xff0c;它的任務是處理圖形和計算任務&#xff08;“干活”&#xff09;。硬件概念公司架構比喻作用和特點Platform (平臺)集團公司最大的獨立實體。比如谷歌Alphabet是一個集團公司&#xff0c;它旗下有谷歌、Waymo…

【硬件開發】電源抑制比PSRR

電源抑制比PSRR是電壓輸入量和電壓輸出量的比值&#xff0c;通常用dB來表示。 PSRR這個參數經常和運放&#xff0c;LDO,DCDC變換器有關聯。(2 封私信 / 58 條消息) 電源抑制比(PSRR)的基礎知識 - 知乎

七、卷積神經網絡

目錄 7.1 整體結構 7.2 卷積層 7.2.1 全連接層存在的問題 7.2.2 卷積運算 7.2.3 填充 7.2.5 3維數據的卷積運算 7.2.6 結合方塊思考 7.2.7 批處理 7.3 池化層 7.4 卷積層和池化層的實現 7.4.1 4維數組 7.4.2 基于 im2col的展開 7.4.3 卷積層的實現 7.4.4 池化層的…

加餐加餐!燒烤斗破蒼穹

忽然起了吃燒烤的念頭&#xff0c;便掏出手機點了一堆。不過二十分鐘&#xff0c;外賣小哥便按響了門鈴&#xff0c;手里提著一個方正的紙袋&#xff0c;還冒著熱氣。我將燒烤一一取出&#xff0c;排在茶幾上。肉串油光發亮&#xff0c;韭菜翠綠間點綴著蒜蓉&#xff0c;茄子剖…

搜索引擎收錄網站帶www和不帶www有區別嗎?

這是一個非常常見且重要的問題。簡單直接的回答是&#xff1a;有區別&#xff0c;但對搜索引擎來說&#xff0c;處理得當就不會重復&#xff1b;處理不當則會造成嚴重重復和權重分散。下面我為您詳細解釋一下&#xff0c;并提供正確的處理方法。核心區別&#xff1a;兩個不同的…

AFSim2.9.0學習筆記 —— 2、AFSim的Wizard軟件概述(ArkSIM集成開發環境 (IDE))

&#x1f514; AFSim2.9.0 相關技術、疑難雜癥文章合集&#xff08;掌握后可自封大俠 ?_?&#xff09;&#xff08;記得收藏&#xff0c;持續更新中…&#xff09; 若還沒有下載AFSim2.9.0完整軟件或源碼&#xff0c;請先進入本人另篇文章了解下載。 正文 ??主界面 打開 Ar…

建自己的Python項目倉庫,使用工具:GitHub(遠程倉庫)、GitHub Desktop(版本控制工具)、VSCode(代碼編輯器)

結合 GitHub&#xff08;遠程倉庫&#xff09;、GitHub Desktop&#xff08;版本控制工具&#xff09;、VSCode&#xff08;代碼編輯器&#xff09; 三個工具&#xff0c;以下是更具體的Python項目倉庫搭建流程&#xff0c;包含工具協同操作的詳細步驟&#xff1a; 一、整體流程…

iDEA Lombok 失效 和 slf log 變量失效問題

1. lombok 失效&#xff1a;檢查下配置有沒有使用注解處理器&#xff1b;且這個處理中有沒有帶上版本&#xff1b;版本號需要與上面引入的依賴版本一致。2. 對于找不到 log 變量的操作&#xff0c;則是使用下面將這個變量使用下面的代碼定義出來&#xff1b;上面去掉 slf4j注解…

go資深之路筆記(二) sync.Pool

一、 使用 sync.Pool 減少 GC 壓力&#xff0c;提升性能 簡單講下go的gc&#xff0c;它的核心原理就是三色標記法和寫屏障&#xff0c;可以實現優秀并發處理。gc一般不會頻繁調用&#xff0c;他是根據GOGC的值來判斷&#xff0c;具體就是上次觸發GC后總堆值大于等于上次的(1GO…

【面試筆記-Java開發崗】

目錄&#xff1a;1. synchronized 和 ReentrantLock 的區別及應用場景2. HashMap 與 LinkedHashMap 的區別3. ConcurrentHashMap 的數據結構及 JDK1.7 與 JDK1.8 區別4. Spring 常用的模式及應用場景5. 事務的四大特性&#xff08;ACID&#xff09;6. 鎖機制&#xff1a;行級鎖…

CSS :has() 選擇器詳解:為什么它是“父選擇器”?如何實現真正的容器查詢?

一、前言 在傳統的 CSS 中&#xff0c;我們只能根據元素的自身屬性、類名、ID 或其子元素/兄弟元素來設置樣式&#xff0c;卻無法根據其父元素或后代元素的狀態來改變自身樣式。 直到 :has() 選擇器的出現&#xff0c;這一局面被徹底改變。 :has() 被稱為 “父選擇器” 或 “…