目录

传统 RAG 存在的问题

现在主流的知识库(如 ChatGPT 文件上传、NotebookLM)都是基于 RAG 技术的:上传文档,提问,AI 检索相关片段,生成回答。

Karpathy 觉得这个方式有个致命问题:没有积累。对于每次新的提问,LLM 都得从原始文档里重新找、重新拼。问完了,答案就没了,下次还得重新推导一遍。知识从来没有被真正沉淀下来。

Karpathy LLM-wiki 新方案的理念

Karpathy LLM-wiki 方案的核心思想是:不要把 LLM 当搜索引擎用,让它像程序员维护代码库一样帮你持续维护一个 Markdown Wiki —— 一个结构化的、互相链接的 Markdown 文件集合。

也就是说,让 LLM 不是每次从原始文档里检索,而是持续地、增量式地构建和维护一个 Wiki。当你往里面添加一个新的资料来源,LLM 不是简单地把它索引进去等着以后被检索。而是它会读这个资料,提取关键信息,然后把信息整合进已有的 Wiki 里,包括:更新相关实体的页面、修正主题摘要、标注新数据和旧结论的矛盾之处。

如此的,LLM-Wiki 成为了一个持久的、可复利增长的资产。交叉引用已经建好了,矛盾已经标记出来了,综合分析已经反映了你读过的所有内容。每加一个新来源、每问一个好问题,Wiki 都会变得更丰富。

Karpathy 的实践表明,在中等规模的数据集上,LLM 本身已经具备足够强的 “自检索” 与 “自组织” 能力。这意味着,一部分复杂的系统设计,可能正在被模型能力的提升所 “吞噬”。

在这里插入图片描述

三层架构

  1. 第一层是 Raw Sources,原始资料层。你收集的论文、文章、图片、数据文件都放这儿。这层是不可变的,LLM 只读不写,这是你的搞到的原始数据来源。
  2. 第二层是 The Wiki,知识库层。这是 LLM 生成的 Markdown 文件目录,包括摘要、实体页面、概念页面、对比分析、综述等等。这层完全由 LLM 拥有和维护,你读它,LLM 写它。
  3. 第三层是 The Schema,规则文件。它告诉 LLM 这个 Wiki 怎么组织、用什么约定、录入来源和回答问题时遵循什么流程。对 Claude Code 来说就是 CLAUDE.md,对 Codex 来说就是 AGENTS.md。这是关键的配置文件,让你和 LLM 随着使用不断迭代优化。

三个核心操作

  1. 第一个是 Ingest,录入。你往原始资料目录里丢一个新文件,让 LLM 处理。LLM 会读这个资料、跟你讨论要点、在 Wiki 里写一个摘要页、更新索引、更新相关的实体和概念页面。一个来源可能牵动 10 到 15 个 Wiki 页面的更新。Karpathy 说他喜欢一个一个录入,边录边看,引导 LLM 重点关注意什么。
  2. 第二个是 Query,提问。你对着 Wiki 提问,LLM 搜索相关页面后综合回答。回答的形式可以很多样:Markdown 页面、对比表格、Marp 幻灯片、matplotlib 图表都行。好的回答可以回存到 Wiki 里,变成新的页面。这样你每次的探索和提问都在持续丰富知识库,知识在复利增长。
  3. 第三个是 Lint,体检。定期让 LLM 对 Wiki 做健康检查。找页面之间的矛盾、被新资料取代的过时信息、没有入链的孤儿页面、提到但没有独立页面的重要概念、缺失的交叉引用。LLM 还很擅长建议你应该去研究什么新问题、找什么新资料。这一步保证 Wiki 在增长过程中保持健康。

索引与日志

index.md 做内容目录,log.md 做时间线日志。

两个特殊文件帮助 LLM(和你)在 Wiki 扩大后依然能高效导航,二者用途不同:

  • index.md 是内容导向的。它是整个 Wiki 的目录。每个页面都附有链接、一句话摘要,以及可选的元数据(如日期、资料来源数量),按类别组织(实体、概念、来源等)。LLM 在每次录入时更新它。回答问题时,LLM 先读索引找到相关页面,再深入阅读。在中等规模(约 100 份资料、数百个页面)下,这套方式效果出奇地好,也无需搭建基于向量嵌入的 RAG 基础设施。

  • log.md 是时间导向的。它是一份只追加不修改的操作记录,记录发生了什么、发生在什么时候。包括录入、查询、检查等操作。一个实用技巧:如果每条记录以固定前缀开头(例如 ## [2026-04-02] ingest | 文章标题),日志就变得可以用简单的 Unix 工具来处理,例如:grep "^## \[" log.md | tail -5 就能列出最近 5 条记录。日志给你提供了 Wiki 演进的时间线,也帮助 LLM 了解最近做过什么。

实操构建自己的 LLM-wiki 知识库

LLM-Wiki 的实践很简单,因为 Karpathy LLM-wiki 的本质就是一个 “理念”,安装好 Claude Code 和 Obsidian 之后,创建一个新目录,再让 Claude Code 帮你自动构建即可。

  • Gist 地址:gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
    在这里插入图片描述

提示词如下:

基于 gist.github.com/karpathy/442a6bf555914893e9891c11519de94f 的内容,帮我复现 Karpathy LLM-wiki 的效果,我这个个人wiki的研究主题是大模型相关的技术。

使用时,我们只需要一边开着 Claude Code、一边开着 Obsidian。然后把各种原始素材(文章、论文、代码库、数据集等)放入到 raw/ 目录下,再让 LLM 把这些素材 “编译” 成一个结构化的 Markdown Wiki。过程中,LLM 会根据 raw 素材实时更新 Wiki,人可以在 Obsidian 里实时浏览结果。打开 “关系图谱” 然后跟着图谱视图和链接点点看、读读更新后的 wiki 页面。

用 Karpathy 的话说:Obsidian 是 IDE,LLM 是程序员,Wiki 是代码库。

在这里插入图片描述

特别注意

特别需要注意的是,个人知识库是为了让知识有用,而不是为了画一张好看的 “知识图谱”。在 Karpathy 的理念里,人的学习和判断贯穿始终,如果仅仅是把文章丢进 Obsidian,那么和疯狂收藏文章却不阅读它没有区别。

所以在使用 LLM-wiki 的过程中,最重要的事掌握一种 “知识管理” 工具和方法论。而真正的知识管理是一个过程,是信息从输入到加工、再到内化的一整个闭环过程。需要人类来进行学习、判断、提问、提炼。

LLM-wiki 原文(中文)

一种使用 LLM 构建个人知识库的模式。

这是一份理念文档,设计用于直接复制粘贴给你的 LLM Agent(如 OpenAI Codex、Claude Code、OpenCode/Pi 等)。它的目标是传达高层次的核心思想,具体细节由你的 Agent 与你协作来落地。

核心思想

大多数人使用 LLM 处理文档的方式类似 RAG:上传一批文件,LLM 在查询时检索相关片段,然后生成答案。这种方式可用,但 LLM 每次回答问题时都在从零重新发现知识,没有任何积累。如果问一个需要综合五份文档的细微问题,LLM 每次都得重新找到并拼凑相关片段,什么都没有沉淀。NotebookLM、ChatGPT 文件上传以及大多数 RAG 系统都是这样工作的。

这里的思路不同。与其在查询时从原始文档中检索,LLM 会持续构建并维护一个永久性的 wiki —— 一组结构化、相互关联的 Markdown 文件,作为你和原始资料之间的知识中间层。当你添加一个新来源时,LLM 不只是为日后检索建立索引,而是读取它,提取关键信息,并将其整合进现有的 wiki —— 更新实体页面、修订主题摘要、标注新数据与旧论断的矛盾之处,不断强化或挑战已形成的知识综合体。知识只编译一次,然后保持持续更新,而不是每次查询时重新推导。

这是关键区别:wiki 是一个持久、复利积累的产物。 交叉引用已经建立好了。矛盾已经被标记出来了。知识综合体已经反映了你读过的一切。每添加一个来源、每提出一个问题,wiki 都会变得更丰富。

你从不(或很少)自己编写 wiki —— LLM 负责编写和维护所有内容。你负责来源的筛选、探索方向的把控以及提出有价值的问题。LLM 承担所有繁琐的工作 —— 摘要、交叉引用、归档,以及让知识库真正有价值的日常维护。在实践中,我会把 LLM Agent 和 Obsidian 并排打开:LLM 根据我们的对话做出修改,我实时浏览结果 —— 跟着链接跳转,查看知识图谱,阅读更新后的页面。Obsidian 是 IDE,LLM 是程序员,wiki 是代码库。

这种模式可以适用于很多不同的场景,举几个例子:

  • 个人成长:追踪自己的目标、健康、心理、自我提升 —— 归档日记、文章、播客笔记,逐步构建出关于自己的结构化图景。
  • 深度研究:在数周或数月内深入研究某个主题 —— 阅读论文、文章、报告,持续构建一个拥有不断演进核心论点的全面 wiki。
  • 阅读一本书:边读边归档每一章,为人物、主题、情节线索及其关联建立页面。读完时,你已经拥有一个丰富的配套 wiki。想想 Tolkien Gateway 那样的粉丝 wiki —— 数千个相互关联的页面,覆盖人物、地点、事件、语言,由志愿者社区耗时多年建成。你可以在阅读时亲手打造类似的东西,由 LLM 处理所有交叉引用和维护工作。
  • 商业/团队:由 LLM 维护的内部 wiki,以 Slack 讨论串、会议记录、项目文档、客户通话为输入,必要时有人工审核更新。wiki 之所以能保持最新,是因为 LLM 承担了团队中没人愿意做的维护工作。
  • 竞品分析、尽职调查、旅行规划、课程笔记、兴趣深潜 —— 凡是需要随时间积累知识、并希望知识有条理而非零散的场景,都适用。

架构

共三层:

原始来源(Raw sources) —— 你精心筛选的原始文档集合:文章、论文、图片、数据文件。这一层不可变 —— LLM 只读不写。这是你的信息真实来源。

Wiki —— 一个存放 LLM 生成的 Markdown 文件的目录:摘要、实体页面、概念页面、对比分析、总览和综合论述。LLM 完全拥有这一层:创建页面、在新来源加入时更新页面、维护交叉引用、保持一致性。你来阅读,LLM 来书写。

Schema(纲要文件) —— 一份告诉 LLM wiki 结构、约定规范和工作流程的配置文档(如 Claude Code 用的 CLAUDE.md,或 Codex 用的 AGENTS.md)。这是核心配置文件 —— 正是它让 LLM 成为一个有纪律的 wiki 维护者,而不是泛用聊天机器人。你和 LLM 会随着实践的推进共同演进这份文档,找到最适合你的方式。

操作流程

Ingest(摄入):将新来源放入原始集合,告知 LLM 处理它。示例流程:LLM 读取来源,与你讨论关键收获,在 wiki 中撰写摘要页,更新索引,更新 wiki 中相关的实体和概念页面,并在日志中追加条目。一个来源可能触及 10-15 个 wiki 页面。我个人倾向于一次摄入一个来源并全程参与 —— 阅读摘要,检查更新,引导 LLM 侧重哪些内容。但你也可以一次批量摄入多个来源,较少介入。具体取决于你,把适合自己的工作流程记录在 schema 中供以后的会话参考。

Query(查询):对 wiki 提问。LLM 搜索相关页面,读取内容,综合生成带引用的回答。回答的形式可以多样,取决于问题 —— Markdown 页面、对比表格、幻灯片(Marp)、图表(matplotlib)、画布。重要的洞见:好的回答可以作为新页面归档回 wiki。 你询问的一次对比分析、一个发现的关联 —— 这些都有价值,不应消失在聊天记录里。这样,你的探索就像摄入的来源一样,在知识库中持续复利积累。

Lint(健康检查):定期让 LLM 对 wiki 做健康检查,寻找:页面间的矛盾之处、被新来源取代的过时论断、没有入站链接的孤立页面、被提及但缺乏专属页面的重要概念、缺失的交叉引用、可通过网络搜索填补的知识空白。LLM 很擅长建议值得深入调查的新问题和值得寻找的新来源,让 wiki 随增长保持健康。

索引与日志

两个特殊文件帮助 LLM(和你)在 wiki 增长时导航:

index.md 以内容为导向,是 wiki 中所有内容的目录 —— 每个页面都有链接、一句话摘要,以及可选的元数据(如日期或来源数量),按分类组织(实体、概念、来源等)。LLM 在每次摄入时更新它。回答查询时,LLM 先读索引定位相关页面,再深入阅读。这种方式在中等规模(约 100 个来源、数百个页面)下效果出奇地好,也避免了引入基于 Embedding 的 RAG 基础设施的需要。

log.md 以时间为导向,是所有操作(摄入、查询、健康检查)的只追加记录,记录发生了什么以及何时发生。一个实用技巧:如果每条记录以统一前缀开头(如 ## [2026-04-02] ingest | 文章标题),日志就可以用简单的 Unix 工具解析 —— grep "^## \[" log.md | tail -5 即可获取最近 5 条记录。日志为你呈现 wiki 演进的时间线,也帮助 LLM 了解最近做了什么。

可选:CLI 工具

到某个阶段,你可能想构建小工具帮助 LLM 更高效地操作 wiki。最显而易见的是 wiki 页面搜索引擎 —— 小规模时索引文件已够用,但随 wiki 增长你会需要真正的搜索能力。qmd 是一个不错的选择:它是针对 Markdown 文件的本地搜索引擎,支持 BM25/向量混合搜索和 LLM 重排序,完全本地运行,提供 CLI(LLM 可通过 shell 调用)和 MCP Server(LLM 可作为原生工具使用)两种接口。你也可以自己构建更简单的方案 —— LLM 可以帮你"随手写"一个简易搜索脚本,按需而为。

技巧与建议

  • Obsidian Web Clipper 是一个浏览器扩展,可将网页文章转换为 Markdown,非常适合快速将来源纳入原始集合。
  • 本地下载图片:在 Obsidian 设置 → 文件与链接中,将"附件文件夹路径"设为固定目录(如 raw/assets/);在设置 → 快捷键中搜索"Download",找到"下载当前文件的附件"并绑定快捷键(如 Ctrl+Shift+D)。剪藏文章后按快捷键,所有图片即下载到本地。这是可选的,但有用 —— 让 LLM 可直接查看和引用图片,而不必依赖可能失效的 URL。注意 LLM 无法一次性原生读取带内联图片的 Markdown —— 解决方案是先让 LLM 读取文本,再单独查看部分或全部引用的图片以获取额外上下文。这稍显繁琐,但效果足够好。
  • Obsidian 的知识图谱视图是了解 wiki 整体形态的最佳方式 —— 什么与什么相连,哪些页面是枢纽,哪些是孤立节点。
  • Marp 是基于 Markdown 的幻灯片格式,Obsidian 有对应插件,可直接从 wiki 内容生成演示文稿。
  • Dataview 是 Obsidian 插件,可对页面的 YAML frontmatter 执行查询。如果 LLM 为 wiki 页面添加了 frontmatter(标签、日期、来源数量),Dataview 就能生成动态表格和列表。
  • Wiki 本质上就是一个 Markdown 文件的 Git 仓库,版本历史、分支和协作能力开箱即用。

为什么这种方式有效

维护知识库最繁琐的部分不是阅读或思考,而是日常的管理维护工作:更新交叉引用、保持摘要的时效性、标注新数据与旧论断的矛盾、在数十个页面间保持一致性。人们放弃 wiki 是因为维护成本的增长速度超过了知识价值的增长速度。LLM 不会感到厌倦,不会忘记更新交叉引用,一次就能处理 15 个文件。wiki 得以持续维护,因为维护成本趋近于零。

人的工作是:筛选来源,引导分析,提出好问题,以及思考这一切意味着什么。LLM 的工作是:其他一切。

这个思路在精神上与 Vannevar Bush 的 Memex(1945 年)有相通之处 —— 一个带有文档间关联路径的个人知识储存系统。Bush 的构想比今天的 Web 更接近这里描述的东西:私密的、主动策管的,文档之间的连接与文档本身同等重要。他当年没能解决的问题是:谁来做这些维护工作。LLM 解决了这个问题。

说明

这份文档有意保持抽象,它描述的是理念,而非具体实现。确切的目录结构、schema 约定、页面格式、工具选择 —— 这一切都取决于你的研究领域、个人偏好以及所使用的 LLM。上述所有内容都是可选且模块化的 —— 取用有用的,忽略无关的。例如:你的来源可能纯文字,完全不需要图片处理;你的 wiki 可能足够小,索引文件已绰绰有余,无需搜索引擎;你可能对幻灯片毫无兴趣,只想要 Markdown 页面;你可能想要一套完全不同的输出格式。使用这份文档的正确方式,是把它分享给你的 LLM Agent,然后一起实例化出一个契合你需求的版本。这份文档唯一的工作,是传达这个模式。你的 LLM 会搞定其余的一切。

参考文档

  • https://mp.weixin.qq.com/s/ueCIydLLACyqGP5SrAhpjQ
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐