LLM Wiki(GitHub:nashsu/llm_wiki)是一套開源桌面知識庫應用,把 Karpathy 提出的 llm-wiki 模式做成可安裝的產品:LLM 讀完你匯入的文件後,會增量「編譯」出一份互相連結、可持續維護的 Wiki,而不是像傳統 RAG 每次提問都重新檢索一遍。專案 2026 年 4 月開源、至今約 1.86 萬顆星,支援 PDF/Office/EPUB/網頁匯入、知識圖譜分析、向量檢索與 MCP 介接,並可直接當成 Obsidian vault 使用。
如果你訂閱了一堆 PDF、把網頁存進書籤、又買了好幾門線上課,卻總覺得「資料很多、知識很少」,那這個專案值得花一個下午研究。它解決的不是「怎麼搜尋」而是更前面一步的問題:怎麼讓你看過的資料,變成一張會自己長大的知識網路。
30 秒結論:LLM Wiki 適合誰
| 你的情境 | LLM Wiki 適不適合 | 原因 |
|---|---|---|
| 有大量 PDF/論文/技術文件要長期消化 | ✅ 很適合 | 匯入後自動生成 entity/concept 頁面與交叉連結 |
| 想要一個「會自己整理的 Obsidian」 | ✅ 很適合 | Wiki 目錄本身就是 Obsidian vault,檔案是純 Markdown |
| 只想問文件幾個問題、一次性的 | ⚠️ 不必 | 用 NotebookLM、Claude Projects 更快 |
| 想要免設定、不想付 API 費用 | ⚠️ 要考慮 | 需自備 LLM API key(可用 Ollama 本地模型省錢) |
| 需要多人協作、雲端同步 | ❌ 不是它的定位 | 它是 local-first 桌面應用,非 SaaS |
為什麼「每次查詢都重新檢索」是 RAG 的成本陷阱
傳統 RAG 的流程是:切 chunk → 存向量庫 → 提問時檢索最相關的片段 → 塞進 context 讓 LLM 回答。這個模式很方便,但有兩個長期成本:
- 知識沒有累積:同一份文件被檢索一百次,模型就重新理解一百次。
- 跨文件的關聯不會浮現:A 文件與 B 文件之間的矛盾或呼應,系統不會主動告訴你。
LLM Wiki 走的是另一條路——「先編譯、後查詢」:
flowchart LR
subgraph RAG["傳統 RAG:每次重新檢索"]
Q1[問題] --> R1[向量檢索片段] --> A1[LLM 拼答案] --> Q1
end
subgraph WIKI["LLM Wiki:知識先編譯"]
S[原始文件<br/>raw/sources] --> I[兩步驟 CoT Ingest] --> W[Wiki 頁面<br/>entities/concepts]
W --> Q2[問題] --> A2[引用頁面回答 [1][2]]
W --> G[知識圖譜<br/>找缺洞與意外連結]
G --> R2[Deep Research 補洞] --> W
end用一句話講差別:RAG 是每次考試都重讀一次課本,LLM Wiki 是先做一本自己的筆記,之後只讀筆記。
核心架構:三層結構 + purpose.md
LLM Wiki 忠實保留了 Karpathy 原始設計的三層架構,但補上了原版沒有的「目的層」:
| 層級 | 目錄 | 角色 | 誰負責維護 |
|---|---|---|---|
| Raw Sources | raw/sources/ | 不可變的原始文件 | 你(人) |
| Wiki | wiki/ | LLM 生成的知識頁面 | LLM |
| Schema | schema.md | Wiki 的結構規則、頁面型別 | 你(人) |
| Purpose | purpose.md | 這個 Wiki 為什麼存在、要回答什麼問題 | 你(人) |
purpose.md 是這個專案相對原版最大的概念補強:它定義目標、關鍵問題、研究範圍與演進中的論點,LLM 在每次 ingest 與查詢時都會讀它當作上下文。用作者的話說,schema 是「怎麼運作」,purpose 是「往哪裡走」。
安裝:三種方式
方式 1:下載預編譯版本(最省事)
到 Releases 頁面 下載,目前最新版是 v0.6.11(2026-08-25 發布):
| 平台 | 檔案 |
|---|---|
| macOS(Apple Silicon) | LLM.Wiki_0.6.11_aarch64.dmg |
| Windows | LLM.Wiki_0.6.11_x64-setup.exe / .msi |
| Linux(Debian/Ubuntu) | LLM.Wiki_0.6.11_amd64.deb |
| Linux(通用) | LLM.Wiki_0.6.11_amd64.AppImage |
| Linux(RPM) | LLM.Wiki-0.6.11-1.x86_64.rpm |
方式 2:從原始碼建置
# 前置需求:Node.js 20+、Rust 1.88+、protoc
# macOS: brew install protobuf
# Linux: sudo apt install protobuf-compiler
# Windows: choco install protoc
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm --prefix mcp-server ci && npm run mcp:build # MCP server 會被包成 Tauri 資源
npm run tauri dev # 開發模式
npm run tauri build # 產生正式安裝檔
方式 3:Chrome 網頁剪輯擴充
- 打開
chrome://extensions - 啟用「開發人員模式」
- 點「載入未封裝項目」,選擇 repo 裡的
extension/目錄 - 用
Alt+Shift+L(macOS:Command+Shift+L)剪下當前頁面,內容會自動進 ingest 流程
快速上手 8 步
- 啟動 App → 建立新專案(可選 Research/Reading/Personal Growth/Business/General 範本)
- 到 Settings 設定 LLM provider(API key + 模型),支援 OpenAI、Anthropic、Google、Ollama 與自訂端點
- 可選:設定 Web Search provider(Tavily/SerpApi/SearXNG)與來源資料夾自動監看
- 到 Sources 匯入文件(PDF、DOCX、MD、網頁等)
- 看 Activity Panel——LLM 會自動逐檔建立 wiki 頁面(進度條、可取消、失敗自動重試 3 次)
- 用 Chat 查詢你的知識庫,回答會標註引用了哪幾頁(
[1]、[2]) - 開 Knowledge Graph 看連結關係與知識叢集
- 定期跑 Lint 維護 Wiki 健康度,並處理 Review 佇列
兩步驟 CoT Ingest:品質關鍵在這裡
原版設計是「LLM 邊讀邊寫」的單步 ingest。這個專案把它拆成兩次 LLM 呼叫,換來明顯更好的產出品質:
Step 1(分析):LLM 讀來源 → 結構化分析
- 關鍵實體、概念、論點
- 與既有 wiki 內容的連結
- 與既有知識的矛盾與張力
- 對 wiki 結構的建議
Step 2(生成):LLM 拿分析結果 → 生成 wiki 檔案
- 來源摘要頁(含 frontmatter:type、title、sources[])
- 實體頁、概念頁與交叉引用
- 更新 index.md、log.md、overview.md
- 產生需要人類判斷的 Review 項目
- 產生 Deep Research 用的搜尋查詢
另外還加了幾個實務細節:SHA256 增量快取(檔案沒變就跳過,直接省 token)、持久化 ingest 佇列(序列處理避免並行呼叫、當機可復原)、資料夾遞迴匯入(目錄結構會當成分類提示,例如 papers > energy 會幫助 LLM 判斷主題)、以及來源資料夾自動監看(在 App 外新增/修改/刪除檔案也會被同步處理)。
支援的文件格式
| 格式 | 解析方式 |
|---|---|
| 內建 pdf-extract(Rust);複雜版面可選 MinerU 雲端/Local API/Local Pipeline | |
| DOCX | docx-rs — 標題、粗斜體、清單、表格轉結構化 Markdown |
| PPTX | ZIP + XML — 逐頁抽取標題與清單結構 |
| XLSX / XLS / ODS | calamine — 正確儲存格型別、多工作表、Markdown 表格 |
| EPUB / MOBI | 電子書 metadata、章節與本文抽取 |
| 圖片/影音 | 原生預覽與內建播放器 |
| 網頁 | Readability.js + Turndown.js 轉乾淨 Markdown |
PDF 的圖片也會被抽出來,用視覺 LLM 產生寫實的說明文字(caption),並在搜尋結果中以 lightbox 呈現、可一鍵跳回原始檔。MinerU 是可選的,失敗時會自動退回內建解析器。
知識圖譜:4 訊號關聯模型 + Louvain 分群
Wiki 頁面之間用 [[wikilink]] 串連,這個專案再把它變成可分析的圖。關聯強度由四個訊號加權計算:
| 訊號 | 權重 | 說明 |
|---|---|---|
| 直接連結 | ×3.0 | 兩頁之間有 [[wikilink]] |
| 來源重疊 | ×4.0 | 兩頁共享同一份原始來源(frontmatter 的 sources[]) |
| Adamic-Adar | ×1.5 | 共同鄰居越多越相關(依鄰居度數加權) |
| 型別親和 | ×1.0 | 同型別加分(entity↔entity、concept↔concept) |
在此之上有兩個自動分析功能:
- Louvain 社群偵測:自動找出「哪些頁面天然成群」,每群給一個凝聚度(cohesion,實際邊數/可能邊數),低於 0.15 的稀疏社群會被標記警告。
- Graph Insights:找出「意外連結」(跨社群、跨型別、邊緣↔樞紐)與「知識缺洞」(孤立頁、稀疏社群、連接三個以上叢集的橋接節點),而且每個缺洞旁邊都有 Deep Research 按鈕,可以直接叫 LLM 去補資料並自動 ingest 回 Wiki。
檢索管線:四階段,可選向量搜尋
回答問題時的檢索不是單純關鍵字比對,而是四階段流程:
- Tokenized Search:英文斷詞去停用詞;中文用 CJK bigram(例如「每個」→「每個, 個…」);標題命中加 10 分。
- 向量語意搜尋(選用):任何 OpenAI 相容的
/v1/embeddings端點,向量存進 LanceDB(Rust 內嵌),用餘弦相似度補上「關鍵字對不上但語意相關」的頁面。官方基準:開啟後整體 recall 由 58.2% 提升到 71.4%。 - 圖擴展:以搜尋結果為種子節點,用 4 訊號模型做 2-hop 擴展(帶衰減)。
- 預算控制與上下文組裝:context 可在 4K 到 1M token 間調整,比例為 60% wiki 頁面、20% 對話歷史、5% index、15% 系統提示;頁面按相關度排序,並要求 LLM 以
[1]、[2]標註引用頁碼。
給 AI Agent 用:HTTP API、MCP 與一鍵技能
這是我認為對開發者最有價值的部分:它不只是 GUI 玩具,而是能接進 agent 工作流的知識後端。
本機 HTTP API 跑在 127.0.0.1:19828(僅本機、token 保護),常用端點:
# 健康檢查(免驗證)
curl http://127.0.0.1:19828/api/v1/health
# 混合檢索(關鍵字 + 向量)
curl -X POST http://127.0.0.1:19828/api/v1/projects/<PROJECT_ID>/search \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{"query":"蒸餾攻擊 防禦"}'
# 讀取未處理的 Review 項目
curl "http://127.0.0.1:19828/api/v1/projects/<PROJECT_ID>/reviews?status=unresolved" \
-H "Authorization: Bearer <TOKEN>"
# 取得 wikilink 圖
curl http://127.0.0.1:19828/api/v1/projects/<PROJECT_ID>/graph \
-H "Authorization: Bearer <TOKEN>"
同一組功能也包成 MCP server(mcp-server/,用 npm run mcp:build 建置後,在 Settings → API + MCP 複製設定)。此外官方提供現成的 agent skill,Claude Code/Codex 一行指令就能裝:
npx skills add https://github.com/nashsu/llm_wiki_skill.git --skill llm-wiki
裝好之後 agent 就能回答「我的 LLM Wiki 對 X 有什麼說法」「搜尋我的知識庫 Y」「顯示 wiki 圖中 Z 節點的鄰居」,而且是唯讀、會附上 wiki 頁面路徑讓你回 App 驗證。這個 skill 刻意不會在一般「搜尋我的筆記」時被觸發,只有當你明確提到 LLM Wiki/my wiki/知識庫時才會啟動。
專案目錄長什麼樣
my-wiki/
├── purpose.md # 目標、關鍵問題、研究範圍
├── schema.md # Wiki 結構規則、頁面型別
├── raw/
│ ├── sources/ # 上傳的文件(不可變)
│ └── assets/ # 本機圖片
├── wiki/
│ ├── index.md # 內容目錄(LLM 導覽入口)
│ ├── log.md # 操作歷史(可解析格式)
│ ├── overview.md # 全域摘要(每次 ingest 自動更新)
│ ├── entities/ # 人物、組織、產品
│ ├── concepts/ # 理論、方法、技術
│ ├── sources/ # 來源摘要
│ ├── queries/ # 存下來的問答與研究
│ └── synthesis/ # 跨來源分析
├── .obsidian/ # Obsidian vault 設定(自動產生)
└── .llm-wiki/ # App 設定、對話歷史、Review 項目
重點是:這是一堆純 Markdown 檔案。你可以用 Obsidian 直接打開、用 git 版控、丟進任何 Markdown 工具鏈;就算哪天不想用這個 App,知識也不會被鎖在資料庫裡。這對長期知識資產來說是關鍵設計。
和 RAG、Obsidian、NotebookLM 怎麼選
| 工具 | 核心機制 | 最適合 | 主要限制 |
|---|---|---|---|
| LLM Wiki | 知識先編譯成持久 Wiki + 圖譜 + 選用向量搜尋 | 長期累積、要跨文件找關聯、要給 agent 用 | Local-first、需自備 LLM key、首次 ingest 成本高 |
| 傳統 RAG(向量庫) | 每次查詢即時檢索 chunk | 快速上線的問答系統 | 知識不累積、跨文件關聯不浮現 |
| Obsidian | 人手動建立雙向連結 | 手寫筆記、個人工作流 | 整理工作全靠自己,量大會崩 |
| NotebookLM | 針對單一 notebook 做 grounded 問答 | 一次性研究、報告生成 | 不會自動維護長期知識結構,跨 notebook 斷裂 |
如果已有 Obsidian 習慣,最順的用法是「Obsidian 負責人寫、LLM Wiki 負責維護」——這也正是原版設計的核心分工:Human curates, LLM maintains.
實務建議與注意事項
- 建議開向量搜尋:官方基準顯示 recall 從 58.2% 提升到 71.4%,對中文語意檢索幫助尤其明顯。向量端點與 chat 端點可以分開設定,用便宜的小模型做 embedding 即可。
- 善用 purpose.md:不要跳過它。它在每次 ingest 時提供方向,能明顯改善頁面切分與分類品質。
- 先小批匯入再放大:ingest 會呼叫 LLM,第一批文件建議先放 5–10 份,確認頁面品質與成本符合預期。
- 注意授權與定位:專案以 GPL-3.0 釋出(README 標示),是 local-first 桌面應用而非雲端服務;要多人共用或跨裝置,目前做法是用 ZIP 匯出/匯入專案封存。
- 搭配本地模型省錢:支援 Ollama,搭配量化過的本地模型可以把長期維護成本壓到接近零(參見下方延伸閱讀的 GGUF 量化教學)。
結語
LLM Wiki 真正有意思的地方,不在於它又是一個「AI 筆記工具」,而在於它把 Karpathy 那個很抽象的模式——原始文件不可變、Wiki 由 LLM 增量維護、人只負責決定方向與審核——做成了可以下載、可以打開、可以被 agent 呼叫的軟體。
如果你的知識管理痛點是「資料一直進來、但從來沒有變成自己的東西」,那它值得排進你的下一個週末專案清單。
資料來源
- nashsu/llm_wiki — GitHub 專案與完整 README
- Karpathy 原始 llm-wiki 模式 gist
- llm_wiki_skill — LLM Wiki 官方 agent skill
- LLM Wiki Releases(v0.6.11)
