1 minute read

WikiLLM

利用 LLM 构建个人知识库的系统。WikiLLM 将原始素材”编译”成结构化、交叉链接的高质量中文 Wiki,可在 Obsidian 中查看。

本项目基于 Andrej Karpathy 提出的理念构建。详见:LLM Knowledge Bases

项目概述

WikiLLM 的工作流包括:

  1. 数据摄入:源文档(文章、论文、代码库、数据集、图像)被索引到 raw/ 目录
  2. Wiki 编译:LLM 增量地”编译”原始数据成 markdown 文件的 wiki,包含摘要、反向链接、分类概念和相互链接的文章
  3. IDE:Obsidian 用作前端查看原始数据、编译后的 wiki 和可视化
  4. 问答:LLM 可以通过研究相关数据来回答针对 wiki 的复杂问题
  5. 输出:结果渲染为 markdown 文件、Marp 幻灯片或 matplotlib 图像,可在 Obsidian 中查看
  6. Linting:LLM”健康检查”发现不一致、填补缺失数据、建议新文章候选
  7. 额外工具:诸如 wiki 上的朴素搜索引擎等额外工具

核心原则

  • LLM 编写和维护所有 wiki 数据;手动编辑很少见
  • 用户探索和查询被归档回 wiki 以增强它
  • 系统专注于 markdown 文件和 Obsidian 兼容格式
  • 图像被下载到本地 以便 LLM 轻松引用

目录结构

wikillm/
├── raw/              # 源文档和未处理数据
├── wiki/             # LLM 编译的 markdown wiki
│   ├── concepts/     # 核心概念文章
│   ├── practices/    # 实践指南文章
│   ├── visual/       # 可视化内容
│   ├── queries/      # 查询存档
│   ├── assets/       # 图像和资源文件
│   ├── INDEX.md      # 首页索引
│   └── Glossary.md   # 术语表
├── skills/           # Claude Code 技能
├── CLAUDE.md         # 项目特定的 Claude 指令
└── README.md         # 本文件

当前内容

本 wiki 当前包含关于 Harness Engineering 的综合知识库,基于以下来源编译:

  • OpenAI - Harness Engineering:在智能体优先的世界中利用 Codex
  • Anthropic - Harness design for long-running application development
  • Martin Fowler - Harness engineering for coding agent users
  • LangChain - Improving Deep Agents with harness engineering
  • NxCode - Harness Engineering: The Complete Guide
  • MiniMax - MiniMax M2.7: Early Echoes of Self-Evolution
  • Mitchell Hashimoto - My AI Adoption Journey

快速开始

在 Obsidian 中查看

  1. 下载并安装 Obsidian
  2. 在 Obsidian 中打开本仓库作为 vault
  3. wiki/INDEX.md 开始探索

Obsidian 索引

使用技能

本项目包含 Claude Code 技能用于生成 wiki:

# 在 Claude Code 中
/skills wiki 编译

技能界面

详细说明请参阅 skills/SKILL.md


Andrej Karpathy: LLM Knowledge Bases

最近我发现一个非常实用的方法:利用大语言模型(LLM)为各类感兴趣的研究方向搭建个人知识库。这样一来,我近期消耗的模型令牌中,用于处理代码的占比大幅减少,更多被用于处理知识(以 Markdown 文件和图片形式存储)。

最新的大语言模型在这方面表现十分出色。具体做法如下:

数据导入

我先将各类源文件(文章、论文、代码仓库、数据集、图片等)归档到 raw/ 目录下,再通过大语言模型逐步“编译”生成一份知识库,这份知识库本质就是按目录结构组织的一系列 .md 文件。 知识库会包含 raw/ 目录下所有数据的摘要、反向链接,还会将数据按概念分类、撰写对应词条并完成相互关联。 为把网页文章转为 .md 文件,我习惯使用 Obsidian 网页剪藏插件,同时通过快捷键将相关图片批量下载到本地,方便大语言模型直接调用。

集成开发环境

我把 Obsidian 当作前端 IDE,既能查看原始数据、编译后的知识库,也能查看衍生的可视化内容。 需要重点说明的是:整个知识库的内容撰写与维护均由大语言模型完成,我几乎不直接手动修改。我还试用过多款 Obsidian 插件,以其他形式渲染和查看数据(比如用 Marp 制作幻灯片)。

问答交互

真正有意思的是,当知识库规模足够大时(比如我近期的研究知识库已有约 100 篇词条、40 万字),就可以向大语言模型智能体提出各类复杂问题,它会自主检索、梳理并给出答案。 我原本以为需要用上复杂的检索增强生成(RAG)技术,但在当前这种小规模场景下,大语言模型能自动维护索引文件和所有文档的精简摘要,轻松读取全部关键相关数据,效果已经很好。

结果输出

我不满足于仅在文本或终端获取答案,更倾向于让模型直接生成 Markdown 文件、幻灯片(Marp 格式)或 Matplotlib 图表,所有内容都能在 Obsidian 中查看。 根据不同查询需求,还可以生成更多种可视化格式。通常我会把这些输出结果“归档”回知识库,进一步丰富内容,让后续的查询和探索持续为知识库积累价值。

内容校验

我会让大语言模型对知识库进行“健康检查”,比如排查数据矛盾、通过联网搜索补全缺失信息、挖掘潜在关联以生成新词条候选等,逐步优化知识库、提升整体数据完整性。大语言模型还很擅长提出值得进一步探究的问题。

辅助工具

我还自行开发了一些数据处理工具,比如快速编写了一个简易的知识库搜索引擎,既可以通过网页界面直接使用,也更常通过命令行接口(CLI)将其作为工具交给大语言模型,用于处理更复杂的查询。

后续探索

随着知识库仓库不断扩容,自然而然会考虑结合合成数据生成与模型微调,让大语言模型通过模型权重“真正记住”这些数据,而不只是依赖上下文窗口。

总结

从多个来源收集原始数据,由大语言模型编译为 Markdown 格式知识库;再通过各类命令行工具驱动大语言模型完成问答,并逐步完善知识库,所有内容均可在 Obsidian 中查看。几乎无需手动编写或编辑知识库,全程由大语言模型主导维护。我认为这一方向完全有潜力诞生一款出色的新产品,而非目前这种零散脚本的组合方案。

Updated: