LLM Personal Knowledge Base Pattern
Andrej Karpathy 提出的 LLM 个人知识库架构思想。
核心思想
传统 RAG:上传文档 → 查询时检索相关片段 → LLM 从头推导答案。每次问题都要重新发现知识,没有积累。
Karpathy 的方法:LLM 在摄入时就主动整合知识到持久 wiki,而非仅做索引。交叉引用、矛盾标记、合成分析在摄入时就完成了,知识随时间复合增长。
三层架构
Raw Sources Wiki Schema
(原始文档) → (LLM维护的md) → (CLAUDE.md/AGENTS.md)
- 不可变 - LLM 完全拥有 - 指导 LLM 如何
- 只读 - 创建/更新/维护 维护 wiki 的配置
- 来源信任 - 跨引用/一致性 - LLM 遵守的规范
1. Raw Sources(原始层)
- 文章、论文、图片、数据文件
- 不可变——LLM 只读取,不修改
- 这是你的信任根
2. Wiki(知识层)
- LLM 生成的 markdown 文件集合
- 实体页、概念页、对比页、概述、合成
- LLM 全权拥有此层:创建、更新、交叉引用、维护一致性
3. Schema(配置层)
- CLAUDE.md / AGENTS.md 等
- 定义 wiki 结构、规范、工作流
- LLM 据此成为有纪律的 wiki 维护者,而非通用聊天机器人
三个核心操作
Ingest(摄入)
- 把新文档放入原始收集
- 告诉 LLM 处理
- LLM 读取文档、与你讨论要点
- 写摘要页、更新索引、更新相关实体/概念页
- 追加日志
关键:单一文档可能涉及 10-15 个 wiki 页面,而非仅索引存储。
Query(查询)
- LLM 搜索相关页面、读取、合成答案
- 答案可呈现为:md 页面、对比表、幻灯片、图表、canvas
- 重要洞察:有价值的答案/分析应该存回 wiki,让探索成果也复合增长
Lint(检查)
周期性健康检查:
- 页面间矛盾
- 被新来源取代的老旧内容
- 孤立页面(无入站链接)
- 提及但未独立建页的重要概念
- 缺失的交叉引用
- 数据空白(可搜索补充)
两个特殊导航文件
index.md(内容导向)
- wiki 目录:每个页面链接 + 一句话摘要 + 元数据
- 按类别组织(实体/概念/来源等)
- LLM 每次摄入时更新
- 查询时 LLM 先读 index 定位相关页面,再深入
- 在中等规模(~100来源,数百页面)下效果很好,无需 embedding RAG 基础设施
log.md(时间导向)
- 按时间顺序的追加记录
- 记录发生了什么、来源是什么
- 不可变,纯粹的时间线
应用场景
| 场景 | 说明 |
|---|---|
| 个人成长 | 目标/健康/心理/自我提升,累积日记/文章/笔记 |
| 研究 | 数周/月深度主题,阅读论文构建综合 wiki |
| 读书 | 按章节归档,建角色/主题/情节页面,像 Tolkien Gateway 那样个人维护 |
| 团队知识 | 内部 wiki,来源包括 Slack/会议记录/项目文档 |
| 竞品分析/尽职调查/旅行规划/课程笔记 | 任何需要时间积累的知识整理 |
对比:Wiki 方式 vs 传统 RAG
| 传统 RAG | LLM Wiki(Karpathy) | |
|---|---|---|
| 知识处理 | 查询时重新推导 | 摄入时编译,持久化 |
| 交叉引用 | 无,需要 LLM 每次推理 | 预建,随增长复合 |
| 矛盾处理 | 无 | 主动标记 |
| 知识复合 | 否,每次独立 | 是,随来源增加而增长 |
| 适用规模 | 大量文档快速检索 | 中等规模深度积累 |
炸弹的现有实践对照
炸弹的 Obsidian 日记库 + 知识库实际上已经在践行类似思路:
- Raw Sources →
/mnt/obsidian日记库(不可变原始记录) - Wiki →
workspace/知识库/(LLM 帮忙整理和维护的结构化文档) - Schema →
SOUL.md+AGENTS.md(指导 LLM 如何工作的配置) - Ingest → 知识库写入工作流
- Query → 知识库检索
- Lint → 待实践(定期检查 wiki 健康度)
可以补充的:
- 定期 Lint 机制(每周一次健康检查)
- log.md 时间线记录(目前只有 index,没有活动日志)
- 鼓励”有价值的对话结论也存入 wiki”的习惯