项目介绍:typedb-ml
typedb-ml 项目是一个专门为 TypeDB
提供工具的项目,以实现图形算法和机器学习支持。然而,需要注意的是,这个项目已经过时,并将于2023年底关闭。因此,本项目不再获得支持。
项目概述
typedb-ml 原名为 KGLIB,它的主要功能是为 TypeDB 提供图形算法和机器学习支持。该项目整合了 NetworkX 和 PyTorch Geometric (PyG) 的功能,使开发者能够利用这两个强大的库进行数据处理和分析。
主要功能
NetworkX 集成
- 图结构声明:用户可以声明查询的图结构,并可选择使用采样函数。
- 图构建:通过查询 TypeDB 实例,用户可以将多个查询的结果合并为一个整体的图结构。
PyTorch Geometric (PyG) 集成
DataSet
对象:用于从 TypeDB 实例中按需加载图数据。每个图数据会被转换为 PyG 的Data
对象。HeteroData
对象:更适合处理 TypeDB 的因为所有数据在 TypeDB 中都有类型。PyG 提供Data
到HeteroData
的转换,但会失去节点排序信息。为了弥补这一点,typedb-ml 提供store_concepts_by_type
以便在学习完成后正确地重新关联概念到预测结果。- 特征编码器:协调编码器以生成图特征。
- 连续值和分类值的编码器:用于将编码/嵌入空间应用于 TypeDB 数据中的类型和属性值。
- 联结预测示例:提供了一个完整的示例用于联结预测。
资源和参考
以下资源特别有助于理解 typedb-ml 项目创立的初衷:
- 《强类型数据及其在机器学习中的应用》(YouTube, 2021)
- 《我们如何完成一个知识图谱?》(YouTube, 2018)
快速入门
安装说明
- Python 版本要求:3.7.x 及以上
- 安装依赖:可以从项目中的
requirements.txt
文件中安装所需的库。由于 PyG 的依赖关系较为复杂,可以参考该文件。 - 安装 typedb-ml:使用命令
pip install typedb-ml
。 - TypeDB 和 Client:需要在后台运行 TypeDB 2.11.1,并且
typedb-client-python
2.11.x 会在安装 typedb-ml 时自动下载。
示例运行
可以查看 PyTorch Geometric 的复杂联结预测示例,以了解如何使用 typedb-ml 在 TypeDB 数据上构建 GNN(图神经网络)。
开发说明
- 开发互动:可加入 Vaticle Discord 的
#typedb-ml
频道,或者在 Vaticle 讨论论坛上发起新话题。 - 数据迁移要求:typedb-ml 要求用户将数据迁移至 TypeDB 或 TypeDB Cluster 实例。可以参阅官方示例库获取相关信息。
从源代码构建
如果需要对库进行自定义修改,从而导入项目,可以按以下步骤从源代码构建:
-
克隆仓库:
git clone git@github.com:vaticle/typedb-ml.git
-
进入项目目录:
cd typedb-ml
-
构建所有目标:
bazel build //...
-
运行所有测试(需 Python 3.7+):
bazel test //typedb_ml/... --test_output=streamed --spawn_strategy=standalone --action_env=PATH
-
构建 pip 分发包,输出至
bazel-bin
:bazel build //:assemble-pip