跳转到主要内容

NebulaGraph AI Suite

项目描述

NebulaGraph AI Suite(ng_ai)

NebulaGraph AI Suite,用4行代码在NebulaGraph上运行图算法

for NebulaGraph Docker Extension GitHub release (latest by date) License PyPI version pdm-managed Tests Docker Image Docker Image Docker Image Python 3.9


文档: https://github.com/wey-gu/nebulagraph-ai#documentation

源代码: https://github.com/wey-gu/nebulagraph-ai


NebulaGraph AI Suite for Python (ng_ai) 是一个强大的Python库,为数据科学家提供了在NebulaGraph中有效读取、写入、分析和计算数据的API。

支持单机引擎(NetworkX)或使用Spark的分布式计算环境,我们可以在少于10行代码的情况下,在统一且直观的API上对NebulaGraph进行图分析和算法操作。

5分钟快速开始

选项1:在您的桌面上尝试。使用NebulaGraph Docker扩展

选项2:在Linux服务器上?请使用Nebula-Up 👇🏻

  • 按照以下指南使用 Nebula-Up 设置环境。
  • 使用 pip 在 Jupyter Notebook 中从 http://localhost:8888 安装 ng_ai(密码:nebula)。
  • 打开演示笔记本并逐个运行单元格。
  • 查看API 参考

安装

pip install ng_ai

用法

从 nGQL 调用

文档中查看更多细节

RETURN ng_ai("pagerank", ["follow"], ["degree"], "spark",
    {space: "basketballplayer", max_iter: 10}, {write_mode: "insert"})

Spark 引擎示例

另请参阅:examples/spark_engine.ipynb

在 NebulaGraph 上运行算法

注意,还有查询模式,请参考示例文档以获取更多详细信息。

from ng_ai import NebulaReader

# read data with spark engine, scan mode
reader = NebulaReader(engine="spark")
reader.scan(edge="follow", props="degree")
df = reader.read()

# run pagerank algorithm
pr_result = df.algo.pagerank(reset_prob=0.15, max_iter=10)

写回 NebulaGraph

from ng_ai import NebulaWriter
from ng_ai.config import NebulaGraphConfig

config = NebulaGraphConfig()

properties = {"louvain": "cluster_id"}

writer = NebulaWriter(
    data=df_result, sink="nebulagraph_vertex", config=config, engine="spark")
writer.set_options(
    tag="louvain", vid_field="_id", properties=properties,
    batch_size=256, write_mode="insert",)
writer.write()

然后我们可以在 NebulaGraph 中查询结果

MATCH (v:louvain)
RETURN id(v), v.louvain.cluster_id LIMIT 10;

NebulaGraph 引擎示例

基本上与 Spark 引擎相同,但使用 engine="nebula",请参考示例文档以获取更多详细信息。

- reader = NebulaReader(engine="spark")
+ reader = NebulaReader(engine="nebula")

文档

环境设置

API 参考

工作原理

ng_ai 是不同引擎的统一抽象层,当前实现基于 Spark、NetworkX、DGL 和 NebulaGraph,但很容易扩展到 Flink、GraphScope、PyG 等其他引擎。

          ┌───────────────────────────────────────────────────┐
          │   Spark Cluster                                   │
          │    .─────.    .─────.    .─────.    .─────.       │
          │   ;       :  ;       :  ;       :  ;       :      │
       ┌─▶│   :       ;  :       ;  :       ;  :       ;      │
       │  │    ╲     ╱    ╲     ╱    ╲     ╱    ╲     ╱       │
       │  │     `───'      `───'      `───'      `───'        │
  Algo Spark                                                  │
    Engine└───────────────────────────────────────────────────┘
       │  ┌────────────────────────────────────────────────────┬──────────┐
       └──┤                                                    │          │
          │   NebulaGraph AI Suite(ngai)                       │ ngai-api │◀─┐
          │                                                    │          │  │
          │                                                    └──────────┤  │
          │     ┌────────┐    ┌──────┐    ┌────────┐   ┌─────┐            │  │
          │     │ Reader │    │ Algo │    │ Writer │   │ GNN │            │  │
 ┌───────▶│     └────────┘    └──────┘    └────────┘   └─────┘            │  │
 │        │          │            │            │          │               │  │
 │        │          ├────────────┴───┬────────┴─────┐    └──────┐        │  │
 │        │          ▼                ▼              ▼           ▼        │  │
 │        │   ┌─────────────┐ ┌──────────────┐ ┌──────────┐┌──────────┐   │  │
 │     ┌──┤   │ SparkEngine │ │ NebulaEngine │ │ NetworkX ││ DGLEngine│   │  │
 │     │  │   └─────────────┘ └──────────────┘ └──────────┘└──────────┘   │  │
 │     │  └──────────┬────────────────────────────────────────────────────┘  │
 │     │             │        Spark                                          │
 │     │             └────────Reader ────────────┐                           │
 │  Spark                   Query Mode           │                           │
 │  Reader                                       │                           │
 │Scan Mode                                      ▼                      ┌─────────┐
 │     │  ┌───────────────────────────────────────────────────┬─────────┤ ngai-udf│◀─────────────┐
 │     │  │                                                   │         └─────────┤              │
 │     │  │  NebulaGraph Graph Engine         Nebula-GraphD   │   ngai-GraphD     │              │
 │     │  ├──────────────────────────────┬────────────────────┼───────────────────┘              │
 │     │  │                              │                    │                                  │
 │     │  │  NebulaGraph Storage Engine  │                    │                                  │
 │     │  │                              │                    │                                  │
 │     └─▶│  Nebula-StorageD             │    Nebula-Metad    │                                  │
 │        │                              │                    │                                  │
 │        └──────────────────────────────┴────────────────────┘                                  │
 │                                                                                               │
 │    ┌───────────────────────────────────────────────────────────────────────────────────────┐  │
 │    │ RETURN ng_ai("pagerank", ["follow"], ["degree"], "spark", {space:"basketballplayer"}) │──┘
 │    └───────────────────────────────────────────────────────────────────────────────────────┘
 │  ┌─────────────────────────────────────────────────────────────┐
 │  │ from ng_ai import NebulaReader                              │
 │  │                                                             │
 │  │ # read data with spark engine, scan mode                    │
 │  │ reader = NebulaReader(engine="spark")                       │
 │  │ reader.scan(edge="follow", props="degree")                  │
 └──│ df = reader.read()                                          │
    │                                                             │
    │ # run pagerank algorithm                                    │
    │ pr_result = df.algo.pagerank(reset_prob=0.15, max_iter=10)  │
    │                                                             │
    └─────────────────────────────────────────────────────────────┘  

Spark 引擎先决条件

NebulaGraph 引擎先决条件

贡献

有关详细信息,请参阅HACKING.md

许可证

本项目受 Apache License 2.0 条款的约束。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

ng-ai-0.2.10.3.tar.gz (29.3 kB 查看哈希值)

上传时间:

构建分布

ng_ai-0.2.10.3-py3-none-any.whl (24.1 kB 查看哈希值)

上传时间: Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面