网易首页 > 网易号 > 正文 申请入驻

Graphify:为代码库构建知识图谱,以图遍历替代向量检索

0
分享至


Graphify 是一个 Python 工具,同时也是一个 Claude Code skill。它把分析工作一次性做完,把所有内容压缩成一张可查询的知识图谱,放到磁盘上。后续查询走图谱遍历,不再重新读取原始文件。项目简介的数字是:在混合语料库上每次查询的 token 量降低 71.5 倍。虽然这个数字是项目方自己测的是否站得住脚还要验证,但是他的底层架构思路比同类工具普遍要更细致一些。



大型代码库的 Token 税

上下文窗口一直在在变大——Claude Sonnet 4.6 支持 200K,GPT-5.4 已经到 1M——但麻烦的从来不是窗口大小而是成本和延迟。如果每次查询都把 200 个文件喂进去不仅贵而且慢;而且对任何一个具体问题来说,那 200 个文件里的绝大多数信息都是无关的。等于为了找一个段落把整座图书馆搬过来。

业界的标准答案是 RAG:把文件切块、嵌入、丢进向量库,查询时取 top-K 块。对散文类文档,RAG 工作得很好——语义相似度本身就是一个靠谱的检索信号。但对代码就不一样了:函数和它的调用者之间的关系是结构性的,不是语义性的。"process_payment 调用 validate_card"这种事实不存在于嵌入空间里,它存在于调用图里。

Graphify 的方法不一样,他不嵌入文件、不靠相似度检索,而是把实体和关系建成一张显式图谱,查询时在图上做遍历。这种方式其实更接近一个资深工程师摸陌生代码库的方式——先在脑子里搭起系统的结构,再顺着结构走,而不是对源代码做一次模糊搜索。

Graphify 产出什么

在某个目录下跑一次 /graphify,会在 graphify-out/ 目录里生成几样东西:一个用 vis.js 渲染的交互式 HTML 图谱,节点是实体(函数、类、概念、文档章节),边是关系(调用、import、引用、推断出来的依赖);一份用于程序化查询的持久化 JSON 图谱;一份 Markdown 报告,标出度数高的节点和社区聚类。可选输出还包括 Obsidian vault、Neo4j 数据库、SVG、GraphML 文件,以及把整张图谱作为 LLM 可调用工具暴露出来的 MCP server。

聚类用的是 Leiden 社区检测算法。一个同时包含 auth、billing 和 infra 模块的 monorepo,Graphify 会自动把这三块识别成不同的社区,并把它们之间的桥接节点显式标出来。



三套不同的数据处理逻辑

理解 Graphify 最关键的部分就是,它不会用同一种方式对待所有文件类型——三个 pass 各跑各的,每一个的数据驻留策略也完全不一样。

Pass 1:确定性 AST 提取(代码不出本机)

源代码文件交给 tree-sitter,一个基于规则的确定性解析器。可以把它理解为编译器的前端:读文件、套形式语法、吐出语法树。整个过程没有语言模型介入,没有任何网络调用,源代码不会离开你的机器。

tree-sitter 支持 23 种语言,Python、TypeScript、JavaScript、Go、Rust、Java、C、C++、Ruby、C#、Kotlin、Scala、PHP 都在内。输出是一组节点和边的字典,把源文本中显式存在的每一个函数、类、import 和调用关系都编码出来。

这一步重要在两点。一是免费,没有 API 成本;二是精确——AST 提取出的关系会带上 EXTRACTED 置信度标签,意味着它们是事实,不是猜测。

Pass 2:本地音频转录(录音也不出本机)

把 Graphify 指向一个含有音频或视频的目录,它会用 faster-whisper 在本机完成转录,音频不上传到任何地方。这个 pass 是可选的,需要装 graphifyy[video]:

pip install "graphifyy[video]"

faster-whisper 是 OpenAI Whisper 模型的 CTranslate2 加速实现。在一台普通笔记本上,转录一小时的会议音频只要几分钟。生成的转录文本会作为文档节点喂进图谱,和别的文本一视同仁。

Pass 3:语义提取(文档和图像会发到你的 AI API)

文档(Markdown、PDF、RST)和图像(PNG、JPG、WebP、GIF)没法用语法解析——它们的结构是语义层面的,不是句法层面的。要从一张白板照片或一份研究 PDF 里提取实体和关系,Graphify 会调用你已经配好的 AI 平台,可能是 Anthropic、OpenAI 或别的。

关键词是"你的"。Graphify 用的是你 AI 平台环境里已经配好的凭证,没有中央中继服务器。流量从你的机器直接发到 Anthropic(或者 OpenAI 等等),用的就是你日常给编码助手用的那把 API key。

Graphify 自己什么都不收。SECURITY.md 写得很直白:"在图谱分析期间不发起任何网络调用。"项目同时声明:没有遥测、没有使用追踪、没有任何形式的分析。Graphify 也不存凭证。

完整的数据流大致如下。



需要点出的细节:你的 AI 提供商(Anthropic、OpenAI)确实会看到你的文档和图像内容,约束条件是你和它们之间的 API 协议。如果文档里有敏感信息,跑 Pass 3 之前先翻一遍提供商的数据处理政策。也可以把 Graphify 限制成仅代码模式,把 Pass 3 整个跳过。

置信度系统:知道图谱"知道"到什么程度

图谱里的每条边都带一个置信度标签,三选一。这是一个看起来很小的设计决定,落到使用上影响很大。

EXTRACTED 表示这条关系在源代码里是显式存在的。validate_card 被 process_payment 调用,这写在 AST 里,可以直接信任。

INFERRED 表示这条关系是模型从上下文推理出来的。语义提取器看到 PaymentService 和 FraudDetector 在文档里总是一起出现,于是推断出一条依赖。可能对,也可能只是巧合。

AMBIGUOUS 表示模型自己也拿不准。这类边会留在图谱里,但没有人工复核就不应该被拿去做判断依据。

打个比方:EXTRACTED 像带页码的引文,INFERRED 像一句"另见某处"的脚注,AMBIGUOUS 像贴了张"再核实一下"的便签。Graphify 的做法是把三种都给你,并打好标签;它没有把所有东西包装成一副笃定的样子。

上手

这个包需要Python 3.10+,安装好 Claude Code。

# 安装包
pip install graphifyy
# 把 skill 注册到你的 AI 平台
graphify install

graphify install 会探测你已配置的平台,把 skill 定义注入到对应的配置文件里——比如 Claude Code 的 ~/.claude/CLAUDE.md。

可选依赖按需装:

# 本地音频/视频转录
pip install "graphifyy[video]"
# Microsoft Office 文件支持(.docx、.xlsx)
pip install "graphifyy[office]"
# MCP server(把图谱作为 LLM 工具暴露)
pip install "graphifyy[mcp]"
# 一次装全
pip install "graphifyy[all]"

运行命令:

# 在 AI 助手里对当前目录做标准分析
/graphify
# 深度模式:更激进的关系推断
/graphify --deep
# 处理特定子目录
/graphify ./src/auth
# Watch 模式:文件变化时重建图谱
/graphify --watch
# 查询已有图谱
/graphify query "how does user authentication flow through the system?"
# 查找两个实体之间的最短路径
/graphify path "UserService" "DatabasePool"
# 用自然语言解释某个实体
/graphify explain "PaymentProcessor"

后续运行时,Graphify 会比对 SHA256 哈希——只有改动过的文件会被重新处理。第一次导入是贵的那一次,重复查询很便宜。

也可以让它接管 git hook,每次提交都自动重建图谱:

# 在仓库内,Graphify 可以安装自己的 git hooks
/graphify --install-hooks

之后 git commit 或 git checkout 都会触发一次增量更新,AI 助手看到的图谱永远对应当前分支的状态。

关于 71.5× 这个数字

README 里写的是:在混合语料库上,相比直接读原始文件,Graphify 把 token 用量降低了 71.5 倍。这个数字来自项目自己的 worked/ 目录是在精挑过的数据集上跑出来的。

只从架构上讲这个倍数是合理的。一个一万个函数的代码库,问"什么调用了 process_payment?",图谱遍历返回的是几个节点 ID;读原始文件回答同一个问题,得把所有可能包含答案的文件都加载进来。具体倍数完全取决于语料库规模和查询的精确度——稀疏的、结构性的查询收益最大,宽泛的概念性查询收益要小得多。

但是如果在公共测试集上把 Graphify 的图谱查询和原始文件、RAG 这两个基线放在一起做的独立基准。这种基准出现之前,71.5× 可能就是一个参考了,,因为实际倍数会随语料库规模、文件类型组合和查询模式而变。

Graphify 适合什么场景

适合:同一个仓库里既有代码、又有架构文档、设计 PDF 和录制会议这种混合媒体项目;在稳定的代码库上反复查询的场景,因为缓存收益会随时间累积;用 Claude Code 做编码助手、想压低单次会话 API 成本的团队;调用图复杂、语义搜索吃力的项目,比如深层继承链或大量基于回调的架构。

不太适合的也很清楚:文件不到 20 个的新项目,图谱本身的开销不划算;内容几乎全是散文文档的仓库,对开放式语义问题,扁平 RAG 大概率跑得过图谱遍历;AI 提供商的数据政策禁止把文档内容发给其 API 的环境——文档和图像走的就是 Pass 3,绕不开;以及需要可验证、可复现分析的项目,INFERRED 和 AMBIGUOUS 边如果照单全收,会把人带偏。

几个值得注意的局限

Graphify 是个人开源项目,目前版本 v0.4.10,没有机构背书。开发是活跃的,但是目前看长期维护怎么样不好说。如果要把它放进生产工具链,得保留一点谨慎。

包名也有点小问题:工具叫 graphify,PyPI 上的包却是 graphifyy(双 y)。README 说这是临时状态。安装前请先确认当前的规范包名——热门开发工具被抢注名字这种事不少见。

接下来值得关注的方向

MCP server 集成这块值得盯着。随着 MCP 在各类 AI 编码助手里逐步铺开,Graphify 把代码库图谱作为一组 LLM 可调用工具暴露出来的能力,会变成自主 agent 的一块基础设施——那些 agent 真正需要的,是对代码库的结构化理解,而不只是文件搜索。

https://avoid.overfit.cn/post/09e247ff0dc7461b84106a7486e05d06

作者:Mustafa Genc

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
三花智控:目前上市公司暂无收购特斯拉、英伟达的想法

三花智控:目前上市公司暂无收购特斯拉、英伟达的想法

贝壳财经
2026-05-08 17:48:02
江苏生态环境厅工作组赴徐州调查,多部门连夜转运黑臭水体

江苏生态环境厅工作组赴徐州调查,多部门连夜转运黑臭水体

上观新闻
2026-05-08 06:34:12
5月1日起红灯右转全国统一新规:不是不让转,是不要再乱转了

5月1日起红灯右转全国统一新规:不是不让转,是不要再乱转了

笑熬浆糊111
2026-05-08 05:47:49
三星员工:240万人民币就想打发我 隔壁SK海力士明年可是要发650万!

三星员工:240万人民币就想打发我 隔壁SK海力士明年可是要发650万!

快科技
2026-05-07 19:53:05
股神段永平真相:涉嫌严重违法!

股神段永平真相:涉嫌严重违法!

城市局
2026-05-08 08:27:15
绝密的钛金属拼图:为何人类再也造不出第二架SR-71“黑鸟”?

绝密的钛金属拼图:为何人类再也造不出第二架SR-71“黑鸟”?

航空之家Aviation
2026-05-06 19:31:24
月销只剩5100辆,广汽本田还有存在的必要吗?

月销只剩5100辆,广汽本田还有存在的必要吗?

BusinessCar
2026-05-08 12:05:09
检察机关依法分别对丁雄军、赵成武、白春明、俞志明提起公诉

检察机关依法分别对丁雄军、赵成武、白春明、俞志明提起公诉

最高人民检察院
2026-05-08 16:00:03
胡锡进:不能惯国际足联!央视必须强硬 钱最后都摊在老百姓头上

胡锡进:不能惯国际足联!央视必须强硬 钱最后都摊在老百姓头上

念洲
2026-05-08 18:01:57
瞒了十几年!古天乐被曝隐婚生子,新娘竟 然是她?

瞒了十几年!古天乐被曝隐婚生子,新娘竟 然是她?

人间颂
2026-05-08 13:51:14
缺德到这种地步,已经不是讽刺的问题了!

缺德到这种地步,已经不是讽刺的问题了!

胖胖说他不胖
2026-05-08 08:55:19
国际奥委会直接来了个先斩后奏,官宣上海2028年奥运会赛事的举办

国际奥委会直接来了个先斩后奏,官宣上海2028年奥运会赛事的举办

阿振观点
2026-05-08 17:09:06
保住纳税人的钱!美国防部长宣布采购革命:企业自己掏钱建厂,交不出货就换人

保住纳税人的钱!美国防部长宣布采购革命:企业自己掏钱建厂,交不出货就换人

爆角追踪
2026-05-08 08:22:25
2个月后可归化!费利佩已定居中国:正学中文和教儿子唱国歌

2个月后可归化!费利佩已定居中国:正学中文和教儿子唱国歌

邱泽云
2026-05-08 18:21:33
89岁谢贤被CoCo爆料,分手原因:他身体跟不上我,张柏芝也被牵连

89岁谢贤被CoCo爆料,分手原因:他身体跟不上我,张柏芝也被牵连

好贤观史记
2026-05-08 15:57:30
“4只皮皮虾1035元”店主事发次日病逝,年仅43岁;家人称其有基础病,事发前已脑出血,店铺收到多起威胁电话,不打算继续开业

“4只皮皮虾1035元”店主事发次日病逝,年仅43岁;家人称其有基础病,事发前已脑出血,店铺收到多起威胁电话,不打算继续开业

扬子晚报
2026-05-08 12:46:41
上市仅14个交易日,又一10倍股诞生!

上市仅14个交易日,又一10倍股诞生!

财闻
2026-05-08 14:36:52
190元榴莲遭“仅退款” 涉事买家已被行拘

190元榴莲遭“仅退款” 涉事买家已被行拘

看看新闻Knews
2026-05-08 16:04:05
114国拒绝签字,美式“全球标准”遭群嘲,中国禁令已先行3天

114国拒绝签字,美式“全球标准”遭群嘲,中国禁令已先行3天

流史岁月
2026-05-08 13:40:32
赖清德返台后称台湾是国家,下令拆除蒋介石像,大陆六字预言结局

赖清德返台后称台湾是国家,下令拆除蒋介石像,大陆六字预言结局

凉了时光人
2026-05-08 09:46:12
2026-05-08 19:51:01
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1988文章数 1461关注度
往期回顾 全部

科技要闻

SK海力士平均奖金600万 工服成相亲神器

头条要闻

媒体:"4只皮皮虾1035元"店主去世仅43岁 触发人们反思

头条要闻

媒体:"4只皮皮虾1035元"店主去世仅43岁 触发人们反思

体育要闻

他把首胜让给队友,然后用一年时间还清账单

娱乐要闻

古天乐被曝隐婚生子,新娘竟是她

财经要闻

轮到豆包收割了?

汽车要闻

MG 4X实车亮相 将于5月11日开启盲订

态度原创

家居
房产
数码
旅游
公开课

家居要闻

流动的尺度 打破家的形式主义

房产要闻

豪掷6.8亿拿地!何猷君大手笔投资三亚!

数码要闻

三星家电退出大陆市场 部分门店已撤场 经销商集体竟流入咸鱼甩尾货

旅游要闻

奉浦赏花指南!免费入园、无需预约,月季花岛正当时

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版