❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- OpenSPG 是蚂蚁集团与 OpenKG 社区联合推出的知识图谱引擎。
- OpenSPG 基于创新的 SPG 框架,融合 LPG 结构性和 RDF 语义性。
- OpenSPG 提供语义建模、知识构建、逻辑规则推理等功能,适用于多种业务场景。
正文(附运行示例)
OpenSPG 是什么
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
运行案例:企业供应链图谱
概述
关键词:语义属性、实体动态多分类、层级业务知识与事实数据背景下的知识应用。
快速开始
- 进入项目目录
cd python/knext/knext/examples/riskmining/
- 初始化项目
执行以下命令初始化项目:
knext project create --prj_path .
- 提交项目模式
模式文件已创建。执行以下命令提交:
knext schema commit
提交风险用户的分类概念和风险应用的分类概念:
knext builder execute TaxOfRiskUser,TaxOfRiskApp
knext schema reg_concept_rule --file ./schema/concept.rule
- 构建知识
提交知识导入任务。
knext builder execute Cert,Company,CompanyHasCert
knext builder execute App,Device,Person,PersonFundTrans,PersonHasDevice,PersonHoldShare
- 执行查询任务
OpenSPG 支持 ISO GQL 语法,您可以使用以下命令行执行查询任务:
knext reasoner execute --dsl "${ql}"
场景 1:语义属性与文本属性的比较
编辑 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 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦