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