@karpathy LLM 知识库 我最近发现很有用的一点:使用…
@karpathy LLM Knowledge Bases Something I'm finding very useful recently: using…
作者介绍用 LLM 构建个人研究知识库:将文章、论文、repo、dataset、图片等索引到 raw/,由 LLM 增量编译为 .md wiki,含摘要、backlink 与概念文章;用 Obsidian 查看,用 agent 做 Q&A、生成 Marp 或 matplotlib 输出,并通过 health check、CLI 工具和可能的 finetuning 持续维护。
LLM Knowledge Bases(知识库)
我最近发现一件很有用的事:用 LLM 为各种感兴趣的研究主题构建个人知识库。这样一来,我最近很大一部分 token 吞吐不再主要用于处理代码,而是更多用于处理知识(以 markdown 和图片形式存储)。最新的 LLM 在这方面做得相当好。所以:
数据摄取: 我把源文档(文章、论文、repo、dataset、图片等)索引到 raw/ 目录,然后用 LLM 增量式地“编译”一个 wiki,也就是目录结构中的一组 .md 文件。这个 wiki 包含 raw/ 中所有数据的摘要、backlink,然后把数据归类到不同概念下,为这些概念撰写文章,并把它们相互链接起来。为了把网页文章转换成 .md 文件,我喜欢用 Obsidian Web Clipper 扩展,然后我也会用一个 hotkey 把所有相关图片下载到本地,这样我的 LLM 就能方便地引用它们。
IDE: 我把 Obsidian 当作 IDE 的“frontend”,在里面查看原始数据、编译后的 wiki,以及派生出来的可视化内容。需要注意的是,wiki 的所有数据都是由 LLM 编写和维护的,我很少直接改它。我试过一些 Obsidian plugin,用其他方式渲染和查看数据(例如用 Marp 做 slide)。
Q&A: 有意思的地方在于,一旦你的 wiki 足够大(例如我最近某个研究主题的 wiki 大约有 100 篇文章、约 400K 词),你就可以让 LLM agent 针对这个 wiki 回答各种复杂问题,它会自己去研究答案等。我原以为必须使用复杂的 RAG,但在这种约小规模下,LLM 已经很擅长自动维护 index 文件和所有文档的简短摘要,并且能相当轻松地阅读所有重要的相关数据。
输出: 比起在 text/terminal 里得到答案,我更喜欢让它为我渲染 markdown 文件、slide show(Marp 格式)或 matplotlib 图片,然后我再在 Obsidian 里查看。根据 query,你可以想象还有很多其他可视化输出格式。很多时候,我最后会把这些输出“归档”回 wiki,用来增强它,以便后续 query 使用。所以我自己的探索和 query 总是会在知识库里不断“累积”。
Linting: 我在 wiki 上运行过一些 LLM “health check”,例如查找不一致的数据、补全缺失数据(通过 web searcher)、发现可作为新文章候选的有趣关联等,用来增量清理 wiki,并增强整体数据完整性。LLM 很擅长建议下一步可以提出和研究哪些问题。
额外工具: 我发现自己会开发一些额外工具来处理数据,例如我 vibe coded 了一个小而简单的 wiki search engine。我既会直接使用它(通过 web UI),但更常见的是,我想把它通过 CLI 交给 LLM,作为更大 query 的工具。
进一步探索: 随着 repo 增长,一个自然的想法是进一步考虑 synthetic data generation + finetuning,让你的 LLM 把这些数据“知道”在权重里,而不仅仅依赖 context window。
TLDR:从若干来源收集 raw data,然后由 LLM 编译成一个 .md wiki,再由 LLM 通过各种 CLI 对其操作,进行 Q&A,并增量增强这个 wiki;所有内容都可以在 Obsidian 中查看。你几乎很少手动编写或编辑这个 wiki,它是 LLM 的领域。我认为这里有空间做出一个很好的新产品,而不是一堆 hacky script 的集合。