在图更改时更新 Neo4j 嵌入

问题描述 投票:0回答:1

我正在使用 Neo4j 图形数据科学 (GDS) 库和快速随机投影 (FastRP) 进行图形嵌入。我面临着有效更新这些嵌入以响应频繁的图形更改(节点和边的添加/删除)的挑战。我特别有兴趣了解更新这些嵌入的最佳实践 - 我应该选择在每次更改后进行增量更新,还是定期进行批处理?

此外,我很好奇是否可以仅更新受影响子图的嵌入,同时保持嵌入的完整性和一致性,就像在全局图投影上完成一样。

neo4j cypher graph-databases graph-data-science
1个回答
0
投票

图表变化的频率将决定你是否应该批量处理。

对于你的主要问题,FastRP 取决于一个节点及其邻居、这些节点的邻居、这些节点的邻居等等。

有一个配置参数 IterationWeights 可以做两件事:

  1. 确定要查看的邻居-邻居-邻居的数量。
  2. 确定每个分离程度的相关程度。

如果将 IterationWeights 设置为 [1.0],FastRP 将仅查看直接邻居。

如果使用 [0.0, 1.0],则将使用一级和二级邻居,且加权相等。

要在发生更改时更新嵌入,假设您正在使用二度邻居并且节点 A 发生更改。创建仅包含 A、其邻居和邻居-邻居的投影,并在写入模式下运行 FastRP。

批量更新的想法相同,只需选择已更改的节点,然后从这些节点中跳出最多 2 个节点。

© www.soinside.com 2019 - 2024. All rights reserved.