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