<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Llm_wiki on 奇诺分享 | 重在分享</title>
        <link>https://blog.ccino.org/tags/llm_wiki/</link>
        <description>Recent content in Llm_wiki on 奇诺分享 | 重在分享</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://blog.ccino.org/tags/llm_wiki/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>先编译，再回答：Karpathy 的知识库模式，被 llm_wiki 做成了 18800 星的桌面应用</title>
        <link>https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/</link>
        <pubDate>Sat, 12 Sep 2026 12:00:00 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/cover.png" alt="Featured image of post 先编译，再回答：Karpathy 的知识库模式，被 llm_wiki 做成了 18800 星的桌面应用" /&gt;&lt;p&gt;9 月 12 日刷 GitHub Trending，看到一个挺扎眼的项目：&lt;code&gt;nashsu/llm_wiki&lt;/code&gt;，一个跨平台桌面应用，截至本文写作时 18800 颗星、2100 次 fork、856 次提交。官方一句话介绍是「一个会自己生长的个人知识库」：LLM 读你的文档，搭出一座结构化的 wiki，并且让它保持更新。&lt;/p&gt;
&lt;p&gt;让我停下来多看两眼的是它那句口号：替代传统 RAG。&lt;/p&gt;
&lt;p&gt;RAG（检索增强生成）这两年几乎成了「给大模型接私有知识」的代名词，突然冒出个项目说要替代它，第一反应容易是又一个蹭概念的开源玩具。但把 README 和它背后的来龙去脉读完，我发现这个项目的价值不在口号里，而在它选的那条路：它的蓝图直接来自 Andrej Karpathy 的一篇 gist，核心思路一句话就能讲完：知识应该被编译一次、持续维护，而不是每次提问都从头检索一遍。&lt;/p&gt;
&lt;p&gt;这篇文章基于 llm_wiki 的公开 README（有中英日韩四个语言版本）和 Karpathy 的原始设计文档写成，功能描述和数字都来自项目官方口径，我没法在写作时逐项实测，文末附了全部来源。&lt;/p&gt;
&lt;h2 id=&#34;替代-rag这个说法只说对了一半&#34;&gt;「替代 RAG」这个说法，只说对了一半
&lt;/h2&gt;&lt;p&gt;先回忆一下 RAG 的标准流程。文档被切成小块，逐块算 embedding（向量嵌入）存进向量库；用户提问时，把问题也转成向量，捞回最相似的几块，塞进上下文让模型作答。&lt;/p&gt;
&lt;p&gt;这套流程的毛病已经被说烂了：切块把完整的论述切得七零八落；语义检索只能看到「局部相似」，缺全局视野；答案到底来自哪份文档的哪一段，追溯起来经常要靠运气。&lt;/p&gt;
&lt;p&gt;llm_wiki 的 README 开头有一句话，我认为是整个项目的题眼：&lt;/p&gt;

    &lt;blockquote&gt;
        &lt;p&gt;Knowledge is compiled once and kept current, not re-derived on every query.&lt;/p&gt;

    &lt;/blockquote&gt;
&lt;p&gt;知识被编译一次并保持更新，而不是在每次查询时重新推导。&lt;/p&gt;
&lt;p&gt;注意它的措辞。它反对的不是「检索」本身，而是「每次都从头检索、现查现答」这个模式。顺着这个措辞往下想，RAG 和 llm_wiki 的关系其实可以借一对编程语言的旧概念来理解：RAG 更像解释执行，每次运行都现场读源码；llm_wiki 更像编译执行，先把知识「编译」成一份带结构、带链接的 wiki 产物，之后查询发生在这份产物上。&lt;/p&gt;
&lt;p&gt;所以开头那个口号，只对了一半。它真正做的事，是把智能开销从查询时挪到摄取时，拿前置的成本换查询的质量。这笔账划不划算，后文再算。&lt;/p&gt;
&lt;h2 id=&#34;蓝图来自-karpathy-的一篇-gist&#34;&gt;蓝图来自 Karpathy 的一篇 gist
&lt;/h2&gt;&lt;p&gt;llm_wiki 不是拍脑袋的项目。Karpathy（前 Tesla AI 总监、OpenAI 创始成员）发过一篇名为 LLM Wiki pattern 的设计文档，gists 是 GitHub 上分享代码片段和短文档的功能，这篇 gist 本身只有几千字，却给出了一个完整的知识库架构模式。&lt;/p&gt;
&lt;p&gt;模式的核心是三层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Raw Sources&lt;/strong&gt;：原始素材层。PDF、笔记、网页剪藏，只进不改，是唯一的事实来源；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wiki&lt;/strong&gt;：AI 维护的知识层。LLM 从素材层提炼生成的 wiki 页面，互相之间用 &lt;code&gt;[[wikilink]]&lt;/code&gt;（双链）连接，可以随时重建；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema&lt;/strong&gt;：结构与约定层。wiki 的组织规则、页面类型、命名约定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/architecture-layers.png&#34;
	width=&#34;1672&#34;
	height=&#34;940&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/architecture-layers_hu_779a0215be27f498.png 480w, https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/architecture-layers_hu_899d4cf7e558a81d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Karpathy LLM Wiki 模式的三层架构：原始素材、AI 维护的 Wiki 知识层、Schema 结构与约定&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;还有一句话被它原样继承了下来：Human curates, LLM maintains。人负责策展，决定什么值得进库、什么判断需要复核；LLM 负责维护，让这座知识库保持新鲜、保持连通。&lt;/p&gt;
&lt;p&gt;llm_wiki 是这个模式的完整桌面级实现。技术栈是 Tauri（跨平台桌面框架）加 Rust 后端、React 前端，GPL v3 协议，在 Karpathy 原始设计的基础上扩了不少东西：多模态摄取、知识图谱、本地 API，甚至内置了 MCP 服务器。&lt;/p&gt;
&lt;h2 id=&#34;两步摄取先读懂再动笔&#34;&gt;两步摄取：先读懂，再动笔
&lt;/h2&gt;&lt;p&gt;llm_wiki 往库里加一份文档的过程，README 称为「两步思维链摄取」，分开来看很清楚。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-overview.jpg&#34;
	width=&#34;3128&#34;
	height=&#34;1840&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-overview_hu_3f714da2dc96c6a7.jpg 480w, https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-overview_hu_1929af4b44997f64.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;llm_wiki 项目总览界面（图：项目 README）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;170&#34;
		data-flex-basis=&#34;408px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;第一步是分析。LLM 通读源文件，产出的不是摘要，而是一份结构化分析：这份材料里有哪些实体和概念，它们和 wiki 里已有的条目是什么关系，有没有互相矛盾的说法。这一步的产出会带源文件溯源，并且做了增量缓存，同一份文档不需要反复分析。&lt;/p&gt;
&lt;p&gt;第二步才是生成。基于第一步的分析，LLM 决定是新建页面、更新已有页面，还是只在现有页面上补一条链接。wiki 的索引页、更新日志、概览页同步维护。拿不准的条目不会被直接写进正文，而是进入一个异步 Review 队列，等人来裁决。&lt;/p&gt;
&lt;p&gt;这个 Review 机制值得单独说一句。很多「AI 知识库」产品默认 LLM 写的就是对的，用户事后发现错误也很难定位。llm_wiki 把「LLM 标记可疑、人做最终判断」做成了产品里的常态流程，Karpathy 那句「人来策展」落到产品上，就是这个队列。&lt;/p&gt;
&lt;p&gt;摄取还覆盖了多模态：PDF 里的图片会被抽出来，交给视觉模型生成事实性描述后一并入 wiki。工程上的细节也做得比较扎实，比如持久化的摄取队列，串行处理、崩溃恢复、失败自动重试三次。&lt;/p&gt;
&lt;h2 id=&#34;查询的时候检索管线并没有消失&#34;&gt;查询的时候，检索管线并没有消失
&lt;/h2&gt;&lt;p&gt;先把一个误会说清楚：llm_wiki 并没有扔掉检索。它查询时跑的是一条多阶段管线：先词法搜索，然后可选的向量语义搜索，接着做图谱扩展，最后按 token 预算组装上下文。&lt;/p&gt;
&lt;p&gt;向量搜索这层是可选的，基于 LanceDB（一个嵌入式向量数据库）。README 给出的官方口径是，加上向量搜索后召回率从 58.2% 提升到 71.4%。这是项目自己的基准数字，我按原样引用，不构成独立验证。&lt;/p&gt;
&lt;p&gt;真正有意思的是图谱扩展这一环。llm_wiki 在 wiki 之上维护了一张知识图谱，边不是只有「页面 A 链接到页面 B」一种，而是四种信号加权合成：直接链接（权重 3.0）、源重叠（权重 4.0，两页引用了同一份原始文档）、Adamic-Adar（权重 1.5，一种衡量两个节点共享邻居程度的图算法）、类型亲和（权重 1.0，同类型页面相互加分）。再跑 Louvain（一种图社区检测算法）自动发现知识聚类。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-knowledge-graph.jpg&#34;
	width=&#34;2000&#34;
	height=&#34;1231&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-knowledge-graph_hu_2f2f47c0509b6e72.jpg 480w, https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-knowledge-graph_hu_5d7cd7f2cabb8fd5.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;llm_wiki 的知识图谱视图（图：项目 README）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;162&#34;
		data-flex-basis=&#34;389px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;源重叠那一项权重最高，这个设计很诚实：两个页面讲了同一份源文档，它们的相关性比「恰好互相链接」更硬。查询命中某个页面后，沿着图谱把邻居页面也拉进上下文，等于让「结构」参与了召回。这正好呼应了我在标题里的判断：双链不只是给人看的导航，它本身就是给模型的提示词。&lt;/p&gt;
&lt;p&gt;wiki 的洞察页还会主动报告两类东西：「意外连接」（图谱发现的两处远距离关联）和「知识缺口」（素材里提了但 wiki 还没建条的空白），都可以一键发起深度研究，走 Tavily、SerpApi 或自建的 SearXNG 去补。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-graph-insights.jpg&#34;
	width=&#34;3022&#34;
	height=&#34;1922&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-graph-insights_hu_76fdb8202506faa8.jpg 480w, https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-graph-insights_hu_e0e2867f3ca198fa.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;图谱洞察：意外连接与知识缺口（图：项目 README）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;157&#34;
		data-flex-basis=&#34;377px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;对-obsidian-用户它还有层特别的意思&#34;&gt;对 Obsidian 用户，它还有层特别的意思
&lt;/h2&gt;&lt;p&gt;如果你本来就在用 Obsidian，看 llm_wiki 的 wiki 层会觉得眼熟：&lt;code&gt;[[wikilink]]&lt;/code&gt; 双链语法、YAML frontmatter、页面互相链接成网，README 明确说 wiki 层与 Obsidian 兼容。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-obsidian-compatibility.jpg&#34;
	width=&#34;2000&#34;
	height=&#34;1206&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-obsidian-compatibility_hu_9b66166b5ca76bc8.jpg 480w, https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/llmwiki-obsidian-compatibility_hu_983c4770eccc9f91.jpg 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;wiki 层与 Obsidian 兼容：wikilink 与 frontmatter 直接可用（图：项目 README）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;165&#34;
		data-flex-basis=&#34;398px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;这不是巧合。Karpathy 的模式本来就把「人写双链笔记」的经验抽象成了架构，llm_wiki 换个方向把它自动化：过去你在 Obsidian 里手工做的事，读文档、提炼概念、建条目、连双链、发现「这两篇其实在讲同一件事」，被挪给了 LLM，而且是增量的、带溯源的、拿不准会标记出来的。&lt;/p&gt;
&lt;p&gt;手上已经压了几千份文档的人，多半卡在两个选项之间：继续手工维护双链，可大多数库的双链密度其实远低于理想值；或者整个丢给黑盒 RAG，答错了连错在哪都查不出来。llm_wiki 给的是第三条路：结构由 AI 维护，判断由人保留。&lt;/p&gt;
&lt;p&gt;工程上它也留了口子：本地 HTTP API 和 MCP 服务器（默认 &lt;code&gt;127.0.0.1:19828&lt;/code&gt;，token 保护），意味着你可以把这座 wiki 接进 Claude Code 之类的工作流里当知识源用。另有 Chrome 剪藏扩展，网页一键收进素材层。&lt;/p&gt;
&lt;h2 id=&#34;什么场景别用它&#34;&gt;什么场景别用它
&lt;/h2&gt;&lt;p&gt;编译式不是免费的。摄取要花 token 和时间，知识变了要重新编译，wiki 层本身也成了需要管理的资产。要不要上，先问自己三个问题。&lt;/p&gt;
&lt;p&gt;**文档规模是第一道门槛。**几百到几万份相对稳定的文档（书籍、论文、课程、项目文档），编译一次的收益能把成本摊薄；要是每天涌入上千份快消型文档，wiki 层的维护速度根本追不上摄入速度。&lt;/p&gt;
&lt;p&gt;**更新频率是第二道。**知识一旦「编译」，变更就意味着再编译，行情、新闻流、监控数据这类高频信息源天生属于检索式，硬塞进这套范式只会互相折磨。&lt;/p&gt;
&lt;p&gt;**最后是你平时问什么。**问「A 和 C 之间有什么关系」「这个领域有哪些主题簇」，图谱和双链的价值最大；问「某个配置项的确切值是多少」，全文检索甚至 grep 往往更快更准。llm_wiki 自己也留着向量搜索的选项，说明作者清楚纯图谱召回有盲区。&lt;/p&gt;
&lt;p&gt;一句话版本：问答越依赖「关系」，编译式越划算；问答越依赖「单点事实」，检索式越划算。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后
&lt;/h2&gt;&lt;p&gt;回到标题里那两个概念。RAG 和「编译式知识库」并不是替代关系，而是同一光谱的两端，llm_wiki 自己都把向量搜索装回了查询管线，真正的分歧在于：智能开销花在查询时，还是花在摄取时。&lt;/p&gt;
&lt;p&gt;前者的成本跟着查询次数走，每问一次都要付一次检索和推理的钱，换来的是知识永远是「现拉的」，不存在过期。后者把成本前置到摄取时，查询变轻变快、答案有结构可溯，但你要接受一座需要持续投入维护的 wiki 层，接受「知识编译产物」和「源文档」之间永远存在滞后。哪个划算，取决于你的文档规模、更新频率和问题类型，没有普适答案。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/compile-vs-retrieve.png&#34;
	width=&#34;1672&#34;
	height=&#34;940&#34;
	srcset=&#34;https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/compile-vs-retrieve_hu_bea8d89b819d6122.png 480w, https://blog.ccino.org/p/llm-wiki-beyond-rag-2026/imgs/compile-vs-retrieve_hu_f0f9b3efb54f0b9a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;检索式 RAG 与编译式知识库的对比：前者每次提问重走检索循环，后者只编译一次、持续维护&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;而 Karpathy 那个模式里，我认为最值得抄的其实不是三层架构，是那句话的语序：Human curates, LLM maintains。LLM 负责让知识库保持新鲜、保持连通，把文档变成条目、把条目连成网、把可疑的标记出来；人负责那些机器不该替你做的事，决定什么值得进库、争议说法信哪边、Review 队列里的存疑条目怎么裁。&lt;/p&gt;
&lt;p&gt;18800 颗星，与其说是投给一个桌面应用的，不如说是投给这个分工的。工具会换代，这个语序大概率会留下来。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nashsu/llm_wiki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nashsu/llm_wiki：GitHub 仓库与 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Andrej Karpathy：LLM Wiki pattern（原始设计文档 gist）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/trending&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Trending（2026-09-12 当日榜单）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;文中界面截图均取自 llm_wiki 项目 README 公开资料，版权归项目作者所有，仅作介绍评论用途&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上来源用于确认功能描述与项目口径，本文未对 llm_wiki 做独立安装实测；星标数、召回率提升等数字均为抓取时点或项目官方口径，不构成独立基准测试结论。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
