简介
Neo4j 图数据科学 (GDS) 库提供了高效实现且并行的常见图算法版本,这些算法以 Cypher 过程的形式公开。此外,GDS 还包括机器学习管道,用于训练预测性监督模型以解决图问题,例如预测缺失关系。
API 层级
GDS API 包含 Cypher 过程和函数。每个都在三个成熟度层级之一中存在:
- 生产质量
-
表明该功能已在稳定性与可伸缩性方面经过测试。
- 测试版
-
表明该功能是生产质量层级的候选。
- Alpha 版
-
表明该功能是实验性的,随时可能更改或移除。
《操作参考》列出了 GDS 中所有操作及其所属层级。
算法
图算法用于计算图、节点或关系的度量。
它们可以提供关于图中相关实体(中心性、排名)或固有结构(如社区(社区检测、图分区、聚类))的洞察。
许多图算法是迭代方法,它们通过随机游走、广度优先或深度优先搜索,或模式匹配来频繁遍历图以进行计算。
由于随着距离的增加,可能路径呈指数级增长,因此许多方法也具有较高的算法复杂度。
幸运的是,存在优化的算法,它们利用图的特定结构,记忆已探索的部分,并并行化操作。在可能的情况下,我们已应用了这些优化。
Neo4j 图数据科学库包含大量算法,这些算法在《算法》章节中详细介绍。
算法特性
GDS 中的算法具有利用其输入图的各个方面的特定方式。我们称之为 算法特性。
算法特性可以是:
-
支持:算法利用该特性并产生明确定义的结果;
-
允许:算法不利用该特性但仍产生结果;
-
不支持:算法不利用该特性,并且给定具有该特性的图时,将返回错误。
存在以下算法特性:
- 有向
-
该算法在有向图上是明确定义的。
- 无向
-
该算法在无向图上是明确定义的。
- 异构
-
该算法能够区分不同类型的节点和/或关系。
- 异构节点
-
该算法能够区分不同类型的节点。
- 异构关系
-
该算法能够区分不同类型的关系。
- 加权关系
-
该算法支持配置关系属性作为权重。这些值可以表示 成本、时间、容量 或其他特定领域属性,通过 relationshipWeightProperty 配置参数指定。默认情况下,算法会将每种关系视为同等重要。
图目录
为了尽可能高效地运行算法,GDS 使用一种专门的图格式来表示图数据。因此,有必要将图数据从 Neo4j 数据库加载到内存图目录中。加载的数据量可以通过图投影来控制,图投影还允许,例如,对节点标签和关系类型进行过滤等选项。
欲了解更多信息,请参阅《图管理》。
版本
Neo4j 图数据科学库提供两个版本。默认情况下,GDS 将作为社区版运行。要解锁企业版功能,需要有效的 Neo4j 图数据科学企业版许可证文件。有关如何配置许可证,请参阅《GDS 企业版》。
-
开源社区版
-
包含所有算法。
-
将目录操作限制为管理图和模型。不可用的操作列在下面的企业版中。
-
将模型目录的容量限制为 3 个模型。
-
-
Neo4j 图数据科学库企业版
-
支持在任意数量的 CPU 核上运行。
-
支持将 GDS 写入工作负载作为Neo4j 集群部署的一部分运行。
-
支持容量和负载监控。
-
支持扩展的图目录功能,包括:
-
图备份和恢复。
-
通过 Apache Arrow 进行数据导入和导出。
-
-
支持扩展的模型目录功能,包括:
-
支持默认启用的优化图实现。
-
支持默认值和限制的配置。
-