Andrej Karpathy LLM 整理知识系统

LLM 知识库

Andrej Karpathy 最近发现一件非常有用的事情:用大语言模型(LLM)为各种研究主题构建个人知识库。这样一来,最近的大量 token 使用不再主要用于操作代码,而是更多用于处理知识(以 markdown 和图片形式存储)。最新的 LLM 在这方面已经做得相当不错。具体来说:

数据摄取(Data ingest)

我会把各种来源的文档(文章、论文、代码仓库、数据集、图片等)索引到一个 raw/ 目录中,然后使用 LLM 逐步“编译”出一个 wiki,本质上就是一个由 .md 文件构成的目录结构。

这个 wiki 包括:

  • raw/ 中所有数据的总结
  • 反向链接(backlinks)
  • 按概念对数据进行分类
  • 为这些概念撰写条目
  • 并将所有内容相互链接

为了把网页文章转成 .md 文件,我喜欢使用 Obsidian Web Clipper 插件。同时我还会用快捷键把相关图片全部下载到本地,这样 LLM 就可以方便地引用它们。


IDE

我使用 Obsidian 作为 IDE 的“前端”,用来查看原始数据、编译后的 wiki,以及派生出来的可视化内容。

需要强调的是: wiki 的所有内容基本都是由 LLM 编写和维护的,我几乎不会手动修改。

我也尝试了一些 Obsidian 插件,用于以不同方式展示数据(例如用 Marp 做幻灯片)。


问答(Q&A)

有意思的地方在于:当你的 wiki 足够大(例如我最近的某个研究大约有 ~100 篇文章、~40 万字),你就可以针对这个 wiki 向 LLM agent 提各种复杂问题,它会自己去检索、研究并给出答案。

我原以为需要用复杂的 RAG(检索增强生成),但实际上 LLM 在自动维护索引文件和文档摘要方面表现很好,在这种“中小规模”下,它已经能较轻松地读取相关数据并完成任务。


输出(Output)

相比直接在文本或终端中得到答案,我更喜欢让它输出为:

  • markdown 文件
  • 幻灯片(Marp 格式)
  • matplotlib 图像

然后再在 Obsidian 中查看这些结果。

根据不同问题,还可以扩展更多可视化输出形式。 而且,我经常会把这些输出“归档”回 wiki 中,让知识库不断增长。

👉 也就是说,我的探索和提问本身会持续沉淀进知识库。


质量检查(Linting)

我还会用 LLM 对整个 wiki 做“健康检查”,例如:

  • 查找数据不一致
  • 填补缺失数据(结合网页搜索)
  • 挖掘潜在关联,生成新条目候选

从而逐步清理和提升知识库的数据质量。 LLM 在提出“接下来应该研究什么问题”方面也非常擅长。


额外工具(Extra tools)

我也在开发一些辅助工具来处理数据,比如:

  • 我写了一个简单(甚至有点 naive)的 wiki 搜索引擎
  • 可以通过 Web UI 使用
  • 更常见的是通过 CLI 作为工具交给 LLM,用于更复杂的查询

进一步探索(Further explorations)

随着仓库不断增长,自然会开始思考:

  • 用合成数据(synthetic data)
    • 微调(finetuning)

让 LLM 把这些知识“学进权重里”,而不仅仅依赖上下文窗口。


总结(TL;DR)

从多个来源收集原始数据 → 用 LLM 编译成 .md wiki → 再通过各种 CLI 工具由 LLM 进行问答和持续增强 → 全部内容在 Obsidian 中可视化查看

而你几乎不需要手动编辑 wiki,它完全由 LLM 主导。

我觉得,这里其实有机会诞生一个非常强大的新产品,而不是一堆零散的脚本拼凑。

发表评论