GraphSAGE 节点嵌入预测

为了应用 GraphSAGE 节点嵌入预测,必须首先使用 GraphSAGE 节点嵌入训练 端点训练好 GraphSAGE 节点嵌入模型。

本页面提供了如何使用 GraphSAGE 节点嵌入预测端点为新节点推断嵌入的说明。

语法

本节介绍了执行 GraphSAGE 节点嵌入预测算法所使用的语法。

运行 GraphSAGE 节点嵌入预测。
CALL graph.gs_unsup_predict(
  'CPU_X64_XS',                    (1)
  {
    ['defaultTablePrefix': '...',] (2)
    'project': {...},              (3)
    'compute': {...},              (4)
    'write':   {...}               (5)
  }
);
1 计算池选择器。
2 表引用的可选前缀。
3 项目配置。
4 计算配置。
5 写入配置。
表 1. 参数
名称 类型 默认 可选 描述

computePoolSelector

字符串

不适用

用于运行 GraphSAGE 节点嵌入预测作业的计算池选择器。

配置

Map

{}

用于图项目、算法计算和结果回写的配置。

对于此算法,如果输入图较大或模型较深,我们建议使用 GPU 计算池;但在其他情况下,使用 CPU 计算池或许也可行。

配置映射由以下三个条目组成。

有关下方项目(Project)配置的更多详细信息,请参阅 项目文档
表 2. 项目配置
名称 类型

nodeTables

节点表列表。

relationshipTables

关系类型到关系表的映射。

请注意,为了使 GraphSAGE 能够正确传播节点嵌入(node embeddings)的更新,每种类型的节点必须至少是某种关系类型的目标。`orientation` 参数有助于为仅作为关系源的节点类型添加反向关系(使用 "REVERSE" 或 "UNDIRECTED" 方向)。

表 3. 计算配置
名称 类型 默认 可选 描述

modelname

字符串

不适用

要使用的已训练模型的名称

batchSize

整数

继承

每批次进行预测的目标节点数量。如果未提供,将使用训练模型时所用的批次大小

randomSeed

整数

随机整数

用于初始化计算中所有随机性的数字

有关以下写入配置的更多详细信息,请参阅 写入文档
表 4. 写入配置
名称 类型 默认 可选 描述

nodeLabel

字符串

不适用

内存中图中用于写入节点属性的节点标签。

outputTable

字符串

不适用

Snowflake 数据库中写入节点属性的表。

示例

在我们的示例中,我们将使用包含演员、导演、电影和流派的 IMDB 数据集。这些实体都关联有关键字,我们将把这些关键字用作节点的特征。它们通过关系连接,其中演员参演电影,导演执导电影。

我们有一个名为 imdb 的数据库,其中包含以下表:

  • actor,具有 nodeidplot_keywords

  • 具有 nodeidplot_keywords 列的 movie

  • director,具有 nodeidplot_keywords

  • acted_in,具有 sourcenodeidtargetnodeid 列,代表 actormovie 节点的 ID

  • directed_in,具有 sourcenodeidtargetnodeid 列,代表 directormovie 节点的 ID

plot_keywords 列包含与节点关联的关键字,这些关键字被编码为浮点数向量。

您可以按照 GitHub 上的说明将此数据集上传到您的 Snowflake 账户:neo4j-product-examples/snowflake-graph-analytics

预测查询

我们假设名为 unsup-imdb 的模型已使用 GraphSAGE 节点嵌入训练 端点完成训练(参见示例)。

在下面的预测查询中,我们像训练时一样指定项目配置。在 compute 配置中,我们只需要指定模型名称(modelname),其余部分将从训练配置中继承。

还请注意,我们提供了 write 配置来指定存储计算出的嵌入的表。

要运行查询,需要为应用程序、消费者角色和环境进行必要的权限授予设置。请参阅 入门 页面以了解更多信息。

我们还假设应用程序名称为默认的 Neo4j_Graph_Analytics。如果您在安装过程中选择了不同的应用程序名称,请将其替换为该名称。

CALL Neo4j_Graph_Analytics.graph.gs_unsup_predict('GPU_NV_S', {
    'defaultTablePrefix': 'imdb.gml',
    'project': {
        'nodeTables': ['actor', 'director', 'movie'],
        'relationshipTables': {
            'acted_in': {
                'sourceTable': 'actor',
                'targetTable': 'movie',
                'orientation': 'UNDIRECTED'
            },
            'directed_in': {
                'sourceTable': 'director',
                'targetTable': 'movie',
                'orientation': 'UNDIRECTED'
            }
        }
    },
    'compute': {
        'modelname': 'unsup-imdb'
    },
    'write': [
        {
            'nodeLabel': 'movie',
            'outputTable': 'movie_embeddings'
        },
        {
            'nodeLabel': 'actor',
            'outputTable': 'actor_embeddings'
        }
    ]
});

上述查询应产生类似于下方的结果。

JOB_ID JOB_STATUS JOB_START JOB_END JOB_RESULT

job_fc1d0125659e4c8c96eac777c9bfb8ad

SUCCESS

2025-11-28T15:16:18.954320

2025-11-28T15:17:10.256981

 {
  "gs_unsup_predict": {
    "predictMillis": 26003
  },
  "project": {
    "graphName": "snowgraph",
    "nodeCount": 12772,
    "nodeLabels": {
      "ACTOR": {
        "count": 5841,
        "nodeId": {
          "dataType": "int16"
        },
        "properties": {
          "plot_keywords": {
            "dataType": "ndarray[float32]",
            "dimension": 1256
          }
        },
        "table": "IMDB.GML.ACTOR"
      },
      "DIRECTOR": {
        "count": 2270,
        "nodeId": {
          "dataType": "int16"
        },
        "properties": {
          "plot_keywords": {
            "dataType": "ndarray[float32]",
            "dimension": 1256
          }
        },
        "table": "IMDB.GML.DIRECTOR"
      },
      "MOVIE_PLOT": {
        "count": 4661,
        "nodeId": {
          "dataType": "int16"
        },
        "properties": {
          "plot_keywords": {
            "dataType": "ndarray[float32]",
            "dimension": 1256
          }
        },
        "table": "IMDB.GML.MOVIE_PLOT"
      }
    },
    "nodeMillis": 1329,
    "relationshipCount": 18644,
    "relationshipMillis": 161,
    "relationshipTypes": {
      "ACTED_IN": {
        "count": 13983,
        "direction": "UNDIRECTED",
        "sourceTable": "IMDB.GML.ACTOR",
        "table": "IMDB.GML.ACTED_IN",
        "targetTable": "IMDB.GML.MOVIE_PLOT"
      },
      "DIRECTED_IN": {
        "count": 4661,
        "direction": "UNDIRECTED",
        "sourceTable": "IMDB.GML.DIRECTOR",
        "table": "IMDB.GML.DIRECTED_IN",
        "targetTable": "IMDB.GML.MOVIE_PLOT"
      }
    },
    "totalMillis": 1490
  },
  "write_node_property_0": {
    "nodeLabel": "MOVIE_PLOT",
    "outputTable": "IMDB.GML.MOVIE_EMBEDDINGS",
    "rowsWritten": 4661,
    "writeMillis": 3661
  },
  "write_node_property_1": {
    "nodeLabel": "ACTOR",
    "outputTable": "IMDB.GML.ACTOR_EMBEDDINGS",
    "rowsWritten": 5841,
    "writeMillis": 3319
  }
}

我们可以通过运行以下命令来检查生成的“前”两个演员节点的嵌入

SELECT * FROM IMDB.GML.actor_embeddings LIMIT 2;

得到的结果为

NODEID	EMBEDDING
  6931	[0.000000,0.275806,0.333710,0.000000,0.000000,0.000000,1.678880,0.000000,0.000000,0.000000,1.548835,0.705060,0.698967,0.000000,0.000000,0.748005,0.000000,0.000000,0.032963,0.000000,0.000000,0.000000,0.000000,1.082358,0.000000,0.000000,0.000000,0.168949,0.000000,2.504213,1.462919,0.125596,0.000000,0.000000,0.000000,0.020546,1.581930,0.000000,0.000000,2.310814,0.071558,2.554588,0.148772,0.000000,1.342975,0.522795,0.000000,0.664341,0.341649,0.280214,0.000000,0.923817,0.386520,0.000000,1.193098,0.915913,0.000000,0.000000,0.000000,0.538325,0.819232,0.000000,0.594658,0.000000,0.933429,0.000000,0.665206,0.000000,0.000000,0.577315,1.039834,0.000000,0.000000,0.000000,0.000000,0.000000,0.263641,1.260790,0.000000,0.285769,0.797815,0.143350,0.000000,0.000000,0.000000,0.760788,0.537654,0.835502,0.000000,0.000000,0.000000,0.000000,0.000000,2.075793,0.000000,0.000000,0.000000,0.000000,0.284028,0.000000,0.000000,0.979259,0.000000,0.000000,0.000000,0.000000,0.855099,0.100875,0.000000,1.053404,0.785612,1.723292,0.750773,0.000000,1.061991,0.000000,0.000000,0.345646,0.000000,0.000000,0.068293,0.208700,0.345753,0.000000,1.941105,1.733489,0.000000,1.319209,0.867830,0.000000,0.363041,0.000000,2.042518,0.490823,1.638796,0.181801,1.475707,0.669406,0.000000,0.000000,0.000000,0.000000,1.641088,0.000000,0.400986,0.173700,0.598307,0.000000,1.213337,2.599229,0.140189,0.758646,0.000000,0.462205,0.000000,0.843118,0.000000,0.480571,0.000000,0.000000,1.049532,1.766646,0.000000,1.403183,0.461133,0.000000,1.863557,0.000000,0.325326,0.000000,0.430773,0.000000,0.000000,0.405159,0.000000,0.056346,0.000000,0.000000,0.368162,0.000000,0.104882,0.000000,1.468014,1.360908,1.744029,0.000000,0.000000,1.179452,0.547919,0.000000,0.000000,1.504631,0.045264,0.644895,0.000000,0.000000,0.000000,0.101866,0.696652,0.000000,0.000000,0.000000,0.000000,0.000000,0.464310,0.218352,1.510026,0.000000,0.000000,0.000000,0.246313,0.000000,0.178400,0.000000,0.000000,0.000000,0.000000,0.701618,0.070749,0.000000,0.000000,0.603074,0.000000,0.000000,0.000000,1.001244,0.465114,0.570518,0.000000,0.000000,0.932442,0.325107,0.622439,1.470797,0.000000,0.316309,0.000000,0.247825,0.270058,0.946190,0.000000,0.000000,0.000000,1.873032,0.000000,0.000000,1.510353,0.562894,0.000000,1.618610,0.322268,0.000000,0.000000,0.512696,1.013735,0.036263]
  6932	[0.000000,0.000000,0.530572,0.998598,0.000000,0.000000,1.851767,0.000000,0.000000,0.000000,1.551337,0.213426,1.226383,0.000000,0.000000,0.498449,0.364041,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.162470,1.721648,0.000000,0.000000,0.146792,0.460837,0.000000,0.542702,0.000000,0.000000,0.585533,0.000000,0.859640,0.915765,0.000000,0.837624,0.101824,0.000000,0.000000,0.000000,0.000000,0.000000,0.766046,1.116825,0.000000,1.394197,0.347508,0.319338,0.000000,0.000000,0.000000,0.669600,0.000000,0.554313,0.014044,0.573868,0.000000,0.214537,0.000000,0.000000,1.127173,0.000000,0.000000,0.000000,0.000000,0.000000,0.535387,0.000000,1.786094,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.804344,2.133009,0.948304,0.000000,0.000000,0.000000,0.000000,0.637896,1.149579,0.000000,0.000000,0.412694,0.507935,0.385693,0.979215,0.000000,1.737015,0.194008,0.000000,0.000000,0.000000,0.793839,1.421982,0.000000,0.228598,1.145930,0.539003,0.643983,0.897991,0.956065,0.000000,0.000000,0.000000,0.000000,0.000000,1.778283,1.129515,0.000000,0.280099,2.112762,2.177783,0.000000,0.820926,0.000000,0.000000,0.000000,0.000000,1.528605,0.000000,1.808216,0.539503,1.489559,0.437647,0.000000,0.000000,0.000000,1.395121,1.636038,0.000000,0.741754,0.000000,0.000000,0.118127,1.866470,1.642432,0.452591,1.244799,0.478923,1.421850,0.294502,1.133924,0.000000,0.000000,0.000000,0.000000,1.080479,0.568388,0.440139,1.385756,0.000000,0.000000,0.618767,0.000000,0.085425,0.000000,0.000000,1.528592,0.011202,1.152845,0.578253,0.000000,0.000000,1.087868,0.960426,0.000000,0.000000,0.000000,2.200223,2.432830,1.850158,0.238872,0.000000,0.000000,0.391092,0.000000,0.000000,0.612836,0.583207,0.000000,0.000000,0.281198,1.414375,0.000000,0.709002,0.000000,0.000000,0.000000,0.000000,0.000000,0.141193,0.231656,0.109030,0.277832,0.000000,0.000000,0.000000,0.449620,0.000000,0.000000,0.000000,0.000000,0.000000,0.660041,0.000000,0.378508,0.000000,0.000000,0.501338,0.000000,0.194963,0.765173,0.227336,0.000000,0.000000,0.223111,0.972678,0.485203,0.709181,0.705317,0.000000,0.661023,0.000000,0.000000,0.000000,0.458935,0.000000,0.000000,0.587035,1.170718,0.913786,0.000000,1.510381,0.428103,0.000000,1.663107,0.000000,0.477148,0.175759,0.983973,0.315653,0.736073]