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 主导。
我觉得,这里其实有机会诞生一个非常强大的新产品,而不是一堆零散的脚本拼凑。