利用LLM构建个人知识库

  • karpathy
  • 发布于 23小时前
  • 阅读 26

Andrej Karpathy 介绍了利用 LLM 构建个人知识库的工作流:将原始资料通过 LLM 自动“编译”成包含摘要、分类和反向链接的 Markdown 维基,并以 Obsidian 作为前端展示。该系统支持自动化 Q&A、多种格式输出及维基健康检查,展示了如何利用 AI 实现从处理代码向自动化管理结构化知识的转变。

最近我发现一种非常有用的做法:利用大语言模型(LLM)为各种研究课题构建个人知识库。通过这种方式,我近期大部分的 Token 消耗不再是用于编写代码,而是用于处理知识(以 Markdown 和图片形式存储)。最新的 LLM 在这方面表现非常出色。

数据摄取:从原始文档到编译型 Wiki

我的流程是先将源文档(文章、论文、代码库、数据集、图像等)索引到 raw/ 目录中,然后使用 LLM 增量地“编译”出一个 Wiki。这个 Wiki 本质上是一个具有目录结构的 .md 文件集合。

Wiki 的内容包括:

  • raw/ 目录下所有数据的摘要。
  • Backlinks
  • 将数据分类为不同的概念,并为这些概念撰写文章并建立关联。

为了将网页文章转换为 .md 文件,我习惯使用 Obsidian Web Clipper 扩展,并配合快捷键将所有相关图片下载到本地,以便 LLM 能够轻松引用。

IDE:以 Obsidian 作为前端

我使用 Obsidian 作为“IDE 前端”,在这里我可以查看原始数据、编译后的 Wiki 以及衍生的可视化内容。

值得注意的是,Wiki 中的所有数据都由 LLM 编写和维护,我很少直接干预。此外,我还尝试了一些 Obsidian 插件来以其他方式渲染和查看数据(例如使用 Marp 制作幻灯片)。

问答与深度研究

Wiki 规模足够大时(例如我最近的一个研究项目包含约 100 篇文章和 40 万字),事情就变得有趣了。你可以针对 WikiLLM Agent 提出各种复杂的问题,它会去检索、研究并给出答案。

起初我以为需要使用复杂的 RAG(检索增强生成)技术,但在这种中小规模下,LLM 在自动维护索引文件和文档简要概述方面表现得非常好,能够相当轻松地读取所有重要的相关数据。

输出形式与可视化

我并不满足于在终端获取文本答案,而是倾向于让 LLM 为我渲染 Markdown 文件、幻灯片(Marp 格式)或 Matplotlib 图像,然后再次在 Obsidian 中查看。

根据查询需求,可以想象出许多其他的视觉输出格式。通常,我会将这些输出结果重新“归档”到 Wiki 中,以增强其应对未来查询的能力。这样,我个人的探索和查询过程总是在不断累积知识库的深度。

知识库治理:Linting 与健康检查

我会对 Wiki 进行一些 LLM “健康检查”,例如:

  • 查找不一致的数据。
  • 通过网络搜索补全缺失的信息。
  • 为新文章候选寻找有趣的关联点。

这些操作可以增量地清理 Wiki 并增强其整体数据的完整性。LLM 非常擅长建议进一步探索的问题。

辅助工具开发

我发现自己正在开发额外的工具来处理这些数据。例如,我通过“Vibe Coding”编写了一个简单的小型搜索引擎来检索 Wiki。我既可以直接在 Web UI 中使用它,也可以更频繁地通过 CLI 将其作为工具交给 LLM,以处理更大规模的查询。

未来探索方向

随着仓库的增长,自然的演进方向是考虑合成数据生成 + Finetuning。这样可以让 LLM 在其权重中“记住”这些数据,而不仅仅是依赖上下文窗口。

总结 (TLDR)

整个流程是:收集特定来源的原始数据,由 LLM 编译成 Markdown 格式的 Wiki,然后通过各种 CLI 工具由 LLM 进行问答和增量增强,所有内容均可在 Obsidian 中查看。你几乎不需要手动编写或编辑 Wiki,它是 LLM 的领地。我认为这里存在创造一种全新产品的空间,而不仅仅是一堆零散的脚本。

  • 原文链接: x.com/karpathy/status/20...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
karpathy
karpathy
江湖只有他的大名,没有他的介绍。