# n8n 版 LLM Wiki > Andrej Karpathy 的「LLM Wiki」概念,用 **n8n + Google Docs + Google Sheets** 重新實作的可下載版本。 > 不需要 Obsidian、不需要向量資料庫,人人都有的 Google 工具就能玩這套「新 RAG」。 感謝 [Andrej Karpathy](https://github.com/karpathy) 提出這個觀念。原文(gist): --- ## 這是什麼? 傳統 RAG 把文件丟進嵌入模型「碎紙化」存進向量庫,查詢時抽幾條碎紙給 LLM,LLM 只看得到那幾條、看不到全局。 Karpathy 的 **LLM Wiki** 用的是另一套思路 — **pre-compile(預編譯)**: 把所有原始資料交給 LLM,讓它像「維基百科總編輯」一樣,把內容**整理、改寫、互相連結**後寫進一個結構化的知識庫。你問問題時,它先查**目錄(index)**,再讀對應的 wiki 條目來回答 — 有全局觀,知道來龍去脈,而不是靠碎紙拼湊。 | | 傳統向量 RAG | LLM Wiki(本專案) | |---|---|---| | 入庫方式 | 切塊 → 嵌入 → 存向量 | LLM 閱讀 → 整理改寫 → 寫成 wiki 條目 | | 找資料方式 | 向量相似度 | 查**目錄**(像人查索引) | | 資料成長 | 無限增加(知識**倉庫**) | 結構性整理、更新而非堆疊(知識**庫**) | | 原稿角色 | 直接被切碎 | 單一事實來源(SSOT),有爭議時回查 | | 成本 | 嵌入便宜 | Token 燒得較兇,但整理品質高 | > **更新而非新增**:給它 1 萬份文件,它不會生成 1 萬篇 wiki,而是整理成一本結構化的「教科書」。內容相近就**更新**既有條目,差很多才**新增**。 --- ## 為什麼用 Google Docs + Sheets? - **Obsidian 沒有網路版**,不一定人人習慣 — 重點是觀念,工具不重要。 - **Google Docs** 當 wiki 條目本體,電腦手機通用、人人都有。 - **Google Sheets** 當**目錄(index)**:結構化、乾淨、搜尋飛快,n8n 又能直接讀成 JSON。目錄裡不只篇名,還有 `keywords`、`summary`、`last_updated`,讓 AI 好找。 --- ## 倉庫內容 ``` . ├── workflows/ │ ├── LLM_wiki.json # 主工作流(入庫 + 查詢兩條流程) │ └── create_wiki_page.json # 子工作流:建立 Google Doc 並移到指定資料夾 ├── index.xlsx # 目錄範本(上傳 Google Drive 後轉成 Google Sheets) ├── wiki/ │ └── RAG 檢索增強生成(RAG).docx # 一篇 wiki 條目範例(轉成 Google Docs) └── README.md ``` > ⚠️ 這是**零件包**,你需要自己組裝(接上自己的 Google 帳號與 LLM 金鑰)。 ### 為什麼下載的是 `.xlsx` 和 `.docx`? 這個專案產生的 wiki 原本放在 **Google Drive 的 Docs / Sheets**。為了方便在 GitHub 上發佈下載,匯出成 Office 格式(`.xlsx` / `.docx`)。 **👉 你下載後,要把它們上傳到自己的 Google Drive,並轉回 Google 原生格式才能被 n8n 呼叫:** | 下載到的檔案 | 上傳後請轉成 | 用途 | |---|---|---| | `index.xlsx` | **Google Sheets** | 目錄(index) | | `wiki/*.docx` | **Google Docs** | wiki 條目(範例,可刪) | 轉換方式(任一即可): - 在 Google Drive 直接用 Google Sheets / Google Docs **開啟** `.xlsx` / `.docx`,再「檔案 → 另存為 Google 試算表 / Google 文件」。 - 或在 Drive 設定中開啟「上傳時自動轉換為 Google 文件格式」,再上傳。 --- ## 目錄(index)欄位 `index.xlsx` 是 wiki 的目錄,AI 靠它找資料。欄位: | 欄位 | 說明 | |---|---| | `topic` | 主題名稱(也是 wiki 條目的標題) | | `doc_id` | 對應 Google Doc 的 ID | | `keywords` | 關鍵字,幫 AI 比對問題 | | `summary` | 摘要,幫 AI 判斷相關性 | | `last_updated` | 最後更新日期 | --- ## 運作原理(兩條流程) 主工作流 `LLM_wiki.json` 內含兩條獨立流程。 ### 1️⃣ 資料入庫(寫入) `On form submission`(上傳 `.md` / `.txt`)→ `Extract from File` → **`AI Agent`(知識寫入助手)** 寫入 Agent 的邏輯: 1. **先讀目錄** `get_indexs`(鐵律:沒讀過 index 不准做任何事)。 2. 把上傳文件拆成一個或多個主題。 3. 逐一判斷: - **主題已存在** → `write_wiki`(Append 到既有 Doc)+ `update_wiki`(更新該條目的 keywords / summary)。 - **主題不存在** → `create_wiki_page`(建新 Doc,呼叫子工作流)+ `write_wiki`(寫入初始內容)+ `write_index`(在目錄新增一行)。 4. 確認每個主題都完成最後一步(更新過 index)才回報結果。 ### 2️⃣ 資料查詢(讀取) `When chat message received` → **`AI Agent1`(知識查詢助手)** 查詢 Agent 的邏輯: 1. `get_indexs` 讀目錄,瀏覽所有 keywords / summary。 2. 判斷哪個(些)`doc_id` 與問題最相關。 3. `read_wiki` 讀取對應 Doc 全文。 4. 根據讀到的內容回答(只讀不寫;目錄裡找不到就老實說「Wiki 尚未收錄此主題」)。 ### 子工作流 `create_wiki_page.json` 因為 Google Docs 節點**無法直接在指定資料夾建立文件**,所以拆成子工作流:用 Webhook 觸發 → `Create a document` → `Move file`(移到指定 wiki 資料夾)→ 回傳 `doc_id`。主工作流用 HTTP Request 節點呼叫它。 --- ## 安裝與設定 ### 需求 - 一個可用的 **n8n** 實例(自架或雲端)。 - **Google 帳號**(Docs / Sheets / Drive 權限)。 - 一個 **LLM**。本專案範例用 **Google Gemini**(`lmChatGoogleGemini` 節點),可自行換成其他 LLM 節點。 ### 步驟 1. **匯入工作流**:在 n8n 中匯入 `workflows/LLM_wiki.json` 與 `workflows/create_wiki_page.json`。 2. **準備 Google 檔案**: - 把 `index.xlsx` 上傳 Google Drive 並**轉成 Google Sheets**。 - 在 Drive 建一個資料夾放 wiki 條目(例:`wiki/`)。 - (可選)把 `wiki/*.docx` 上傳並**轉成 Google Docs** 當範例,或直接刪掉從零開始。 3. **接憑證**:在每個 Google Sheets / Docs / Drive 節點接上你的 Google OAuth 憑證;LLM 節點接上你的金鑰。 4. **指定目標**: - 把 `get_indexs` / `get_indexs1` / `write_index` 指向你的 index Google Sheet。 - 把 `create_wiki_page` 子工作流的「建立文件」與「Move file」指向你的 wiki 資料夾。 - 主工作流的 `create_wiki_page` HTTP 節點 URL 改成**你自己 n8n 的 webhook 網址**(範本內是作者的網址,務必替換)。 5. **啟用並測試**: - 用表單上傳一份 `.md` / `.txt` → 看 index 是否新增、wiki 資料夾是否多出 Doc。 - 在 chat 觸發器問一個問題 → 看它是否查目錄、讀 Doc、回答。 --- ## 注意事項 - **Token 燒得較兇**:因為是讓 LLM 真的去「讀、整理、改寫」資料,比向量法耗 token。處理大量文件前先評估成本。 - **範本內含作者的 webhook 網址**,請替換成自己的。 - 這套設計**重整理輕堆疊** — 它整理出來的是一個「知識**庫**」,而不是無限長大的「知識**倉庫**」。 --- ## 致謝 觀念來自 **Andrej Karpathy** 的 LLM Wiki([原文 gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11ac484894))。本專案只是把同一個觀念換成人人都有的 Google 工具,方便教學與實際使用。 ## 授權 MIT License,詳見 [LICENSE](LICENSE)。