夜雨聆风学习资料网

ARTICLE · 1324347

graphify:将代码、文档和图片转化为可交互知识图谱

graphify:将代码、文档和图片转化为可交互知识图谱

一个数字先摆出来。

130,804 star。 Apache-2.0,Python 写的,作者是 Graphify Labs。

它做的事一句话能说完,把一个代码库变成一张可以查询的图。

但真正让我想写这篇的,是另一个数字。

建图消耗的 LLM 额度是 0。

01  建图不烧 token

这是它和其他 RAG 方案最根本的区别。

表 1 · 两条路线

常见做法
graphify
解析代码
塞给模型读
本地 tree-sitter AST 解析
建图成本
按 token 计费
0
向量库
必需
不用
数据出本机
是
代码不出本机

第一行是关键。

代码走的是语法树解析,不用模型读。tree-sitter 对约 40 种语言做 AST 解析,纯本地跑。

这就是「0 LLM credits」的来源。 模型不参与建图的第一步。

这里要问一句,不用向量库那用什么?

用图。节点是代码里的实体,边是它们的关系。

查的时候是图遍历,不是向量相似度搜索。

02  每条边都标了来源

这条设计我觉得最有价值。

看上面这个动图。终端里问「FastAPI 到 ModelField 怎么连」,答案沿着图一跳一跳亮起来。

实际输出长这样。

$ graphify path "FastAPI" "ModelField" Shortest path (3 hops): FastAPI --uses--> DefaultPlaceholder <--references-- get_request_handler() --references--> ModelField

每条边的末尾都有个标签。

表 2 · 两种置信标签

标签
含义
`EXTRACTED`
源码里明确写着的
`INFERRED`
通过解析推导出来的

区分很重要。

`A imports B` 是源码里写着的,`EXTRACTED`。而 `A uses B` 往往是从调用链推出来的,`INFERRED`。

你看一眼标签,就知道这条边能不能信。

这里要问一句,为什么要标这个?

因为知识图谱最大的问题是「看起来有道理,实际是猜的」。

一个 47 条边的节点,如果没有置信标签,你没法判断哪几条是硬事实。

03  三个查询命令

表 3 · 怎么问

命令
做什么
`graphify query "问题"`
用自然语言问,返回一个子图
`graphify path A B`
追踪两个东西怎么连起来
`graphify explain "概念"`
解释一个概念,给出它的连接

第一个是「划范围」。

你问「认证怎么连到数据库」,它返回的是相关的那一小块图,不是一段文字。

第二个是「找路径」。 上面那个三跳的例子就是这个。

第三个是「看邻居」。 `explain "APIRouter"` 会告诉你它在哪个文件第几行、属于哪个社区,还有多少条边。

04  社区划分不用模型

表 4 · 图上的三种分析

分析
做法
God nodes
找出连接最多的概念,看一切流过哪里
Communities
Leiden 算法
划分子系统,标签不用 LLM
跨文件链接
`calls` / `imports` / `inherits` / `mixes_in`

第二行得说一句。

社区检测用的是 Leiden 算法,一个纯图论方法。标签也不用模型生成。

这跟「0 LLM credits」是一条思路,能在本地算的就不调模型。

这里要问一句,不用模型打标签,质量够吗?

标签来自社区内的共同特征,比如都跟某个模块相关。不如模型起的名字漂亮,但结果是确定的、可复现的。

05  基准数据自己报

表 5 · 四个基准

基准
指标
graphify
对手
LOCOMO(n=300)
recall@10
0.497
mem0 0.048、supermemory 0.149
LOCOMO(n=300)
QA 准确率
45.3%
supermemory 49.7%、mem0 27.3%
LongMemEval-S(n=50)
QA 准确率
76%
与 dense RAG 持平
ERPNext 跨工具(n=6)
关键事实覆盖率
82.0%
grep/read 基线 70.8%

第一行差距最大。

recall@10 是检索前 10 条能召回多少相关内容的指标。0.497 对 0.048,差了一个数量级。

但第二行它也输了。

QA 准确率 45.3%,比 supermemory 的 49.7% 低。

README 把这行也列出来了,没有藏。 这点值得说一句。

第四行是和自己比。 grep/read 基线 70.8%,它 82.0%。

这里要问一句,这些数字可信吗?

README 写了评测方法,同一套 harness、同一个模型,也是同样的预算,而且判分器做过盲评校验,和第二判分器一致率 90.6%,Cohen's kappa 0.81。

kappa 0.81 属于「高度一致」。 这个数字说明评测本身是严谨的。

06  代码不出本机,但文档要

隐私这块分得很清楚。

表 6 · 三类内容分别怎么处理

内容
处理
出本机吗
代码
本地 tree-sitter 解析
不出
音视频
本地 faster-whisper 转写
不出
文档 / PDF / 图片
走语义抽取,需要模型
要出

第一行和第二行是纯本地的。

README 明确写了,纯代码的语料不需要 API key,`graphify extract` 可以完全离线跑。

第三行是唯一的例外。

文档和图片的语义理解要靠模型。但注意,它走的是你自己 IDE 会话里的模型(通过 `/graphify` skill),不是它自己的服务器。

这里要问一句,混着放怎么办?

有个 `--code-only` 参数,只索引代码,跳过需要 LLM 的文档和图片。

这个开关对私有项目很实用。

07  装和用都很短

表 7 · 上手路径

步
命令
1
`uv tool install graphifyy`
2
`graphify install`
3
在助手输入 `/graphify .`

第一步那个包名要注意,是 `graphifyy`,双 y。

README 专门提醒了,PyPI 上其他 `graphify*` 包跟它没关系。但命令行还是 `graphify`,没有双 y。

第二步会自动检测你用的是哪个助手,把 skill 注册进去。支持 20 多个平台,Claude Code、Codex、Cursor、Gemini CLI、OpenCode 都在列表里。

第三步就是建图。 建完会生成 `GRAPH_REPORT.md` 和 `graph.json`。

几个常用参数。

/graphify ./docs --update # 只重抽改动的文件 /graphify . --cluster-only # 只重跑聚类 /graphify . --wiki # 从图生成 markdown wiki graphify add <arxiv-url> # 抓一篇论文加进图里

它解决的是「读不动」

说回开头。

一个几万行的仓库,人读不动,模型也读不动。

grep 只能找字面,读文件要一个个开,塞进上下文很快就满。

graphify 换了个思路,先建一张图,然后查图而不是读文件。

而且它做了两个我认为对的选择。

第一,能在本地算的就不调模型。 代码解析、社区划分和音视频转写全部本地。

第二,每条边都标了是读出来的还是猜的。 这让人能判断结果的可靠性。

一个知识图谱工具,最该看的是它敢说自己哪部分不确定,连得多全排在后面。

你有没有哪个仓库,一直想搞懂但读不进去?

项目地址

https://github.com/Graphify-Labs/graphify

文档

https://docs.graphify.com

安装

uv tool install graphifyy

许可

Apache-2.0。注意 PyPI 包名是 `graphifyy`(双 y),命令行是 `graphify`。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料