GraphRAG知識庫概要設計展望

最近研究了一下GraphRAG,寫了一個文檔轉換工具還有圖可視化工具,結合langchain構建RAG經驗,還有以前的數據平臺,做了一個知識庫概要設計,具體應用歡迎留言探討。

一、GraphRAG整體概述

GraphRAG圖基檢索增強生成,從原始文本中提取知識圖譜、構建社區層次結構、為這些社區生成摘要,然后在執行基于RAG的任務時利用這些結構。旨在利用知識圖譜和大語言模型(LLMs)來提升信息處理能力和問答能力。而標準RAG是一種基礎版本的檢索增強生成架構,采用前置處理流程,通過chunk方式來切割文檔,使用純文本片段的樸素語義進行搜索。
當面臨以下情況時,GraphRAG比標準RAG有更好的表現:當一些實體(名詞)占比比較小,通過標準RAG無法正確召回時;當希望通過實體關系正向和反向查詢內容,通過實體關系實現很正確召回時;通過GlobalSearch對整體進行總結和洞見時。

二、圖基檢索增強生成平臺架構

在這里插入圖片描述

基本思路:

[用戶端]


[文檔預處理層] → 統一文本化


[GraphRAG索引管道] → 知識圖譜構建


[檢索與問答引擎] → 用戶交互接口

1、文檔預處理模塊

輸入: 支持PDF(含掃描件)/DOCX/IMG/HTML/TXT等文件類型
處理流程:
主要利用Marker處理掃描版PDF(OCR識別),MarkitDown處理結構化文檔,使用LLM增強可以對于文檔中出現的圖片進行描述以及提高pdf掃描件的識別準確性和處理速度,最后統一輸出UTF-8編碼的TXT文件。
在這里插入圖片描述

這個工程是利用streamlit構建的一個簡單的app,通過上傳一個或多個文件,轉換txt后批量下載一個zip文件。如果涉及掃描件或者圖譜建議勾選“使用LLM提高準確性”。
實踐挑戰:上述流程主要是對各類文檔進行文本提取,實際還需要對提取的文本進行清洗,提高文本質量,作為graphrag索引管道的輸入,文本質量關系著構建的知識圖譜的質量。

2、GraphRAG索引管道

**輸入:**經過預處理的txt文檔。
處理流程:
通過運行GraphRAG索引管道,會將輸入語料庫切成一系列TextUnits,這些TextUnits充當流程其余部分的可分析單元,并在我們的輸出中提供細粒度的引用。關于知識圖譜提取是使用配置的LLM(支持lm-studio本地大模型)來抽取這些實體、關系、社區等信息,使用Leiden 技術對圖形執行分層聚類,這有助于全面了解數據集。
下圖是基本的工作流:
在這里插入圖片描述

默認情況下,管道的輸出存儲為本地Parquet文件,嵌入將寫入默認配置的lancedb矢量存儲。
實踐挑戰:

  1. 知識圖譜提取需用到LLM,會消耗大量的token,估算token數量級是個挑戰。
  2. 實踐中使用的大模型不同,需要相應的優化提示詞,graphrag提供的prompt auto tune效果不太理想。實際測試下來,在社區報告提取過程中經常報錯,需要手動優化提示詞。
  3. 管道輸出的數據默認存儲在本地文件(parquet和lancedb),如果結合其他數據源通過langchain或llamaindex實現多路召回,則需要實現指定數據庫的接入。可以使用postgresql數據同AEG和pgvector拓展實現圖和向量查詢,或者分別接入單獨的圖數據庫和向量數據庫,例如neo4j和Milvus。
  4. 知識圖譜質量評估也是一個挑戰。不過可以通過圖形化展示很直觀的看到:點、邊、社區等信息。其次,就是提供給LocalSearch中對應的entitylD,GlobalSearch中的community reqportID引用信息,并根據這些ID獲取進一步信息,進行查詢和可視化展示。
    下圖僅為知識圖譜可視化展示:
    在這里插入圖片描述

這個工程分成前后端,可以上傳對應的parque文件,存入postgres數據庫,前端查詢出實體和關系信息解析成2d或3d圖形,同時提供parque文件對應的table。其中主要使用 react-force-graph-2d 和 react-force-graph-3d來構建2d或3d圖形。目前可以通過查詢模式,或者點擊交互模式,找到對應節點信息和關系信息。

3、檢索與問答引擎

GraphRAG的查詢接口主要有LocalSearch、GlobalSearch和Driftsearch。

  • LocalSearch主要是將知識圖譜中的結構化數據與輸入文檔中的非結構化數據相結合,能夠在查詢時使用相關實體信息來增強LLM上下文。它非常適合回答需要了解輸入文檔中提到的特定實體的問題。
  • GlobalSearch主要使用來自圖的社區信息和社區報告作為LLM的上下文,對于需要聚合數據、集中信息來組成答案的全局查詢有很好的支持。
  • Driftsearch具有靈活遍歷的動態推理,結合了全局搜索和本地搜索的特征,以平衡計算成本和質量結果的方法生成詳細的響應。

localsearch 和標準rag一樣,只查找相關實體縮關聯的社區信息,構建查詢上下文,對于全局類型的問題不能很好的回答。而GlobalSearch過程需要遍歷某一層的社區,如果對應的知識圖譜巨大的,社區很多的話,需要消耗大量的token,花費很長時間才能得到最終答案。DriftSearch就是在兩種采取一個權衡。

4、graphrag實踐挑戰

  • 1)實際使用速度比較慢,主要原因包括:
    • 初始化時間:加載知識圖譜
    • 查詢復雜度:通過向量查詢實體,構建上下文
    • LLM調用:調用LLM,生成token

時間成本、價格成本主要是在llm調用上,可以通過提示詞工程優化。目前能優化的點主要就是:提示詞優化和增加大語言模型的理解次數。

  • 2)難以評估graphrag好壞,除了rag評估的主要指標,知識圖譜質量評估也是一個挑戰。
    改進RAG的兩個方向:對數據進行處理,提高數據質量和索引。對檢索生成的結果進行評估。

5、檢索增強生成評估

Ragas 框架提供了一系列工具和技術,借助 Ragas可以合成生成一個多樣化的測試數據集客觀的衡量RAG系統性能。后面研究看看。

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

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

相關文章

Android Studio 日志系統詳解

文章目錄 一、Android 日志系統基礎1. Log 類2. 日志級別 二、Android Studio 中的 Logcat1. 打開 Logcat2. Logcat 界面組成3. 常用 Logcat 命令 三、高級日志技巧1. 自定義日志工具類2. 打印方法調用棧3. 打印長日志4. JSON 和 XML 格式化輸出 四、Logcat 高級功能1. 自定義日…

深度對比:Objective-C與Swift的RunTime機制與底層原理

1. RunTime簡介 RunTime(運行時)是指程序在運行過程中動態管理類型、對象、方法等的機制。Objective-C 和 Swift 都擁有自己的運行時系統,但設計理念和實現方式有很大不同。理解 RunTime 的底層原理,是掌握 iOS 高級開發的關鍵。…

使用手機錄制rosbag包

文章目錄 簡介錄制工具錄制步驟錄制設置設置IMU錄制頻率設置相機分辨率拍照模式錄制模式數據制作獲取數據數據轉為rosbag查看rosbag簡介 ROS數據包(rosbag)是ROS系統中用于記錄和回放傳感器數據的重要工具,通常用于算法調試、系統測試和數據采集。傳統上,rosbag依賴于ROS環…

淺談PCB傳輸線(一)

前言:淺談傳輸線的類型,以及傳輸線的一些行為特性。 1.傳輸線的種類 2.互連線被視為傳輸線的場景 3.傳輸線的行為特性*** 1.傳輸線的種類 PCB 中的信號傳輸線通常有兩種基本類型: 微帶線和帶狀線。此外,還有第三種類型–共面線(沒有參考平面…

【angular19】入門基礎教程(一):項目的搭建與啟動

angular現在發展的越來越能完善了,在vue和react的強勢競爭下,它迎來了自己的巨大變革。項目工程化越來越好,也開始擁抱了vite這種高效的構建方式。所以,我們有必要來學習這么一個框架了。 項目實現效果 nodejs環境 Node.js - v^…

在前端應用領域驅動設計(DDD):必要性、挑戰與實踐指南

引言 領域驅動設計(Domain-Driven Design,簡稱 DDD)起源于后端復雜業務系統建模領域,是 Eric Evans 在 2003 年提出的一套理論體系。近年來,隨著前端工程化與業務復雜度的持續提升,"前端也要 DDD&quo…

一文了解 模型上下文協議(MCP)

MCP(Model Context Protocol,模型上下文協議)是由Anthropic公司于2024年11月推出的一項開放標準協議,旨在解決大型語言模型(LLM)與外部數據源和工具之間的通信問題。其核心目標是通過提供一個標準化的接口&…

面向全球的行業開源情報體系建設方法論——以易海聚實戰經驗為例

在全球數字化轉型加速的背景下,如何精準鎖定目標領域的關鍵信息源,構建可持續迭代的情報網絡,已成為企業戰略決策的核心能力。深圳易海聚信息技術有限公司(以下簡稱“易海聚”)深耕開源情報領域十余年,其自…

UDP協議詳解+代碼演示

1、UDP協議基礎 1. UDP是什么? UDP(User Datagram Protocol,用戶數據報協議)是傳輸層的核心協議之一,與TCP并列。它的主要特點是:???? 無連接:通信前不需要建立連接(知道對端的…

基于大模型的膽總管結石全流程預測與臨床應用研究報告

目錄 一、引言 1.1 研究背景 1.2 研究目的與意義 1.3 研究方法和創新點 二、大模型在膽總管結石預測中的應用原理 2.1 大模型概述 2.2 模型構建的數據來源與處理 2.3 模型訓練與優化 三、術前預測與準備 3.1 術前膽總管結石存在的預測 3.2 基于預測結果的術前檢查方…

Windows避坑部署SkyworkAI/SkyReels-V2昆侖萬維電影生成模型

#工作記錄 前言 SkyworkAI/SkyReels-V2 是由昆侖萬維開源的全球首個無限時長電影生成模型,基于擴散強迫框架結合多模態大語言模型、強化學習等技術,支持文本到視頻、圖像到視頻等多種生成方式 開源項目地址: SkyworkAI/SkyReels-V2&#x…

iVX 圖形化編程如何改寫后端開發新范式

在數字化轉型加速推進的當下,企業對后端系統的需求呈現爆發式增長。Gartner 最新報告指出,2025 年全球企業平均需完成 300 定制化應用開發,而傳統編碼模式下,單個項目平均交付周期長達 6 - 8 個月。與此同時,Redis、K…

策略模式:靈活的算法封裝與切換

策略模式是一種行為型設計模式,它將一組算法封裝成獨立的類,使它們可以相互替換。策略模式讓算法的變化獨立于使用算法的客戶端。本文將以一個收銀系統為例,詳細介紹策略模式的實現和應用。 什么是策略模式? 策略模式定義了算法…

第十四章-PHP與HTTP協議

第十四章-PHP與HTTP協議 一,HTTP 協議詳解 HTTP(HyperText Transfer Protocol,超文本傳輸協議)是互聯網上應用最廣泛的協議之一,用于客戶端(如瀏覽器)與服務器之間的通信。它是 Web 技術的基石…

刀客獨家 | 潘勝接管百度移動生態市場部

一、 據刀客doc向獨家信源確認,百度移動生態事業群(MEG)市場部日前完成重要人事調整:潘勝已經接任市場負責人。 此前,根據雷鋒網3月底的報道,百度云渠道生態總經理陳之若離職,原移動生態事業群…

Springoot、Flowable快速學習

應用背景: 公司打算做個考勤系統,涉及到請假、補卡之類的流程審批。想到了工作流,gitee、github上看了下開源的,有自研的和常見的Flowable?、Activiti?。首先放棄自研的,考慮到成熟度、社區生態,最后選擇…

關于 【Spring Boot Configuration Annotation Processor 未配置問題】 的詳細分析、解決方案及代碼示例

以下是關于 Spring Boot Configuration Annotation Processor 未配置問題 的詳細分析、解決方案及代碼示例: 1. 問題描述 當使用 Spring Boot 的配置注解(如 ConfigurationProperties、Value、ConditionalOnProperty 等)時,若未…

Spring系列四:AOP切面編程 第一部分

AOP切面編程 💗AOP-官方文檔🍝AOP 講解🍝AOP APIs 💗動態代理🍝初探動態代理🍝動態代理深入🍝AOP問題提出📗使用土方法解決📗 對土方法解耦-開發最簡單的AOP類&#x1f4…

【云計算】云計算中IaaS、PaaS、SaaS介紹

0 隨著云計算、大數據、人工智能發展迅速,布局“云”已經是互聯網企業共識。云計算的服務類型分為三種,分別為IaaS、PaaS、SaaS,這三個分別是什么意思,今天做一個簡單的介紹和了解。 一、云計算 云計算是用戶需求通過Internet獲取計算資源,把計算資源包裝成服務,提供給…

使用HYPRE庫并行裝配IJ稀疏矩陣指南: 矩陣預分配和重復利用

使用HYPRE庫并行裝配IJ稀疏矩陣指南 HYPRE是一個流行的并行求解器庫,特別適合大規模稀疏線性系統的求解。下面介紹如何并行裝配IJ格式的稀疏矩陣,包括預先分配矩陣空間和循環使用。 1. 初始化矩陣 首先需要創建并初始化一個IJ矩陣: #incl…