neo4j-gds-skill

Neo4j Graph Data Science (GDS) embedded plugin via Python client or Cypher — covers GraphDataScience, gds.v2 plugin endpoints, gds.version, native projection, Cypher projection, graph catalog operations, stream/stats/mutate/write modes, memory estimation, PageRank, Louvain, WCC, FastRP, KNN, Node Si

By neo4j-contrib · 570 installs

npx skills add neo4j-contrib/neo4j-skills --skill neo4j-gds-skill

Source repository · Upstream listing

When to Use Running GDS algorithms against embedded GDS plugin through Python client ( graphdatascience ) Running GDS algorithms through CALL gds. Cypher procedures Aura Pro, self managed Neo4j, local Neo4j, or offline DBMS with GDS plugin installed Projecting named in memory graphs, running centrality/community/similarity/path/embedding algorithms Chaining algorithms via mutate mode; building FastRP → KNN pipelines Writing node embeddings for Neo4j vector indexes / structural similarity search Memory estimation before large graph operations When NOT to Use Aura Graph Analytics Sessions / AGA / GdsSessions / AuraGraphDataScience → neo4j aura graph analytics skill AuraDB Cypher API with { memory: ... } or { sessionId: ... } → neo4j aura graph analytics skill Cypher query authoring → neo4j cypher skill Driver/connection setup → neo4j driver python skill GraphRAG retrieval → neo4j graphrag skill Creating/querying vector indexes over written embeddings → neo4j vector index skill Context Use Aura Pro with GDS plugin This skill Self managed/local/offline Neo4j with GDS plugin This skill AuraDB serverless analytics session neo4j aura graph analytics skill Self managed Neo4j attached to AGA session neo4j aura graph analytics skill Non Neo4j data source neo4j aura graph analytics skill Pre flight Use only with embedded GDS plugin. If Unknown function 'gds.version' → GDS plugin unavailable. AuraDB serverless analytics → neo4j aura graph analytics skill . Self managed/local → install or enable GDS plugin. Compatibility: graphdatascience v1.22 — GDS = 2.6 and < 2.28 / < 2026.6, Python = 3.10 and < 3.15, Neo4j Driver = 4.4.12 and < 7.0. GDS server 2026.06+ falls outside that range — call GDS from Cypher, or use the 2.0 pre release client. graphdatascience 2.0 is alpha ( pip install pre graphdatascience , latest 2.0a4 ): gds.v2 prefix removed and those endpoints become the only API, untyped 1.x endpoints deleted, GraphV2 / ModelV2 renamed to Graph / Model , minimum GDS server 2.13 and Neo4j Python driver 5.26 (4.4 dropped), pandas = 2.0, FastPath preview. Pin graphdatascience<2 for production. V2 rules: Prefer gds.v2. when endpoint exists. Use snake case endpoints and parameters: page rank , fast rp , mutate property , write property . Use typed result attributes: result.write millis , not result["writeMillis"] . Use v1 if v2 endpoint missing/incompatible; label fallback. Graph Catalog Operations Native Projection Native projection: plugin/simple Python client workflow only. AGA Sessions → neo4j aura graph analytics skill . V1 fallback: gds.graph.project(...) . Cypher Projection (use for new Cypher workflows, filters, transforms) gds.graph.cypher.project must end with one RETURN gds.graph.project(...) clause. If validation fails: use gds.run cypher(...) , then gds.graph.get("graphName") . Use v1 gds.graph.cypher.project(...) if v2 graph projection cannot express required filter/transform. AGA Sessions → neo4j aura graph analytics skill ; never use plugin Cypher projection. Undirected Projection Native projection: set orientation: 'UNDIRECTED' per relationship type. Plugin Cypher projection: set undirectedRelationshipTypes: [' '] in fifth gds.graph.project(...) config argument. Leiden is defined for directed and undirected graphs. Project undirected relationships when community structure is naturally symmetric. Inspect and Drop Memory Estimation — run before large projections and algorithms Projection estimate fallback: use v1 gds.graph.project.estimate(...) if v2 estimate endpoint unavailable. Execution Modes Mode Side effect Returns Use when stream None Row per node/pair Inspect results; top N stats None Single aggregate row Summary/convergence check mutate Adds node property or relationship type/property to in memory graph only Stats row Chain algorithms write Persists node property or relationship to Neo4j DB Stats row Final step — make queryable Pattern: stream to verify → mutate to chain → write to persist. mutate property must not exist in the in memory graph. Relationship algorithms such as KNN also require mutate relationship type . After write , re project to use written properties in subsequent GDS calls (in memory graph does not see DB writes). gds.util.asNode() — Enrich Stream Results stream mode yields nodeId (internal GDS integer). gds.util.asNode(nodeId) translates it back to the DB node so you can access properties. Not needed for write , mutate , or stats modes — those don't return per node data. Core Algorithms PageRank (centrality) Louvain (community detection) Leiden is a refinement of Louvain avoiding poorly connected communities — use when community quality raw speed. modularity in stats result: range 0.5 to 1.0. [field] Values 0.3 often indicate meaningful community structure; 0.7 is strong. Leiden is defined for directed and undirected graphs. Project undirected relationships when community structure is naturally symmetric. WCC — Weakly Connected Components Run WCC first to understand graph structure; partition disconnected graphs before expensive algorithms. Betweenness Centrality Node Similarity Jaccard similarity from common neighbors — no node properties required. FastRP (node embeddings) Fast, scalable, production ML pipelines. Set randomSeed for reproducibility. For ANN search over structural embeddings, after write , create a Neo4j vector index over the written property. Use neo4j vector index skill . KNN — K Nearest Neighbors Finds k most similar nodes per node based on node properties (typically embeddings). FastRP → KNN Pipeline (recommendation) Algorithm Selection Goal Algorithm Influence via network links PageRank / ArticleRank Bottleneck / bridge nodes Betweenness Centrality Direct connections Degree Centrality Community (general, fast) Louvain Community (higher quality) Leiden Is graph connected? WCC (run first) Similarity from embeddings KNN Similarity from neighbors Node Similarity Shortest path (positive weights) Dijkstra / A k alternative paths Yen's Fast scalable embeddings FastRP Feature rich nodes GraphSAGE ( gds.beta.graphSage ) Full algorithm catalog → [references/algorithms.md](references/algorithms.md) Common Errors Error Cause Fix Unknown function 'gds.version' Embedded GDS plugin unavailable AGA → neo4j aura graph analytics skill ; self managed/local → install plugin Insufficient heap memory / OOM Graph too large for available JVM heap Run gds.graph.project.estimate ; increase dbms.memory.heap.max size Procedure not found: gds.leiden Older or incompatible GDS Check CALL gds.list() for available procedures; upgrade GDS or use Louvain Node property 'X' not found after mutate Property not projected or wrong graph name Verify G.node properties() includes the property; check mutate property spelling Graph 'myGraph' already exists Leftover projection from failed run CALL gds.graph.drop('myGraph') or gds.v2.graph.drop(G) mutate property already exists Re running algorithm on same projection Drop and re project, or use different mutate property name No algorithm results Source/target node not in projection Verify node labels/rel types match projection; check G.node count() Full Workflow 1. Create gds with GraphDataScience(...) . 2. Verify plugin: gds.server version() or RETURN gds.version() . 3. Estimate memory: gds.graph.project.estimate(...) and algorithm .estimate(...) . 4. Project named graph with gds.v2.graph.project(...) . 5. Run gds.v2. .stream first; switch to mutate ; use write only when satisfied. 6. Drop graph with gds.v2.graph.drop(G) . 7. Use v1 only for endpoints missing in v2, such as plugin Cypher projection. Built in test datasets: gds.v2.graph.datasets.load cora() , gds.v2.graph.datasets.load karate club() , gds.v2.graph.datasets.load imdb() MCP Tool Mapping Operation MCP tool RETURN gds.version() read cypher gds.pageRank.stream(...) read cypher gds.pageRank.write(...) write cypher gds.graph.drop(...) write cypher List available procedures read cypher → CALL gds.list() Before any write cypher : show exact Cypher, expected nodes/relationships affected, and ask for confirmation. For algorithm write mode, estimate or run stats first when available. References [references/algorithms.md](references/algorithms.md) — full algorithm catalog: all procedures, parameters, tiers, Cypher + Python examples [references/graph projection.md](references/graph projection.md) — projection deep dive: filtering, heterogeneous graphs, relationship orientation, property types [GDS Manual](https://neo4j.com/docs/graph data science/current/) [Python Client Docs](https://neo4j.com/docs/graph data science client/current/) Checklist [ ] Embedded GDS plugin confirmed with gds.version() or gds.server version() [ ] Graph/algorithm memory estimated before large work [ ] Python examples prefer gds.v2. , snake case params, typed result attributes [ ] v1 APIs used only as explicit fallback [ ] Projection uses native or plugin Cypher projection; no gds.graph.project.remote(...) [ ] Named graph dropped after use ( gds.v2.graph.drop(G) or v1 fallback) [ ] Execution mode chosen: stream (inspect) → mutate (chain) → write (persist) [ ] write property / mutate property checked for collision with existing properties [ ] randomSeed set for reproducible embeddings [ ] WCC run first on graphs that may be disconnected