LLM增強檢索---GraphRAG + LangGraph項目實戰

專欄:大模型垂直應用技術?? ?????

個人主頁:云端筑夢獅

大模型應用落地亟需解決的核心問題有一個是:如何與私域數據交互。私域數據主要的問題是:需要有效地將企業數據整合進大語言模型中。由于大模型的上下文處理能力有限,一次性把太多的數據給到大模型是不現實的,所以必須精準的選擇出哪些數據在當前對話上下文中是有效的

一.傳統RAG

RAG`的實現是包括兩個階段的:檢索階段和生成階段。在檢索階段,從知識庫中找出與問題最相關的知識,為后續的答案生成提供素材。在生成階段,`RAG`會將檢索到的知識內容作為輸入,與問題一起輸入到語言模型中進行生成。這樣,生成的答案不僅考慮了問題的語義信息,還考慮了相關私有數據的內容。

傳統的RAG技術很難去搜索到全局信息,若問題散落在不同的語言塊中,基于傳統RAG就很難檢索到全局信息。

圖結構Graph的優勢在于:在圖譜中建立實體關系,從而檢索到全局的信息

GraphRAG可以向大模型提供結構化實體信息,文本與屬性的關系相結合,借助GraphRAG可以豐富上下文表示,但是GraphRAG的成本極高!

二. Microsoft GraphRAG(僅僅為GraphRAG的一種實現模式)

GraphRAG 整個 Indexing 過程可以通過以下簡單的方式來理解:

  1. 類似于 Baseline RAG,將源文檔分塊為較小的子文檔;
  2. 執行兩個并行提取:實體提取用于識別人名、地名、組織名等實體,關系提取:查找不同數據塊中實體之間的關系,比如朋友、同事,員工等;
  3. 創建知識圖譜,其中節點表示實體,邊表示它們之間的關系,比如張三是李四的朋友, 張三是王五的同事;
  4. 通過識別密切相關的實體來構建社區;
  5. 生成不同社區級別的分層摘要;
  6. 使用 reduce - map 方法通過逐步組合塊來創建摘要,直到實現整體概覽;

這個過程非常復雜,因此是需要一些配置文件來控制整個流程的。Microsoft GraphRAG 實現的是完整的索引構建流程邏輯,但具體到每個環節的一些關鍵參數,比如:文本分塊的大小,實體提取、關系提取的粒度,選擇使用的大模型,Embedding 模型等,都是需要通過配置文件來控制的。

1. 文檔加載器的輸入輸出格式---過程補

2.創建文本單元

準備好數據以后,才正式進入`Microsoft GraphRAG`實現的索引構建流程。其中,第一階段要做的事情是:將傳入的文檔內容進行分塊,然后生成`TextUnit`。`TextUnit`是用于圖提取技術的文本塊,同時會被提取的知識項用作源引用,以便能夠溯源到最原始的文本。

3.圖元素的提取?

在對文檔進行分塊成`TextUnit`以后,接下來就要對每個`TextUnit`中的內容進行圖元素的提取。 元素主要包括:實體、關系。

4.社區檢測

現在有了可用的實體和關系圖,但是這些實體和關系都是孤立的,沒有形成一個完整的圖譜。因此需要做的就是將這些實體和關系進行聚合,形成一個完整的圖譜。所以接下來的任務就是要將識別出來的實體和關系分組成相關關聯的子集。

社區檢索是圖論中的一個重要任務,旨在識別圖中節點的聚集結構。其中社區是指在圖中,節點之間的連接比與其他節點的連接更為密切的子集。通過識別社區,我們就可以理解數據的內在結構,發現潛在的模式和關系。其中萊頓算法(Leiden Algorithm)是一種用于社區檢測的高效算法,旨在優化社區結構的識別過程。它是基于 Louvain 算法的改進,具有更好的性能和準確性。

微軟實現的就是分層的萊頓算法(Hierarchical Leiden Algorithm),它將圖中的節點分成多個層次的社區,從而形成一個層次化的社區結構。

5. 生成社區報告

要做的就是對每個社區中的節點、關系和摘要的定義進行總結。這樣做的目的是為了方便查詢,當查詢時需要根據問題匹配知識庫中的實體信息和關系信息時,只需要根據總結后的實體描述和關系描述就可以進行匹配了。不然遍歷所有的`Description`進行匹配,效率會非常低下。

二.自定義接入圖數據庫與知識圖譜

Neo4j 是一個開源的 NoSQL 圖數據庫,它使用圖來表示和存儲數據。在 DB - Engines 排名中根據數據庫管理系統的受歡迎程度對其進行排名中,Graph DBMS 榜單中 Neo4j 排名第一。

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

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

相關文章

修改SSH端口實戰

本次實戰主要涉及SSH端口的修改和配置。首先,對master、slave1和slave2三臺云主機的SSH配置文件進行修改,指定新的SSH端口,并重啟SSH服務。接著,通過FinalShell工具修改連接端口,實現SSH連接到三臺云主機。然后&#x…

PyTorch中的permute, transpose, view, reshape和flatten函數詳解(已解決)

1.permute permute函數用于重新排列張量的維度。它接受一個元組作為參數,表示新的維度順序。例如,如果我們有一個形狀為(2, 3)的二維張量,我們可以使用permute函數將其維度重新排列為(3, 2),如下所示: >>> …

開疆智能ModbusTCP轉EtherCAT網關連接甘納數據采集系統配置案例

本案例是通過開疆智能研發的ModbusTCP轉EtherCAT網關連接ModbusTCP主站與甘納數據采集系統的配置案例,具體配置如下。 配置過程 首先設置ModbusTCP主站,這里以信捷PLC為例 IP設定 要走Modbus-TCP協議,要把設備IP設在同一網段且地址不同&am…

Neo4j常用語法-path

在 Neo4j 中,Path(路徑) 是連接兩個或多個節點的關系序列,是圖查詢的核心概念之一。理解 Path 的用法對于復雜圖分析至關重要 關鍵特性: 有向性:路徑中的關系具有方向 可變長度:路徑可以包含 0 …

從 Cluely 融資看“AI 協同開發”認證:軟件考試應該怎么升級?

AI 工具大爆發,軟件考試卻還停在“純手寫”時代? 2025 年 6 月,一個標語寫著 “Cheat on Everything”(對,意思就是“什么都能開掛”)的 AI 初創公司——Cluely,正式宣布獲得由 a16z 領投的 1 …

商品中心—10.商品B端搜索系統的說明文檔

大綱 1.商品B端搜索系統的運行流程 緩存和索引設計 2.商品B端搜索系統監聽數據變更與寫入ES索引 3.商品B端搜索系統的歷史搜索詞的實現 4.商品B端搜索系統的搜索詞補全的實現 5.商品B端搜索系統的搜索接口實現 6.索引重建 1.商品B端搜索系統的運行流程 緩存和索引設計 …

HCIP-Datacom Core Technology V1.0_4 OSPF路由計算

ospf是如何計算生成這些路由呢, 區域內路由計算 LSA概述 同一個區域內路由器去進行一個數據庫同步,形成一個LSDB,那么數據庫里面所存在的LSA,是如何利用它去進行計算和生成路由的呢,以及這些LSA分別包含了哪些信息,比…

微服務拆分之術與道:從原則到實踐的深度解析

引言:微服務的塞壬之歌 - 超越單體巨石 故事要從一家名為“巨石公司”(Monolith Inc.)的虛構企業說起。它的旗艦產品曾是公司的驕傲,但隨著歲月流逝,這個系統逐漸演變成了一個“大泥球”(Big Ball of Mud&a…

【新手向】GitHub Desktop 的使用說明(含 GitHub Desktop 和 Git 的功能對比)

GitHub Desktop 是 GitHub 公司推出的一款桌面應用程序,旨在幫助開發人員更輕松地使用 GitHub,以下是其簡單的使用說明: 安裝與登錄 下載 GitHub Desktop |GitHub 桌面 訪問GitHub Desktop 官方網站,根據自己的操作系統下載對應的…

Linux驅動編程 - gpio、gpiod函數

????? 目錄 簡介: 1、GPIO 子系統有兩套API: 一、GPIO新、舊版互相兼容轉換 API 1、轉化函數 二、基于描述符接口(descriptor-based) (以"gpiod_"為前綴) 1、獲取 GPIO 2.1 struct gpio_desc *gpiod_get(s…

Tensorflow推理時遇見PTX錯誤,安裝CUDA及CuDNN, 解決問題!

問題原因: 使用TensorFlow一個小模型是進行推理的時候,報了PTX錯誤: Traceback (most recent call last): 20273 2025-06-18 10:20:38.345 INFO 1 --- [checkTask-1] c.l.a.d.a.util.AnalyzeCommonHelper : File "/home/python/commo…

C# 網絡編程-關于HTTP/HTTPS的基礎(一)

一、HTTP基礎概念 1. 請求-響應模型 HTTP是基于客戶端-服務器的無狀態協議,流程如下: 客戶端(如瀏覽器)發起請求。服務器接收請求并處理。服務器返回響應,包含狀態碼、Header和響應體。連接關閉,后續請求…

小程序右上角○關閉事件

小程序用戶真實離開事件追蹤:一場與技術細節的博弈 在數據分析的場景下,精準捕捉用戶行為至關重要。我們遇到了這樣一個需求:在小程序的埋點方案中,只記錄用戶真正意義上的離開,即通過點擊小程序右上角關閉按鈕觸發的…

數據庫高性能應用分析報告

數據庫高性能應用分析報告 引言摘要 在數字經濟加速發展的今天,數據庫性能已成為企業核心競爭力的關鍵要素。根據Gartner 2024年最新研究,全球企業因數據庫性能問題導致的直接經濟損失高達每年420億美元,同時性能優化帶來的業務提升可達到2…

Java使用itext pdf生成PDF文檔

Java使用itext pdf生成PDF文檔 Java使用itextpdf生成PDF文檔 在日常開發中,我們經常需要生成各種類型的文檔,其中PDF是最常用的一種格式。本文將介紹如何使用Java和iText庫生成包含中文內容的PDF文檔,并通過一個具體的示例來展示整個過程。…

利用VBA將Word文檔修改為符合EPUB3標準規范的HTML文件

Word本身具有將docx文件轉換為HTML文件的功能,但是轉換出來的HTML文檔源代碼令人不忍卒讀,占用空間大,可維護性極差,如果想給HTML文檔加上點自定義交互行為,也不是一般的麻煩。如果文檔中包含注釋,對于Word…

開發語言本身只是提供了一種解決問題的工具

前言 你是否曾經注意到,在中國的軟件工程師日常工作中,他們使用的工具界面大多為英文?從代碼編輯器到開發框架文檔,再到錯誤信息提示框,英語似乎已經成為了計算機領域事實上的標準語言。那么為什么在全球化日益加深的…

2024計算機二級Python真題精講|第一套(易錯點分析)

一、選擇題 1.計算機完成一條指令所花費的時間稱為一個( )。 A.執行時序 B.執行速度 C.執行速度 D.指令周期 答案 D 一般把計算機完成一條指令所花費發時間稱為一個指令周期。指令周期越短,指令執行就越快。 2.順序程序不具有( &#xf…

BGP路由反射器(RR)實驗詳解,結尾有詳細腳本

目錄 路由反射器基礎概念 實驗拓撲與設計 實驗配置步驟 配置驗證與排錯 實驗總結 完整配置命令集 路由反射器基礎概念 在傳統的IBGP網絡中,為了防止路由環路,BGP規定通過IBGP學到的路由不能再傳遞給其他IBGP對等體,這導致所有IBGP路由…

(aaai2025) SparseViT: 用于圖像篡改檢測的Spare-Coding Transformer

論文:(aaai2025) SparseViT: Nonsemantics-Centered, Parameter-Efficient Image Manipulation Localization through Spare-Coding Transformer 代碼:https://github.com/scu-zjz/SparseViT 這個論文研究的是圖像篡改檢測(Image Manipulatio…