OpenSPG:蚂蚁与 OpenKG 联合推出多场景适用的智能知识图谱引擎

759 阅读6分钟

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. OpenSPG 是蚂蚁集团与 OpenKG 社区联合推出的知识图谱引擎。
  2. OpenSPG 基于创新的 SPG 框架,融合 LPG 结构性和 RDF 语义性。
  3. OpenSPG 提供语义建模、知识构建、逻辑规则推理等功能,适用于多种业务场景。

正文(附运行示例)

OpenSPG 是什么

openspg.png

OpenSPG 是蚂蚁集团与 OpenKG 社区联合推出的知识图谱引擎。它基于 SPG 框架,融合 LPG 结构性和 RDF 语义性,提供明确的语义表示、逻辑规则定义和算子框架等能力,支持各厂商可插拔的适配基础引擎和算法服务,构建自定义的解决方案。

OpenSPG 的主要功能

  • 语义建模(SPG-Schema):负责属性图语义增强的 Schema 框架设计,包括主体模型、演化模型、谓词模型等。
  • 知识构建(SPG-Builder):支持结构化和非结构化知识导入,与大数据架构兼容,提供知识构建算子框架,实现数据到知识的转换。
  • 逻辑规则推理(SPG-Reasoner):抽象 KGDSL(Knowledge Graph Domain Specific Language),为逻辑规则提供可编程的符号化表示,支持规则推理和神经/符号融合学习。
  • 可编程框架(KNext):提供可扩展、流程化、用户友好的组件化能力,实现引擎与业务逻辑、领域模型的隔离,快速定义图谱解决方案。
  • 云适配层(Cloudext):支持业务系统基于 SDK 对接开放引擎,构建业务前端,适配自定义的图存储/图计算引擎和机器学习框架。

OpenSPG 的技术原理

  • 属性图的语义表示:OpenSPG 框架创造性地融合了 LPG(Labeled Property Graph)的结构性和 RDF(Resource Description Framework)的语义性,提供一种既简单又具有丰富语义的图表示方法。
  • 知识层级间的兼容递进:OpenSPG 支持在非完备数据状态下构建和持续迭代演化图谱,支持在数据不完整或变化的情况下进行知识图谱的构建和管理。
  • 大数据与 AI 技术体系的衔接:OpenSPG 框架有效衔接大数据技术和 AI 技术,支持对海量数据进行高效的知识化转换,提升数据和应用的价值。
  • 领域知识模型及算子的开发:新的业务场景基于扩展领域知识模型及开发新算子,快速构建领域模型和解决方案。
  • 逻辑规则和语义规则的定义:基于 KGDSL 定义逻辑规则,让机器理解和处理复杂的业务逻辑,支持规则推理和神经/符号融合学习。

如何运行 OpenSPG

安装服务器

OpenSPG 的服务器基于 Docker Compose 部署,主要包括 4 个镜像:

镜像名称描述
openspg-server提供模式服务
openspg-mysql存储模式数据
tugraph存储知识图谱数据
elasticsearch索引知识图谱数据

下载文件:docker-compose.yml,并在当前目录下执行以下命令:

docker-compose -f docker-compose.yml up -d

安装客户端

客户端也提供了一个 Docker 镜像。执行以下命令将拉取镜像:

docker pull --platform linux/x86_64 openspg/openspg-python:latest

下载镜像后,您可以克隆 OpenSPG 源代码:

git clone git@github.com:OpenSPG/openspg.git

克隆源代码后,您可以探索内置的示例。

# 启动容器并将 ${project_dir} 替换为源代码目录
docker run --rm --net=host -v ${project_dir}:/code \
-it openspg/openspg-python:latest \
"/bin/bash"

# 容器启动后,导航到 /code 目录,这是 openspg 项目源代码目录
cd /code

# 然后可以继续安装示例教程,例如进入 riskmining 目录
cd python/knext/knext/examples/riskmining

# 参考示例教程并执行相应的 knext 命令,例如
knext project create --prj_path .

knext schema commit

knext builder execute ...

knext reasoner execute ...

此外,当您在本地使用 IDE 开发知识图谱项目时,可以执行以下命令安装 knext:

pip install openspg-knext

运行案例:企业供应链图谱

概述

关键词:语义属性、实体动态多分类、层级业务知识与事实数据背景下的知识应用。

Risk Mining Knowledge Graph

快速开始

  1. 进入项目目录
cd python/knext/knext/examples/riskmining/
  1. 初始化项目

执行以下命令初始化项目:

knext project create --prj_path .
  1. 提交项目模式

模式文件已创建。执行以下命令提交:

knext schema commit

提交风险用户的分类概念和风险应用的分类概念:

knext builder execute TaxOfRiskUser,TaxOfRiskApp
knext schema reg_concept_rule --file ./schema/concept.rule
  1. 构建知识

提交知识导入任务。

knext builder execute Cert,Company,CompanyHasCert
knext builder execute App,Device,Person,PersonFundTrans,PersonHasDevice,PersonHoldShare
  1. 执行查询任务

OpenSPG 支持 ISO GQL 语法,您可以使用以下命令行执行查询任务:

knext reasoner execute --dsl "${ql}"

场景 1:语义属性与文本属性的比较

Semantic vs Text Attributes

编辑 dsl_task.txt 文件并输入以下查询:

MATCH
(phone:STD.ChinaMobile)<-[:hasPhone]-(u:RiskMining.Person)
RETURN
u.id,phone.id

执行查询:

knext reasoner execute --dsl "${ql}"

场景 2:实体动态多分类

注意:本节定义的分类规则已在之前的“3. 提交项目模式”章节中使用 knext schema reg_concept_rule 命令提交。

规则的详细内容也可以在文件 The concept rules 中找到。

应用的分类

王五是一名应用开发者,李四是一名应用的所有者。这两个用户实体对应不同的概念类型。

开发者识别规则:

规则:如果一个用户拥有超过 5 个设备,并且这些设备安装了相同的 app,则存在开发关系。

识别应用的所有者

规则 1:人和应用之间存在发布关系。

规则 2:用户向应用开发者交互,存在发布应用的关系。

场景 3:层级业务知识与事实数据背景下的知识应用

我们可以使用 GQL 查询非法应用对应的团伙信息。

检索所有应用

编辑 dsl_task1.txt 并输入以下查询:

# 查询代码

执行查询:

knext reasoner execute --dsl "${ql}"
检索应用的开发者和所有者

编辑 dsl_task2.txt 并输入以下查询:

# 查询代码

执行查询:

knext reasoner execute --dsl "${ql}"

资源

  • OpenSPG 官网:spg.openkg.cn
  • OpenSPG GitHub 仓库:github.com/OpenSPG/openspg

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦