Rohit 基于 Karparthy 的 gist 更新LLM Wiki V2 - 今日头条 摘要
文档概览
这篇文章把 LLM Wiki 的演进分成两个阶段:
- 原版关注的是“让知识开始复利”
- V2 关注的是“当知识库做大之后,如何不烂掉”
作者认为,Karpathy 的原版其实相当克制:它反对只做临时 RAG,即每次回答问题都回到原始材料里捞 chunk、临时拼答案,因为这样不会累积结构化理解。相对地,原版主张先把 raw sources 编译成 wiki,再让 Agent 基于 wiki 回答问题。
在这个框架下,Rohit 的 V2 并不是推翻原版,而是把原版在生产环境中迟早会遇到的问题显性化,包括:
- memory lifecycle
- confidence
- supersession
- forgetting
- typed knowledge graph
- hybrid search
- event-driven ingestion / updates
- quality governance
- multi-agent coordination
文章整体态度是:方向正确,但不能把 V2 当现成蓝图照抄;它更像问题清单、路线图和工程评审输入。
原版 LLM Wiki 的核心思想
反对只做临时 RAG
原版最核心的观点是:不要把知识系统只做成“问一次、捞一次、拼一次”的临时检索回答系统。 如果每次提问时,模型都只是重新从 raw documents 中检索片段,再即时生成答案,那么系统不会真正积累对材料的整理、抽象与链接。
原版提出的替代方案是:
- 先把文章、论文、会议记录、代码讨论等原始材料放入 raw sources
- 让 LLM 读取这些原始材料
- 再由 LLM 更新 wiki 中的 summary、entity page、concept page、overview、index、log 等页面
- 后续 Agent 回答问题时,优先读取 wiki,而不是每次都回到未经整理的原始材料
作者用一句话概括这种差异:
原版的三层结构
原版被概括为一个很清晰的三层结构:
- Raw sources:原始材料,且不被 LLM 修改
- Wiki:由 LLM 维护的 Markdown 页面
- Schema:如 CLAUDE.md、AGENTS.md 一类规则文件,用来规定写作和维护规范
这三层分别解决不同问题:
- Raw sources 负责保留原始证据与不可变输入
- Wiki 负责形成可读、可维护、可交叉引用的知识表示
- Schema 负责让不同 Agent 在同一套规则下写作、更新、校验
原版的最小可运行组件
作者特别点出,Karpathy 版本适合启动个人研究库、读书库或项目知识库,因为它只要求少量核心部件先跑起来。文中列出的最小可运行组件包括:
- raw
- wiki
- schema
- index
- log
- ingest
- query
- lint
作者的判断是:原版的重点不是一开始就建复杂系统,而是先构造一个可以运行、可以持续更新、可以被人审查的最小闭环。
原版的类比:Obsidian 是 IDE,LLM 是 programmer,wiki 是 codebase
文章非常强调这个类比,因为它解释了原版的人机分工:
- Obsidian 是 IDE
- LLM 是 programmer
- wiki 是 codebase
在这个类比下:
- 人负责选题、判断、取舍和最终审阅
- LLM 负责维护性工作,如整理、交叉引用、补 index、查孤儿页、同步页面结构
作者认为,这个类比比“知识库自动生成器”更准确,因为原版真正想解决的是维护成本,而不是一次性生成文档。
V2 相比原版新增的生产层议题
1. Memory lifecycle:知识不应一律同权
V2 的一个现实出发点是:wiki 启动不难,难的是变大之后仍然保持“清醒”。
原版里,wiki 页面默认大致同等可信;V2 则明确认为这不够。文章给出的关键例子是:
- 一个昨天刚从三份材料确认过的事实
- 与一条半年前随手记下、未经重新验证的猜测
这两类内容不应在检索与回答中拥有相同权重。
因此 V2 引入了 memory lifecycle,把知识区分为多种记忆形态:
- working memory
- episodic memory
- semantic memory
- procedural memory
作者对这个设计的解释是:越往后越压缩,证据越强,生命周期越长。也就是说,系统不只是存内容,还要表达内容所处的成熟度、时效性与稳定性。
2. Confidence、supersession、forgetting
V2 还提出了三个彼此关联的话题:
- confidence
- supersession
- forgetting
作者对其中的 confidence 提出明确批评:如果它只是一个单独数值,比如 0.85,那么很容易制造“没来由的权威感”。文章主张,可信度不应只表现为一个数字,而应尽量落实为可追溯的证据结构,包括:
- 这个 claim 来自哪个 ADR
- 来自哪次 commit
- 来自哪篇 source
- 来自哪次 session
- 最近一次是什么时候确认过
- 是否已被新信息替代
也就是说,作者更赞成把 confidence 还原为“证据链 + 来源 + 时间 + 替代关系”,而不是抽象单值。
在 forgetting 上,作者和评论区都倾向谨慎态度。旧内容不一定应该被简单遗忘,因为旧 bug、旧 ADR、旧决策经常恰恰能解释今天为什么会有当前架构,也能帮助未来避免重复踩坑。
在 supersession 上,文章反而更认可:系统应明确表达“新信息替代旧信息”的关系,而不是让旧内容静默消失。
3. Typed knowledge graph:普通 wikilink 不够
原版主要依赖 Markdown wikilink 和可视化 graph 来表示页面之间的连接。V2 则把这件事推进到更强语义层:需要 typed knowledge graph。
作者说明其写作语境不是“为了做图而做图”,而是因为真实查询常常不是找某个页面,而是在问影响链与决策链,例如:
- 升级 Redis 会影响哪些服务?
- 某个鉴权决策牵涉哪些 bug 和负责人?
对于这类问题,仅靠普通 双链 不够,需要带明确语义的边。文中点名的关系类型包括:
- uses
- depends_on
- contradicts
- supersedes
作者认为,这类 typed edges 的意义在于:
- 支持影响分析
- 支持历史决策追踪
- 支持冲突识别
- 支持结构化查询,而不仅是“相关页面跳转”
因此,V2 并非只是把 wiki 做大,而是试图把 wiki 从弱语义文档网络推向带关系契约的知识图结构。
4. Hybrid search:index.md 在中大规模下会成为瓶颈
原版默认认为 index.md 在中等规模下仍然有用,几百页内容时也能撑一段时间。V2 则更明确地指出:当 wiki 超过约 100 到 200 页后,index 会逐渐成为瓶颈。
对应地,V2 不再把检索寄托在单一路径,而是组合三类能力:
- BM25
- 向量检索
- 图遍历
再用 RRF 进行融合排序。
作者特别记录了 Rohit 在评论中的补充说明:这不是“把 index 替换成 hybrid search”就结束了,而是不同检索方式承担不同任务。 其中:
- BM25 和向量检索负责找“此刻相关”的材料
- 图遍历负责找“结构上相关”的影响链
这一定义非常关键,因为它说明图遍历不是普通搜索的替代品,而是用来回答结构关系问题的专门通道。
5. Event-driven 与自动维护
原版主要还是人在需要时触发 ingest 或 lint。V2 则往更自动化的方向推进,提出:
- hooks
- event-driven updates
- 更主动的自动维护
作者承认这在生产上有吸引力,但态度明显偏谨慎。他支持“session end 自动生成候选 summary”这类半自动化动作,但反对 Agent 直接改主 wiki。更偏好的方式是:proposal-first。
即:
- Agent 自动抽取事实
- 自动找冲突
- 生成拟议变更与 diff
- 高风险写入进入 review queue
- 由人进行最后确认
6. 多 Agent 与治理问题
V2 还扩展到原版几乎没有展开的多 Agent 与治理层问题,包括:
- mesh sync
- shared/private memory
- coordination
- privacy filter
- audit
- reversible bulk ops
作者认为,这些议题说明 V2 的目标已不只是个人知识库,而是逐步逼近“可治理的 Agent Memory 系统”。
原版与 V2 的表格化差异总结
文章给出一张对照表,核心差异可整理如下:
知识变旧
- 原版:主要在 lint 时发现 stale claim
- V2:通过 lifecycle、supersession、retention 来显式管理过期、替代与保留
搜索扩展
- 原版:index.md + 可选搜索工具
- V2:BM25 + vector + graph 的混合检索
结构关系
- 原版:主要依赖 wikilinks
- V2:typed entities and relations
自动维护
- 原版:以人工触发 ingest/lint 为主
- V2:通过 hooks 与事件驱动进行更自动的更新
多 Agent
- 原版:只略提团队场景
- V2:进一步考虑 mesh sync、shared/private、coordination
治理
- 原版:默认 Git 历史天然可用
- V2:进一步引入 privacy filter、audit、reversible bulk ops 等治理层能力
作者对这张表的总判断是:原版解决“启动”,V2 解决“扩张后的失控”。
落地方式:作者建议的实施顺序
作者明确反对一上来就做完整 V2,理由是这样会把系统做得过重,并且很难知道究竟哪一层真正有效。文章给出了一条循序渐进的实施路径。
第一步:先做原版风格的 MVP
建议先保留以下核心要素:
- raw/
- wiki/
- index.md
- log.md
- AGENTS.md
工作方式是:每次 ingest 时,让 Agent 更新相关页面,然后由人查看 Git diff。
作者给出的 MVP 验收标准很朴素,但很具体:
- 一次 source 输入后,系统能稳定更新 summary
- 能更新 entity 页面
- 能更新 concept 页面
- 能更新 index
- 能更新 log
- 人能看懂每个改动
这意味着 MVP 的目标不是“全自动”,而是“每次写入都可解释、可审阅、可接受”。