KAG:基于 OpenSPG 引擎的知识增强生成框架

文摘   2024-10-31 15:04   北京  

项目简介

检索增强生成(RAG)技术推动了领域应用与大模型结合。然而,RAG 存在着向量相似度与知识推理相关性差距大、对知识逻辑(如数值、时间关系、专家规则等)不敏感等问题,这些都阻碍了专业知识服务的落地。

2024 年 10 月 24 日,OpenSPG 发布 v0.5 版本,正式发布了知识增强生成(KAG)的专业领域知识服务框架。KAG 旨在充分利用知识图谱和向量检索的优势,并通过四个方面双向增强大型语言模型和知识图谱,以解决 RAG 挑战:(1) 对 LLM 友好的知识表示,(2) 知识图谱与原文片段之间的互索引,(3) 逻辑形式引导的混合推理引擎,(4) 与语义推理的知识对齐。

KAG 在多跳问答任务中显著优于 NaiveRAG、HippoRAG 等方法,在 hotpotQA 上的 F1 分数相对提高了 19.6%,在 2wiki 上的 F1 分数相对提高了 33.5%。我们已成功将 KAG 应用于蚂蚁集团的两个专业知识问答任务,包括电子政务问答和电子健康问答,与 RAG 方法相比,专业性有了显著提高。


1.1 技术架构

图1 KAG 技术架构

KAG 框架包括 kg-builder、kg-solver、kag-model 三部分。本次发布只涉及前两部分,kag-model 将在后续逐步开源发布。

kg-builder 实现了一种对大型语言模型(LLM)友好的知识表示,在 DIKW(数据、信息、知识和智慧)的层次结构基础上,升级 SPG 知识表示能力,在同一知识类型(如实体类型、事件类型)上兼容无 schema 约束的信息提取和有 schema 约束的专业知识构建,并支持图结构与原始文本块之间的互索引表示,为推理问答阶段的高效检索提供支持。

kg-solver 采用逻辑形式引导的混合求解和推理引擎,该引擎包括三种类型的运算符:规划、推理和检索,将自然语言问题转化为结合语言和符号的问题求解过程。在这个过程中,每一步都可以利用不同的运算符,如精确匹配检索、文本检索、数值计算或语义推理,从而实现四种不同问题求解过程的集成:检索、知识图谱推理、语言推理和数值计算。


1.2 知识表示

私域知识库场景,非结构化数据、结构化信息、业务专家经验 往往三者共存,KAG 参考了 DIKW 层次结构,将 SPG 升级为对 LLM 友好的版本。针对新闻、事件、日志、书籍等非结构化数据,交易、统计、审批等结构化数据,业务经验、领域知识等规则,KAG 采用版面分析、知识抽取、属性标化、语义对齐等技术,将原始的业务数据&专家规则融合到统一的业务知识图谱中。

这使得它能够在同一知识类型(如实体类型、事件类型)上兼容无 schema 约束的信息提取和有 schema 约束的专业知识构建,并支持图结构与原始文本块之间的互索引表示。这种互索引表示有助于基于图结构的倒排索引的构建,并促进了逻辑形式的统一表示、推理。


1.3 逻辑形式引导的混合推理

KAG 提出了一种逻辑形式引导的混合求解和推理引擎。该引擎包括三种类型的运算符:规划、推理和检索,将自然语言问题转化为结合语言和符号的问题求解过程。在这个过程中,每一步都可以利用不同的运算符,如精确匹配检索、文本检索、数值计算或语义推理,从而实现四种不同问题求解过程的集成:检索、知识图谱推理、语言推理和数值计算。


2. 效果如何

2.1 公开数据集的效果(多跳推理)

经过优化,我们不仅验证了 KAG 在垂直领域的适应性,我们还在通用数据集多跳问答中与现有 RAG 方法进行了比较,发现它明显优于 SOTA 方法,在 2wiki 上 F1 相对提升 33.5%,在 hotpotQA 上相对提高 19.6% 。我们正在继续优化这一框架,并通过端到端实验和消融实验指标证明了其有效性。通过逻辑符号驱动的推理和概念对齐的方式,我们证实了这一框架的有效性。


2.2 领域知识场景的效果(风险挖掘)

2.2.1 专家规则定义

  • 定义“赌博APP”认定规则

    define riskAppTaxo rule

Define (s:App)-[p:belongTo]->(o:`TaxOfRiskApp`/`GamblingApp`) {    Structure {        (s)    }    Constraint {        R1("risk label marked as gambling") s.riskMark like "%Gambling%"  }}
  • 定义 “App开发者”认定规则

define app developper rule

Define (s:Person)-[p:developed]->(o:App) {    Structure {        (s)-[:hasDevice]->(d:Device)-[:install]->(o)    }    Constraint {        deviceNum = group(s,o).count(d)        R1("device installed same app"): deviceNum > 5    }}

  • 定义 “赌博App 开发者”认定规则

define a RiskUser of gambling app rule

Define (s:Person)-[p:belongTo]->(o:`TaxOfRiskUser`/`DeveloperOfGamblingApp`) {    Structure {        (s)-[:developed]->(app:`TaxOfRiskApp`/`GamblingApp`)    }    Constraint {    }}

2.2.2 业务数据

2.2.3 推理过程

推理过程中,关键步骤如下几步。

  • 将自然语言问题转换成可执行的逻辑表达式,此处依赖的是项目下的概念建模,可参考黑产挖掘文档。

  • 将转换的逻辑表达式提交到 OpenSPG reasoner 执行,得到用户的分类结果。

  • 将用户的分类结果进行答案生成。

KAG 结合 OpenSPG 概念建模,可以降低自然语言转换图查询的难度,将面向数据的转换变为面向分类概念的转换,可在原有 OpenSPG 项目上快速实现自然语言问答的领域应用。


项目链接

http://github.com/OpenSPG/KAG

扫码加入技术交流群,备注开发语言-城市-昵称

合作请注明


 

关注「GitHubStore」公众号


GitHubStore
分享有意思的开源项目
 最新文章