螞蟻 KAG 框架開源:知識圖譜 + RAG 雙引擎

引言:從RAG到KAG,專業領域知識服務的技術突破

在大語言模型(LLM)應用落地過程中,檢索增強生成(RAG) 技術通過引入外部知識庫有效緩解了模型幻覺問題,但在專業領域仍面臨三大核心挑戰:向量檢索的"似是而非"(語義相似但邏輯錯誤)、開放信息抽取的"噪聲污染"(實體關系提取不準確)、復雜場景的"多跳推理難題"(無法處理超過3跳的邏輯鏈路)。為解決這些問題,螞蟻集團聯合浙江大學推出知識增強生成(KAG:Knowledge Augmented Generation)框架,并于2024年10月正式開源(GitHub地址:https://github.com/OpenSPG/KAG)。

KAG框架創新性地融合知識圖譜的邏輯符號推理向量檢索的語義相似性,在政務問答場景中將準確率從傳統RAG的66%提升至91%,醫療垂直領域指標解讀任務準確率突破90%,多跳問答任務F1分數較SOTA方法提升19.6%-33.5%。本文將從技術架構、核心特性、性能對比、安裝實踐、應用場景五個維度,全面解析這一專業領域知識服務框架。

技術架構:三模塊協同,構建知識增強閉環

KAG框架采用模塊化設計,由KAG-Builder(知識構建)、KAG-Solver(推理求解)、KAG-Model(模型增強)三部分組成,形成"知識構建-推理檢索-生成優化"的完整閉環。

1. KAG-Builder:LLM友好的知識表示與互索引構建

傳統知識圖譜構建面臨"強Schema約束導致數據稀疏"與"開放抽取引入噪聲"的矛盾,KAG-Builder通過LLMFriSPG框架(LLM-Friendly Semantic-enhanced Programmable Graph)解決這一問題:

  • 知識分層表示:基于DIKW模型(數據-信息-知識-智慧)將知識分為三層:

    • 知識層(KGcs):嚴格遵循領域Schema約束(如政務事項的"辦理流程"、"申請材料"等預定義關系),確保邏輯嚴謹性;
    • 信息層(KGfr):通過開放信息抽取(OpenIE)提取實體與關系,支持動態屬性擴展;
    • 原始塊層(RC):保留語義分塊后的文本片段,與知識層/信息層建立雙向索引。
  • 互索引機制:在知識圖譜節點與文本塊之間建立關聯,例如"增值稅申報"實體節點關聯政策文件中對應的段落,既支持基于圖結構的精確檢索,又保留文本上下文的完整性。

2. KAG-Solver:邏輯符號引導的混合推理引擎

KAG-Solver是框架的核心創新,通過邏輯形式(Logical Form) 將自然語言問題轉化為可執行的符號推理步驟,支持四種推理模式集成:

  • 規劃(Planning):將復雜問題分解為子任務,例如"2023年杭州市GDP同比增速"→拆解為"獲取杭州2022年GDP→獲取2023年GDP→計算增速";
  • 推理(Reasoning):執行知識圖譜多跳推理,如通過"企業→控股子公司→行業分類"鏈路判斷同業競爭;
  • 檢索(Retrieval):融合向量檢索(語義相似)與圖檢索(實體關系),召回相關文本塊與知識三元組;
  • 計算(Calculation):支持數值運算(如求和、比較)與邏輯判斷(如矛盾檢測)。

示例:在"某新能源車企近三年研發投入是否超過行業平均"問題中,KAG-Solver先檢索企業財報數據與行業報告,再通過內置算子計算均值并對比趨勢,最終生成結論。

3. KAG-Model:增強LLM的領域適配能力

KAG-Model通過三項優化提升LLM在專業領域的表現:

  • 自然語言理解(NLU):基于2萬+領域指令數據集微調,提升實體識別與關系抽取精度;
  • 自然語言推理(NLI):構建概念推理數據集,增強語義對齊能力(如"心肌梗塞"與"心梗"的同義關聯);
  • 自然語言生成(NLG):通過K-Lora技術注入知識圖譜結構,使生成內容符合領域規范(如醫療報告的"癥狀-診斷-治療"邏輯鏈)。

核心特性:四大創新突破傳統RAG局限

1. Schema約束與開放抽取的雙向兼容

KAG允許用戶定義領域專屬Schema(如醫療領域的"疾病-癥狀-藥品"關系),同時支持無Schema的開放抽取。例如在政務知識庫中,既可以通過Schema約束提取"行政許可"的標準化屬性,又能從政策解讀文本中抽取動態熱點信息,兼顧專業性與靈活性。

2. 多跳推理與邏輯嚴謹性保障

傳統RAG依賴向量相似度檢索,難以處理"某企業的子公司是否涉及環保處罰"這類多跳問題。KAG通過邏輯符號拆解圖路徑搜索,支持最長6跳的推理鏈路,推理深度較GraphRAG提升3倍。在法律合同審查場景中,KAG可自動檢測條款間的邏輯沖突(如"合同有效期"與"付款截止日"的時間矛盾)。

3. 知識對齊與噪聲過濾機制

針對開放信息抽取引入的噪聲(如實體歧義、關系錯誤),KAG通過概念語義推理實現知識對齊:

  • 實體消歧:通過上下文判斷"蘋果"是"水果"還是"科技公司";
  • 術語歸一化:將"增值稅專票"、"增值稅專用發票"統一為標準術語;
  • 沖突檢測:基于領域知識規則修正錯誤三元組(如"糖尿病→病因→病毒感染"的醫學常識錯誤)。

4. 多模態知識管理與雙向索引

KAG支持PDF、Word、Excel等多格式文檔解析,將表格數據(如企業財務報表)、文本段落(如政策條文)、結構化數據(如數據庫表)統一納入知識圖譜,并建立"文檔→實體→關系"的雙向索引。用戶查詢時,既能看到答案引用的原始文本片段,也能可視化知識圖譜中的推理路徑,提升可解釋性。

性能對比:從實驗室到業務場景的全面領先

1. 基準數據集性能

在多跳問答權威數據集上,KAG顯著優于傳統RAG與GraphRAG:

指標傳統RAGGraphRAGKAG(本文)提升幅度
HotpotQA F168.2%75.3%89.4%+19.6%
2Wiki F156.7%62.1%83.0%+33.5%
推理速度(跳/秒)1.22.54.8+92%

2. 真實業務場景效果

在螞蟻集團內部業務驗證中,KAG展現出專業領域的高適配性:

  • 政務問答:某省政務服務平臺接入KAG后,政策解讀準確率從66%提升至91%,用戶滿意度提升42%;
  • 醫療診斷支持:病歷分析任務中,KAG對"癥狀-疾病"關聯的推理準確率達82.3%,較傳統RAG降低37%的誤診風險;
  • 金融風控:企業股權關系多跳推理準確率達90.5%,成功識別3起多層控股的同業競爭案例。

快速上手:兩種部署方式與核心代碼示例

1. 產品版(Docker一鍵部署)

適合快速體驗,支持可視化知識庫管理:

# 1. 下載docker-compose.yml
curl -sSL https://raw.githubusercontent.com/OpenSPG/openspg/master/dev/release/docker-compose.yml -o docker-compose.yml# 2. 啟動服務(包含Neo4j、MySQL、KAG-Server)
docker compose -f docker-compose.yml up -d# 3. 訪問Web界面(默認賬號:openspg/openspg@kag)
http://localhost:8887

2. 開發者模式(源碼部署)

適合二次開發,支持自定義Schema與推理算子:

# 1. 創建虛擬環境
conda create -n kag-demo python=3.10 && conda activate kag-demo# 2. 克隆代碼
git clone https://github.com/OpenSPG/KAG.git && cd KAG# 3. 安裝依賴
pip install -e .# 4. 驗證安裝
knext --version  # 輸出:knext, version 0.8.0

3. 核心代碼示例:構建醫療知識庫

from kag import KnowledgeBuilder# 1. 定義醫療領域Schema
medical_schema = {"疾病類型": ["癥狀", "治療方案", "相關檢查"],"藥品": ["適應癥", "禁忌癥", "相互作用"]
}# 2. 初始化構建器
builder = KnowledgeBuilder(schema=medical_schema)# 3. 添加文檔(支持PDF/Word/Markdown)
builder.add_document("糖尿病診療指南.pdf")# 4. 構建知識圖譜
kg = builder.build()# 5. 多跳查詢:"糖尿病患者出現視力模糊應做哪些檢查?"
result = kg.query("糖尿病患者出現視力模糊應做哪些檢查?")
print(result)
# 輸出:根據知識圖譜推理,建議進行眼底檢查、血糖監測、糖化血紅蛋白檢測...

應用場景:從政務到醫療的深度落地

1. 政務服務:政策解讀與事項辦理

KAG已應用于某省級政務服務平臺,支持:

  • 多條件組合查詢:如"杭州市西湖區企業辦理食品經營許可證需要哪些材料";
  • 流程推理:自動生成"企業注冊→稅務登記→社保開戶"的跨部門辦理指南;
  • 動態更新:政策文件發布后24小時內完成知識圖譜更新,確保回答時效性。

2. 醫療健康:病歷分析與診斷支持

在醫療場景中,KAG可:

  • 癥狀關聯:從病歷文本中提取"高血壓+蛋白尿+水腫"癥狀,推理可能病因;
  • 治療方案推薦:結合患者病史(如藥物過敏)篩選合適的降壓藥;
  • 醫學文獻整合:將最新臨床研究與指南納入知識庫,輔助醫生決策。

3. 金融風控:企業關系與風險識別

金融機構利用KAG構建企業知識圖譜,實現:

  • 股權穿透:識別"母公司→子公司→孫公司"的多層控股關系;
  • 風險傳導:當某企業出現債務違約時,自動評估關聯企業的擔保風險;
  • 合規審查:檢測融資項目是否符合"綠色金融"政策要求。

未來展望:開源生態與技術演進

KAG框架目前已迭代至v0.8.0版本,后續將重點推進:

  • KAG-Model開源:逐步開放針對知識增強優化的LLM權重與微調工具;
  • 多模態支持:引入圖像、表格知識的結構化表示(如醫療影像報告的圖文關聯);
  • 社區生態:發布領域Schema模板庫(政務、醫療、法律等),降低開發者使用門檻。

結語

KAG框架通過"知識圖譜+向量檢索"的深度融合,為專業領域知識服務提供了新范式。其91%的政務問答準確率不僅是技術指標的突破,更意味著LLM在醫療、金融、法律等高風險領域的落地成為可能。對于開發者而言,KAG的開源特性(MIT許可證)與模塊化設計,使其既能快速集成到現有系統,又支持按需擴展自定義功能。

如需進一步探索,可參考:

  • GitHub倉庫:https://github.com/OpenSPG/KAG
  • 技術論文:https://arxiv.org/pdf/2409.13731

隨著KAG的持續演進,我們期待看到更多"高精度、可解釋、強邏輯"的專業領域AI應用落地,推動大模型從通用對話向行業決策的深度滲透。

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

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

相關文章

V-Ray 7.00.08 for 3ds Max 2021-2026 安裝與配置教程(含語言補丁)

本文介紹 V-Ray 7.00.08 渲染器在 3ds Max 2021-2026 各版本中的安裝與使用配置步驟,適合需要進行可視化渲染工作的設計師、建筑師及相關從業者。附帶語言補丁配置方式,幫助用戶獲得更順暢的使用體驗。 📁 一、安裝文件準備 軟件名稱&#xf…

Go-Elasticsearch Typed Client查詢請求的兩種寫法強類型 Request 與 Raw JSON

1 為什么需要兩種寫法? 在 Golang 項目中訪問 Elasticsearch,一般會遇到兩類需求:需求場景特點最佳寫法后臺服務 / 業務邏輯查詢固定、字段清晰,需要編譯期保障Request 結構體儀表盤 / 高級搜索 / 模板 DSL查詢片段由前端或腳本動…

Leaflet 綜合案例-聚類圖層控制

看過的知識不等于學會。唯有用心總結、系統記錄,并通過溫故知新反復實踐,才能真正掌握一二 作為一名摸爬滾打三年的前端開發,開源社區給了我飯碗,我也將所學的知識體系回饋給大家,助你少走彎路! OpenLayers…

React組件中的this指向問題

在 React 組件中,函數定義方式影響this指向的核心原因是箭頭函數與普通函數的作用域綁定規則不同,具體差異如下:? 1. 普通函數(function定義)需要手動bind(this)的原因? 當用function在組件內定義方法時&#xff1…

Vue 項目中的組件引用如何實現,依賴組件間的數據功能交互及示例演示

在 Vue 項目中,組件間的引用與數據交互是核心功能之一。以下是組件引用和數據交互的詳細實現方式及示例:一、組件引用方式 1. 基本組件引用 局部注冊:在父組件中按需引入子組件并注冊。 // ParentComponent.vue import ChildComponent from .…

? 使用 Flask 實現頭像文件上傳與加載功能

文章目錄&#x1f9f1; 技術棧&#x1f5c2;? 項目結構與配置&#x1f510; 用戶身份校驗邏輯&#x1f4e4; 頭像上傳接口&#xff1a;/file/avatar/upload&#x1f4e5; 加載頭像接口&#xff1a;/file/avatar/load/<filename>&#x1f9ea; 示例請求&#xff08;使用 …

去除視頻字幕 5: 使用 ProPainter, 記錄探索過程

使用 ProPainter 去除視頻上的字幕&#xff0c;效果演示&#xff08;比之前好多了。&#xff09;。 1. 項目目標 去除視頻 (bear.webm) 中的硬字幕。 2. 初始嘗試與關鍵失敗&#xff1a;IOPaint 方法: 使用 IOPaint&#xff08;一個圖像修復工具&#xff09;配合 PaddleOCR 逐…

JavaScript HTTP 請求:從老古董到新潮流

前端開發離不開跟后端打交道&#xff0c;HTTP 請求就是這座橋梁。JavaScript 提供了好幾種方式來發請求&#xff0c;從老牌的 XMLHttpRequest (XHR) 到現代的 Fetch API&#xff0c;再到各種好用的第三方庫&#xff08;像 Axios、Ky、Superagent&#xff09;。咱們一個一個聊清…

Windows10系統使用Cmake4.1.0構建工具+Visual Studio2022編譯Opencv4.11教程

安裝提示 后續安裝本Cmake和Opencv版本及以上都可以。Microsoft Visual Studio2022已默認安裝&#xff0c;沒有安裝給出教程鏈接。 一、Cmake4.1.0下載 1.官網下載&#xff1a;https://cmake.org/download/&#xff0c;找到cmake-4.1.0-rc3-windows-x86_64.zip版本 2.壓縮包…

【性能測試】Jmeter+Grafana+InfluxDB+Prometheus Windows安裝部署教程

一、工具作用與整體架構 1.1 各工具核心作用 工具作用描述關鍵特性Jmeter性能測試工具&#xff0c;模擬多用戶并發請求&#xff0c;生成測試數據支持HTTP/HTTPS、數據庫等多種協議&#xff0c;可自定義測試場景InfluxDB時序數據庫&#xff0c;專門存儲時間序列數據&#xff0…

【Kubernetes】使用Deployment進行的資源調度,資源清理,伸縮與更新管控

Kubernetes Deployment 實戰&#xff1a;從資源清理到伸縮與更新管控 一、基礎準備&#xff1a;清理閑置 ReplicaSet 在使用 Deployment 時&#xff0c;每次更新都會生成新的 ReplicaSet&#xff08;簡稱 RS&#xff09;&#xff0c;舊的 RS 會被保留但設置為 DESIRED0。這些閑…

stm32使用USB虛擬串口,因電腦缺少官方驅動而識別失敗(全系列32單片機可用)

驅動下載地址 官網地址&#xff1a;https://www.st.com/en/development-tools/stsw-stm32102.html

枚舉中間位置基礎篇

參考資料來源靈神在力扣所發的題單&#xff0c;僅供分享學習筆記和記錄&#xff0c;無商業用途。 核心思路&#xff1a; 一&#xff1a;直接直接用數據結構記錄需要的數據&#xff0c;在枚舉右&#xff0c;維護左的循環中&#xff0c;刪除當前位置的元素即可達成一樣效果 二…

企業選擇將服務器放在IDC機房托管的優勢

在服務器作為數據存儲和傳輸的核心設備的社會環境中&#xff0c;服務器的穩定性和安全性會直接影響到企業業務的連續性和用戶的滿意程度&#xff0c;隨著云計算技術和大數據的興起&#xff0c;企業對于服務器的需求也在日益增加&#xff0c;而如何高效、安全的管理服務器則是各…

自動化UI測試工具TestComplete的AI雙引擎:即時數據集 + 自愈測試

隨著敏捷開發和持續交付模式的普及&#xff0c;傳統的軟件測試方法正面臨著前所未有的挑戰。測試團隊在追求快速迭代的同時&#xff0c;往往陷入測試數據準備和測試維護的泥潭&#xff0c;嚴重制約了交付效率和質量保障能力。 TestComplete作為業界領先的自動化測試工具&#…

用KNN實現手寫數字識別:基于 OpenCV 和 scikit-learn 的實戰教學 (超級超級超級簡單)

用KNN實現手寫數字識別&#xff1a;基于 OpenCV 和 scikit-learn 的實戰教學在這篇文章中&#xff0c;我們將使用 KNN&#xff08;K-Nearest Neighbors&#xff09;算法對手寫數字進行分類識別。我們會用 OpenCV 讀取圖像并預處理數據&#xff0c;用 scikit-learn 構建并訓練模…

數據結構自學Day15 -- 非比較排序--計數排序

一、計數排序&#xff08;Counting Sort&#xff09;計數排序是一種非比較型的排序算法&#xff0c;它的核心思想是&#xff1a;利用“元素的值”來確定它在結果數組中的位置&#xff0c;通過“統計每個數出現的次數”來完成排序。二、如何實現計數排序&#xff08;核心步驟&am…

k8s的權限

來自博客&#xff1a;25-k8s集群中-RBAC用戶角色資源權限_權限 資源 角色-CSDN博客 一.RBAC概述&#xff08;基于角色的訪問控制&#xff09; 1.圖解 用戶&#xff1a; 1.user 2.serviceAccount 3.Group 用戶角色 1.Role:局部資源角色 2.clusterRole:全局資源角色額 角色綁…

C++ - 仿 RabbitMQ 實現消息隊列--服務端核心模塊實現(三)

目錄 隊列數據管理 代碼實現 測試代碼 綁定信息(交換機-隊列)管理 代碼實現 測試代碼 隊列數據管理 當前隊列數據的管理&#xff0c;本質上是隊列描述信息的管理&#xff0c;描述當前服務器上有哪些隊列。 定義隊列描述數據類 隊列名稱是否持久化標志是否獨占標志是否自…

51c自動駕駛~合集9

自己的原文哦~ https://blog.51cto.com/whaosoft/11627386 #端到端1 說起端到端&#xff0c;每個從業者可能都覺得會是下一代自動駕駛量產方案繞不開的點&#xff01;特斯拉率先吹響了方案更新的號角&#xff0c;無論是完全端到端&#xff0c;還是專注于planner的模…