惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
S
Securelist
P
Proofpoint News Feed
H
Help Net Security
S
Schneier on Security
T
Tenable Blog
C
Cisco Blogs
S
Security @ Cisco Blogs
博客园 - 司徒正美
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
Google DeepMind News
Google DeepMind News
C
Cybersecurity and Infrastructure Security Agency CISA
Google Online Security Blog
Google Online Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
NISL@THU
NISL@THU
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
W
WeLiveSecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
腾讯CDC
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
Vercel News
Vercel News
小众软件
小众软件
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
雷峰网
雷峰网
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
博客园 - 聂微东
F
Full Disclosure
量子位
Scott Helme
Scott Helme
宝玉的分享
宝玉的分享
A
About on SuperTechFans
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Schneier on Security
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
K
Kaspersky official blog
AI
AI
SecWiki News
SecWiki News
Webroot Blog
Webroot Blog
Martin Fowler
Martin Fowler

siwei.io

Fusion GraphRAG Introduced Graph RAG: 知识图谱结合 LLM 的检索增强 Text2Cypher:大语言模型驱动的图谱查询生成 图谱驱动的大语言模型 Llama Index Nebulagraph Artificial Intelligence Suite 图数据库驱动的基础设施运维示例 连接微信群、Slack 和 GitHub:社区开放沟通的基础设施搭建 图数据库的社交网络应用 chatGPT 加 NebulaGraph 预测 2022 世界杯冠军球队
NebulaGraph in Jupyter Notebook
Wey Gu · 2023-06-06 · via siwei.io

现在,我们可以在 Jupyter Notebook 中更方便地玩 NebulaGraph 图数据库了,只需要%ngql MATCH p=(n:player)->() RETURN p 就可以直接查询 ,%ng_draw 就可以画出返回结果。

English version

最近,我把两年前一直没完成的 NebulaGraph 的 Jupyter Notebook 扩展: ipython-ngql 重构,正式发布了,现在它除了完全适配 NebulaGrpah 3.x 所有查询之外,还支持了 Notebook 内的返回结果可视化,本文给大家介绍一下如何使用 ipython-ngql

安装非常简单,只需要在 Jupyter Notebook 里边执行 %pip install ipython-ngql 然后再加载它就好:

%pip install ipython-ngql
%load_ext ngql

然后,我们就可以用 %ngql 这个 Jupyter Magic word 连接 NebulaGraph 了:

%ngql --address 127.0.0.1 --port 9669 --user root --password nebula

当连接成功之后,SHOW SPACES 的结果会返回在这个 notebook cell 下。

💡 注:你可以从 Docker 桌面版的扩展市场里搜索 NebulaGraph 一键安装本地开发环境,进入 NebulaGraph Docker 扩展内部,点击 NebulaGraph AI ,点击 Install NX Mode 安装本地的 NebulaGraph + Jupyter Notebook 开发环境。

现在支持两种语法 %ngql 接单行查询和 %%ngql 接多行查询。

例如:

%ngql USE basketballplayer;
%ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;

例如:

%%ngql
ADD HOSTS "storaged3":9779,"storaged4":9779;
SHOW HOSTS;

而在任意一个查询之后,紧跟着一个 %ng_draw 就可以把结果可视化渲染出来:

# one query
%ngql GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;
%ng_draw

# another query
%ngql match p=(:player)-[]->() return p LIMIT 5
%ng_draw

效果:

render_result

并且,渲染的结果还会被保存为单文件 html ,这样我们可以内嵌到任意网页中,像是:

下面还有一些方便的高级应用。比如 %ngql help 可以获得更多帮助信息。

4.1 操作查询结果为 pandas df

每一次 query 之后,返回的结果会被存到 _ 变量中,我们可以对它进行读取:

load_result

默认,返回的结果的格式是 pandas df,而如果我们想在 Jupyter Notebook 中交互调试 Python 的 NebulaGraph 应用代码的时候,我们也可以将返回结果设置为原始的 ResultSet 格式,方便直观进行 Query 与结果解析,例如:

In [1] : %config IPythonNGQL.ngql_result_style="raw"

In [2] : %%ngql USE pokemon_club;
    ...: GO FROM "Tom" OVER owns_pokemon YIELD owns_pokemon._dst as pokemon_id
    ...: | GO FROM $-.pokemon_id OVER owns_pokemon REVERSELY YIELD owns_pokemon._dst AS Trainer_Name;
    ...:
    ...:
Out[3]:
ResultSet(ExecutionResponse(
    error_code=0,
    latency_in_us=3270,
    data=DataSet(
        column_names=[b'Trainer_Name'],
        rows=[Row(
            values=[Value(
                sVal=b'Tom')]),
...
        Row(
            values=[Value(
                sVal=b'Wey')])]),
    space_name=b'pokemon_club'))

In [4]: r = _

In [5]: r.column_values(key='Trainer_Name')[0].cast()
Out[5]: 'Tom'

此外,我还给大家支持了模板功能,语法沿用了 Jinja2{{ variable }} ,详见这个例子:

query_template

之后,我打算增强可视化的自定义选项,也欢迎社区里的大伙来贡献新的 feature、idea。

项目的 repo 在 👉🏻 https://github.com/wey-gu/ipython-ngql