一只阿木木

Karpathy 的 LLM Wiki 知识库对齐:代码 + 论文笔记 + 阿语图片,graphify 怎么把它们拉回同一张地图?

多模态不是“更热闹”,而是让散落在 PDF、截图、白板照片里的“证据”,重新和代码对齐。

如果你做过这些事,就会懂我为什么执着“对齐”这两个字:复现论文、写技术方案、改架构、排线上事故……真正决定你能不能推进的,往往不是“你有没有总结”,而是——你能不能把“概念—证据—实现”串成一条可走的路径。而这些证据,经常根本不在代码里。

这一篇我会用 graphify 官方的 worked/mixed-corpus 基准案例,跑一遍“最小可复现的多模态入图”,并教你怎么把它迁移到你自己的真实项目(论文复现 / 设计决策回溯 / 团队知识库)。


0)这篇文章你能拿到什么“可交付物”(写作 & 实操双用)

跑完你会得到固定的三件套(非常适合截图、做动图、录屏讲解):

  • graphify-out/graph.html
    :交互式图谱(可搜索、可按社区过滤)
  • graphify-out/GRAPH_REPORT.md
    :结构审计报告(god nodes、意外连接、建议提问、需要复核的推断边)
  • graphify-out/graph.json
    :持久化图数据(后续 query/path 不需要每次重读原文件)

这三件套的意义是:你不再依赖“临时会话里的一次性理解”,而是把理解编译成一个可保存、可复查、可增量更新的结构层。


1)先讲清楚:graphify 的多模态不是噱头,它在解决“证据失踪”问题

我经常看到两种知识断裂:

  1. 论文/资料在 Notion、PDF、群聊截图里
  2. 实现细节在代码里

中间那条“为什么这么做”的链条,通常写在:白板照片、PR 评论截图、设计文档里的一段话、甚至一张别的语言的图里。你问 AI 助手,它会很努力“总结”,但它缺的是“证据地图”。

graphify 的定位就很直白:它支持把 代码、PDF、Markdown、截图、图表、白板照片一起丢进去,用视觉模型抽取概念与关系,把它们连成一个图。


2)我们用的案例是什么:worked/mixed-corpus(官方最小多模态基准)

graphify 在 README 里把这个基准定义为:graphify 源码的一小部分 + Transformer 论文笔记,用来测试“一次 run 混合文件类型”。它在 worked examples 表里给的数字是:4 个文件,token reduction 5.4x。

进入 worked/mixed-corpus/README.md,官方把语料写得很清楚:

  • raw/analyze.py
    :图分析模块(god_nodes、surprising_connections 等)
  • raw/build.py
    :图构建(NetworkX wrapper 等)
  • raw/cluster.py
    :Leiden 社区发现(cluster、score_all 等)
  • raw/attention_notes.md
    :带 arXiv 引用的 Transformer 论文笔记(Vaswani et al., 2017,含 arXiv 号 1706.03762)
  • 以及一个“可选图片” raw/attention_arabic.png:注意力论文里的阿语图(仓库不存 PNG,你需要自己从论文里截图保存进去)

这套语料非常适合做第二篇:它不是“堆大规模”,而是专门用来验证——多模态能不能在同一张图里共存、并且被可审计地标注出来。


3)实操:10 分钟跑通“代码 + 论文笔记 + 图片”的一次建图

3.1 安装与运行

graphify 的 PyPI 包名目前叫 graphifyy(多一个 y),但命令仍叫 graphify;README 写明这是临时命名。

Bash

pip install graphifyy
graphify install

然后在 worked/mixed-corpus/ 目录里运行:

text

/graphify ./raw

如果你要复现“图片也入图”,按官方说明把任意一张《Attention Is All You Need》的图保存为:

text

raw/attention_arabic.png

再跑一次 /graphify ./raw 即可。

3.2 你应该看到什么(官方给的预期)

官方在 mixed-corpus README 里给了“你跑完大概率会出现的现象”:

  • 仅 AST(3 个 Python)就会有 ~20 nodes、~19 edges
  • 社区划分大致对应三个模块角色:Graph Analysis / Clustering & Scoring / Graph Building
  • attention_notes.md
     会被识别为 paper(arXiv heuristic 对 1706.03762 生效)
  • 加图片会多一个“图像节点”(来自 vision 抽取)
  • token reduction:5.4x

这里你可以直接写一句“阿木木式提醒”:这还不是 graphify 最爽的规模,但它是最干净的‘对齐演示台’——你能清楚看到每一步到底贡献了什么。


4)先别急着看 graph.html:阿木木读图谱的第一原则——先读 GRAPH_REPORT.md

你打开 GRAPH_REPORT.md,会看到一份很“审计味”的报告,它会明确告诉你:

  • 这次语料规模是否“值得建图”(Corpus Check)
  • 图的规模、社区数量、推断比例(Summary)
  • 哪些节点是“核心枢纽”(God Nodes)
  • 哪些连接是你可能没想到的(Surprising Connections)
  • 哪些推断边需要你复核(Suggested Questions 里会点名)

以仓库自带的这份报告为例,它写的是:22 nodes、38 edges、5 个社区;推断/抽取各 50%;并且直接列出了最核心的函数节点(比如 _cross_file_surprises()、_is_file_node() 等)。

我特别喜欢它的“Suggested Questions”写法:它不是泛泛地让你“深入阅读”,而是明确指出哪些节点是跨社区桥(高 betweenness centrality),以及哪些节点的 INFERRED 边多、值得复核。

这就很像我一直强调的那句:**AI 不该只给结论,它要给你“下一步怎么验证”的路线图。


5)“论文被识别为 paper”不是小功能:它决定了你能不能把资料当“证据”管理

在 review.md(官方评测记录)里,对 attention_notes.md 的判定写得非常细:它之所以被归类为 paper,是因为命中了诸如 arXiv 标记、DOI、abstract、引用序号、以及 1706.03762 这类 arXiv 号的模式。

这件事的价值在于:当你的文件夹里混进“论文笔记 / 设计文档 / 普通说明文档 / 代码注释”,系统能先把它们分门别类,后续的抽取策略、连接权重(比如 code-paper 边更重要)才有可能做得更像“知识工程”,而不是“混在一起的文本”


6)多模态的高光时刻:阿语图片 OCR + 概念节点抽取(不需要任何预处理)

review.md 里有一段我觉得特别适合拿来做你文章的“名场面”:它展示了 graphify 用 Claude vision 直接读 阿拉伯语图片里的内容,并抽出关键概念与超参(例如 multi-head attention、h=8、d_model=512、d_k=d_v=64、6 encoder + 6 decoder、positional encoding、layer norm 等)。

官方评测的关键结论也写得很直白:不需要额外的 Arabic reshape / bidi 预处理库,视觉模型可以直接读并结构化这些信息。

对我来说,这不是“炫技”,而是一个现实问题的解法:很多团队的“关键证据”就存在截图里,而且经常是跨语言的——你如果只能处理英文 markdown,那你就会永久丢一块知识版图。


7)再往前一步:把“提问”也变成资产(这点很少有人讲,但很重要)

review.md 里还有一个非常“复利”的实验:它做了 3 个 query 测试,然后把 query 的结果保存到 graphify-out/memory/,接着再次扫描时,系统能检测到这些 memory 文件——也就是说,你问过的问题与答案,会变成下一轮建图的输入,形成反馈闭环。

这句话你可以直接写成你的个人观点(我建议你大声写出来):

**知识库不应该只由“你收集了什么”决定,还应该由“你真正问过什么”来生长。

它会让你的第二篇,从“多模态演示”升维成“知识系统会自我增量”的方法论铺垫。


8)把这个基准迁移到你的真实项目:阿木木的 3 个“对齐型”实战模板

下面这三种文件夹组织方式,你可以直接给读者当“作业”。重点不是目录长得多漂亮,而是:确保概念证据和实现共处一处,graphify 才能把它们编译到同一张图里。

模板 A:论文复现 / 模型实现对齐

text

raw/
├── paper.pdf
├── figures/
│   ├── fig1.png
│   └── ablation_table.png
├── notes.md          # 你自己的复现笔记,带 arXiv/doi/引用
└── impl/
    ├── model.py
    ├── attention.py
    └── training.py

你文章里可以给 3 个“强标题式提问”示例(读者很爱抄):

  • “paper 里的公式 X,对应代码里哪个函数/类?”
  • “fig1 里的模块图,和 impl 的文件结构有哪些对应关系/缺失?”
  • “notes 里提到的超参(h、d_model…),在训练脚本里最终是从哪里注入的?”

这些问题的价值是“对齐”,不是“总结”。

模板 B:架构决策回溯(白板/截图才是关键证据)

text

raw/
├── design/
│   ├── ADR_001.md
│   └── meeting_notes.md
├── screenshots/
│   ├── whiteboard_2026-04-xx.png
│   └── pr_comment.png
└── code/
    ├── service_a/
    └── service_b/

你要强调:graphify 明确支持把截图、白板照片入图,并用视觉抽取概念与关系。

模板 C:跨语言资料(别再手动翻译了,让证据先入图)

text

raw/
├── cn_notes.md
├── en_notes.md
├── jp_screenshots/
└── code/

这一招的核心不是“自动翻译”,而是先把信息变成结构节点,之后你再做解释与写作,会轻很多。


9)必须写清楚的底线:隐私与合规(这不是客套,是你的可信度)

graphify 在 README 里写得很明确:文档/论文/图片的语义抽取,会把内容发到你所用平台背后的模型 API(比如 Claude Code 对应 Anthropic、Codex 对应 OpenAI 等);但代码文件走本地 tree-sitter AST 处理,代码内容不会上传;同时项目声明无遥测、无使用跟踪,网络请求主要发生在抽取阶段且用你的 API key。

建议你在文末固定给一个“阿木木式操作规范”(读者会觉得你专业、也更敢跟着用):

  • 默认先写 .graphifyignore 排除敏感目录(语法同 .gitignore)
  • 敏感截图先打码再入库
  • 先在一个“脱敏样本文件夹”跑通流程,再上真项目

结尾:这一篇真正想说的,不是多模态,而是“可走的证据路径”

我写第二篇,不是为了证明 graphify “很强”,而是为了给你一个更大的视角:

当资料变多时,问题不再是“信息不够”,而是“证据散落”。
而散落的证据,只靠“总结”是捡不回来的;你需要一张地图,能把论文、笔记、截图、代码放在同一套结构里,让你能追溯、能复核、能持续更新。

下一篇我会把这个思路推到“复利”那一层:大语料 + 增量更新 + hooks + always-on 提示,也就是 graphify 在 README 里强调的 71.5x token 复利场景,看看它到底是营销数字,还是工作流质变。

 AII

Image

松花酿酒,春水煎茶。

眉上风止,见字如晤。

一只阿木木