Karpathy 的 LLM Knowledge Base:用 AI 编译个人知识库
> 来源: https://x.com/karpathy/status/2039805659525644595
> 日期: 2026-04-02 (推文) / 2026-04-03 (报告)
> 作者: Andrej Karpathy(前 Tesla AI 总监,OpenAI 创始成员)
> 互动: 2.1 万赞 / 295 万浏览
🎯 一句话版本
Karpathy 发现:与其让 AI 帮你写代码,不如让 AI 帮你"编译知识"——把散乱的文章、论文、数据源丢进 raw/ 目录,LLM 自动生成一个互相链接的 Markdown Wiki,然后你可以对这个知识库做 Q&A、生成报告、做健康检查。
Karpathy 的完整工作流
架构图
原始数据源 LLM "编译器" 输出 & 查看
────────── ─────────── ──────────
文章 ─┐
论文 ─┤ ┌──────────────┐ Obsidian
代码 ─┼─→ raw/ 目录 ──→ │ LLM Agent │ ──→ .md Wiki
数据 ─┤ │ (编译+维护) │ ├── 概念文章
图片 ─┘ └──────┬───────┘ ├── 摘要索引
│ ├── 反向链接
┌──────┴───────┐ ├── Marp 幻灯片
│ Q&A / Lint │ └── matplotlib 图
│ 工具 + CLI │
└──────────────┘
↑
查询结果回写 Wiki
(知识持续积累)
六个阶段详解
1. 数据摄入(Data Ingest)
- 把各种来源(文章、论文、代码仓库、数据集、图片)索引到
raw/目录 - 用 Obsidian Web Clipper 浏览器插件把网页转成
.md文件 - 快捷键下载相关图片到本地(让 LLM 能引用)
- LLM 增量"编译" raw/ 为一个 Wiki:
- 对所有 raw/ 数据写摘要
- 分类为概念
- 为每个概念写文章
- 建立反向链接
关键洞察:他用了"编译"这个词——把非结构化数据"编译"成结构化知识,就像把源代码编译成可执行文件。
2. IDE(Obsidian 作为前端)
- Obsidian 同时查看:原始数据、编译后的 Wiki、生成的可视化
- LLM 写并维护所有 Wiki 内容,Karpathy 几乎不直接编辑
- 插件:Marp(幻灯片)等
3. Q&A(知识库问答)
- Wiki 达到一定规模后(~100 篇文章,~40 万词),可以对 LLM Agent 提各种复杂问题
- 不需要 RAG! LLM 自动维护索引文件和文档摘要,在这个规模下直接读取相关数据就够了
- Agent 会自动去研究答案
这是最反直觉的发现:Karpathy 原以为需要向量数据库 + RAG 管线,但发现在 ~400K 词的规模下,LLM 自己维护的索引 + 摘要就足够了。
4. 输出(多格式渲染)
- 不在终端看答案,而是让 LLM 渲染为:
- Markdown 文件
- Marp 幻灯片
- matplotlib 图表
- 在 Obsidian 里查看
- 查询结果会被"归档"回 Wiki——探索和提问本身就在增强知识库
5. Linting(知识库健康检查)
- 用 LLM 对 Wiki 做"健康检查":
- 找不一致的数据
- 补全缺失数据(用搜索引擎)
- 发现有趣的关联,推荐新文章候选
- 增量清理 Wiki,提升数据完整性
- LLM 善于建议"下一步该问什么"
6. 进阶探索
- 自制搜索引擎(Web UI + CLI)
- 作为 LLM 工具给 Agent 使用
- 未来方向:合成数据 + 微调——让 LLM 在权重里"知道"数据,而不只是上下文窗口
❓ "编译 Wiki"具体长什么样?
用一个具体例子说明 LLM 是怎么把 raw/ 数据"编译"成 Wiki 的。
输入:raw/ 目录
假设你在研究 Transformer 相关主题,raw/ 里有这些文件:
raw/
paper-attention-is-all-you-need.md ← Obsidian Web Clipper 抓的论文
blog-karpathy-llm-os.md ← 博客文章
repo-notes-vllm.md ← GitHub README 笔记
dataset-openwebtext-stats.md ← 数据集统计
screenshot-benchmark-results.png ← 截图
输出:LLM 自动生成的 Wiki
wiki/
concepts/
transformer.md ← 自动写的概念文章
attention-mechanism.md ← 自动提取的子概念
tokenization.md
inference-optimization.md
summaries/
_index.md ← 所有文档的一句话摘要索引
people/
karpathy.md ← 自动识别的人物
projects/
vllm.md ← 自动识别的项目
每篇 .md 内部的结构
以 transformer.md 为例:
# Transformer
## 概述
Transformer 是一种基于自注意力机制的神经网络架构...
## 关键组件
- [[attention-mechanism]] ← 双向链接(Obsidian 点击可跳转)
- [[tokenization]]
## 相关论文
- 来源: [[raw/paper-attention-is-all-you-need]]
- 来源: [[raw/blog-karpathy-llm-os]]
## 相关项目
- [[vllm]] — 高效推理引擎
## 关键数据
- 参数规模: 65M (原始) → 70B+ (2024)
- 来源: [[raw/dataset-openwebtext-stats]]
LLM 做的三件核心事
| 操作 | 说明 |
|---|---|
| **摘要** | 每个 raw 文件自动生成一句话摘要,汇总到 `_index.md` |
| **分类** | 自动从原始数据中提取概念、人物、项目,分别建文章 |
| **链接** | 用 `[[双括号]]` 格式建立文档间的交叉引用,形成知识图谱 |
"编译"的本质
就像 C 编译器把源代码 → 可执行文件:
源代码 (.c) → 编译器 → 可执行文件 (.exe)
散乱数据 (raw/) → LLM → 结构化 Wiki (wiki/)
每次新增 raw 文件,LLM 增量更新 Wiki(不是全部重写):新数据被摘要、分类、链接到已有的知识网络中。
为什么不需要 RAG?
因为 _index.md 就是一个"穷人版搜索引擎"——所有文档的一句话摘要都在一个文件里。LLM 查询时:
1. 先读 _index.md(几千词),找到相关文档
2. 再读相关文档全文
3. 综合回答
在 ~40 万词(约 500 页书)的规模下,这个策略完全够用。不需要向量数据库、不需要嵌入模型、不需要 Pinecone 或 Weaviate。
为什么这条推文重要?
1. Karpathy 效应
21,000 赞、295 万浏览——Karpathy 是 AI 领域最有影响力的个人之一。他的工作流会被大量开发者模仿。
2. 范式转移信号
> "a large fraction of my recent token throughput is going less into manipulating code, and more into manipulating knowledge"
Karpathy 明确说:他把越来越多的 token 从写代码转向管理知识。这意味着 LLM 的主要用途正在从 "AI Coding" 扩展到 "AI Knowledge Management"。
3. RAG 不是万能药
在 ~400K 词(约 500 页书)的规模下,纯 Markdown + LLM 自维护索引就够了。不需要向量数据库、不需要嵌入模型、不需要 Pinecone/Weaviate。这对很多过度工程化 RAG 管线的团队是一个清醒的信号。
4. "编译知识"是新范式
把 LLM 当成"知识编译器"——输入是散乱的原始数据,输出是结构化的 Wiki——这个比喻非常精确。而且他强调 Wiki 是 LLM 的领地,人类几乎不编辑。
我们正在做同样的事
这条推文读起来像是对我们 docs/deep-research/ 工作流的精确描述:
| Karpathy 的做法 | 我们的做法 |
|---|---|
| `raw/` 目录存原始数据 | `docs/deep-research/raw/` 存原始抓取 |
| LLM 编译成 .md Wiki | AI Agent 生成研究报告 (.md) |
| Obsidian 作为前端 | temp.jaylab.io 作为前端 |
| 查询结果回写 Wiki | "补充到 doc" 更新已有报告 |
| LLM 做健康检查 | (我们还没做,但应该做!) |
| 索引文件 + 摘要 | jaylab.io 首页自动生成索引 |
| Web Clipper 采集 | web_fetch + browser 抓取 |
区别:
- Karpathy 用 Obsidian 本地查看,我们部署到 Web
- Karpathy 手动触发 Q&A,我们是 Discord 驱动
- Karpathy 有搜索引擎工具,我们可以加 DuckDB 做结构化查询
可以借鉴的改进
1. 知识库 Linting ⭐
我们有 270+ 篇报告但从没做过"健康检查"。可以让 Agent:
- 找过时的信息(6 个月前的报告是否还准确?)
- 发现跨报告的关联(A 项目和 B 项目有什么联系?)
- 补全缺失数据
- 生成"研究空白"建议
2. 自动索引 + 摘要
Karpathy 让 LLM 自动维护索引文件。我们的 build.py 已经做了静态索引,但可以加一层 LLM 生成的语义索引:
- 每篇报告的一句话摘要
- 主题分类标签
- 跨报告关联图
3. 查询结果回写
目前我们的"补充到 doc"是手动触发的。可以自动化:Agent 的每次深度回答自动生成 appendix 附加到相关报告。
4. 合成数据 + 微调方向
Karpathy 提到的终极方向——用知识库生成训练数据来微调模型。配合 ub2 的 RTX 4090,我们有硬件条件做这件事(用 Qwen3.5 之类的模型做知识蒸馏)。
评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 思想深度 | 10/10 | "编译知识"范式极其精准,RAG 不必要的洞察很有价值 |
| 实用性 | 9/10 | 每一步都可以直接实操,不是空想 |
| 创新性 | 7/10 | 做法不新但把它说清楚了(很多人在做类似的事) |
| 影响力 | 10/10 | 2.1 万赞 + Karpathy 背书 = 行业级信号 |
| 与我们的相关性 | 10/10 | 我们的 deep-research 就是这个流程的实例 |
| **综合** | **9.0/10** |
关键链接
- 原文推文:https://x.com/karpathy/status/2039805659525644595
- Obsidian:https://obsidian.md/
- Obsidian Web Clipper:https://obsidian.md/clipper
- Marp (Markdown 幻灯片):https://marp.app/
- Notemd (Obsidian LLM 插件):https://www.obsidianstats.com/plugins/notemd
> 一句话总结:Karpathy 说出了很多人在做但没想清楚的事——LLM 最强的用途不只是写代码,而是"编译知识"。把散乱的信息源编译成结构化 Wiki,不需要 RAG,不需要向量数据库,Markdown + LLM 自维护索引就够了。我们的 deep-research 工作流就是这个范式的活体实践。