Andrej Karpathy 最新分享,搭建个人 AI 知识库的全流程。

Andrej Karpathy 最新分享,搭建个人 AI 知识库的全流程。

最近我发现一个非常有用的方法,利用 AI 大语言模型,为各种感兴趣的研究主题构建个人知识库。

这样一来,我近期很大一部分的 token 消耗不再用于处理代码,而是更多地用于处理知识(以 Markdown 和图片的形式存储),最新的 LLM 在这方面表现得相当出色。

具体做法如下:

1、数据录入

我将源文件(文章、论文、代码库、数据集、图片等)索引到一个 raw/ 目录中,然后使用 LLM 逐步编译出一个 wiki,这实际上就是一个目录结构下的 .md 文件集合。

该 wiki 包含了 raw/ 目录中所有数据的摘要、反向链接,随后它会将数据分类为不同的概念,为这些概念撰写文章,并将它们全部关联起来。

为了将网络文章转换为 .md 文件,我喜欢使用 Obsidian Web Clipper 扩展插件,并且我还会使用快捷键将所有相关图片下载到本地,以便我的 LLM 能够轻松引用它们。

2、IDE编辑器

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

需要特别指出的是,wiki 中的所有数据都是由 LLM 编写和维护的,我极少直接去修改它。

我还尝试了一些 Obsidian 插件,以其他方式渲染和查看数据(例如用 Marp 制作幻灯片)。

3、问答

有趣的地方在于,一旦你的 wiki 变得足够庞大(例如,我最近关于某项研究的 wiki 包含约 100 篇文章和 40 万字),你就可以向你的 LLM 智能体提出关于该 wiki 的各种复杂问题,它就会自行去研究并寻找答案。

我本以为需要用上花哨的 RAG技术,但事实证明,LLM 在自动维护所有文档的索引文件和简短摘要方面做得非常好,并且在这种相对较小的规模下,它能相当轻松地读取所有重要的相关数据。

4、输出

我不喜欢在纯文本/终端中获取答案,而是喜欢让它为我渲染 Markdown 文件、幻灯片(Marp 格式)或 matplotlib 图像,然后我可以在 Obsidian 中再次查看所有这些内容。

根据查询的不同,你可以想象出许多其他可视化的输出格式。通常情况下,我最终会将这些输出内容重新归档回 wiki,以丰富它并服务于后续的查询。

因此,我自己的探索和查询总是能在知识库中不断积累。

5、数据检查

我对 wiki 运行了一些 LLM 健康检查,例如查找不一致的数据、补充缺失的数据(借助网络搜索)、为新文章的候选主题寻找有趣的连接点等,以此逐步清理 wiki 并提高其整体的数据完整性。

LLM 在建议需要进一步提问和深入探讨的问题方面也非常在行。

6、额外工具

我发现自己正在开发额外的工具来处理数据,例如,我凭 vibe coded 了一个基于该 wiki 的小型且简单的搜索引擎,我既会直接使用它(通过网页 UI),但更多时候,我希望将其作为工具通过 CLI 交给 LLM,用于处理更大型的查询。

7、进一步探索

随着知识库的增长,人们自然而然会想到合成数据生成 + 微调,让 LLM 在其权重中真正记住这些数据,而不仅仅是依赖上下文窗口。

8、总结

从一定数量的来源收集原始数据,然后由 LLM 将其编译成 .md 格式的 wiki,接着由 LLM 通过各种 CLI 进行操作以进行问答并逐步增强 wiki,最后所有内容都可以在 Obsidian 中查看。

你几乎不需要手动编写或编辑 wiki,那是 LLM 的工作领域。我认为这有潜力做成一个令人惊叹的新产品,而不仅仅是一堆东拼西凑的脚本。

9、顺着这个思路自然推演下去,你可以想象,对前沿级别 LLM 的每一次提问,都能衍生出一个 LLM 团队来将整个过程自动化。

迭代地构建一个完整的临时 wiki,对其进行检查,循环几次,最后写出一份完整的报告。这已经远远超出了单纯的 .decode() 输出。

传送门:x.com/karpathy/status/2039805659525644595?s=20

##

分类