前一天我把 Company Brain 的四層知識架構攤開來:L1 是 Hermes 的長期記憶,L2 是 Wiki,L3 是 Obsidian Vault,L4 則是 QMD。
今天要談的是最容易被誤解的一層:QMD。
很多人第一次看到搜尋索引,會直覺把它當成另一個知識庫。資料可以被搜尋、可以回傳段落、甚至還有自己的 SQLite 資料庫,看起來很像「另一份內容」。但在我的系統裡,這個理解是錯的。
QMD 的定位只有一句話:它是 Obsidian Markdown 的衍生搜尋層,不是第二套可獨立編輯的知識庫。
為什麼要把這件事講清楚?因為一旦兩邊都能修改,系統就會出現「到底哪份才是真的」的問題。Agent 查到的內容可能和人打開 Obsidian 看到的內容不同;有人修了索引裡的資料,下一次重建索引又被覆蓋;更麻煩的是,錯誤不一定立刻出現,而是在幾週後才變成難以追查的失憶。
我的資料流
在這個架構裡,原始資料只有一份:Obsidian Vault 裡的 Markdown。
人或 Agent 要新增知識時,先依照分類、查重與關聯規則整理成 Markdown。這份 Markdown 才是需要被審閱、版本控制與長期保存的內容。QMD 接著讀取同一批 Markdown,建立 SQLite、BM25 與 embedding 等索引,讓查詢更快、更容易找到語意相近的內容。
因此資料流是單向的:
Markdown 原始資料 → QMD 索引 → 查詢結果
不是兩套資料互相同步,也不是 QMD 內容可以脫離 Markdown 獨立維護。
SQLite、BM25 與 embedding 各自做什麼
SQLite 可以保存檔案、段落、metadata 與索引所需的結構化資料。它讓搜尋層能快速定位文件和內容片段,但它保存的是對原始 Markdown 的衍生表示。
BM25 是文字搜尋方法,適合找關鍵字、專有名詞與精確片語。例如搜尋某個 cron 名稱、設定欄位或錯誤訊息時,字面匹配往往比語意相似更可靠。
Embedding 則把文字轉成向量,讓系統能找到「意思相近、用字不同」的段落。使用者不一定記得原文寫的是「認證自動修復」,可能只輸入「登入過期怎麼處理」,語意搜尋仍有機會找到相關 SOP。
三者的角色不同,但都只是為了改善查詢,不會改變哪一份資料是權威來源。
一次同源驗證
我曾經做過一個很簡單、但很重要的檢查:統計 Vault 裡的 Markdown 數量,再和 QMD 顯示的 indexed 數量比較。
當時的結果是 329 個 Markdown 對應 329 個 indexed。這個數字不能證明每一個字都正確,但可以先排除一大類問題:有檔案完全沒有進入搜尋層。
更完整的驗證還要抽查檔案內容、路徑與修改時間,確認索引沒有指向錯誤位置,也要在修改一份 Markdown 後重新查詢,確認新內容能被找到。
驗證不只是看「索引完成」
索引工具顯示成功,不代表 Company Brain 已經正確。至少要驗證三件事:
一、數量一致:原始 Markdown 與 indexed 文件數量能對上。
二、內容可回讀:用一個不容易混淆的句子搜尋,查詢結果能回到正確文件與段落。
三、更新可追蹤:修改原始 Markdown 後重建或更新索引,查詢結果反映新內容;舊內容不應在沒有標示的情況下繼續被當成最新規則。
如果只驗證第二層,Agent 可能「搜尋得到」,但搜尋到的是舊版本。如果只驗證第一層,則可能只是 329 個錯誤檔案被成功索引。
這個邊界也限制了 Agent 的權限
查詢 Agent 可以讀取 QMD,透過它快速找到相關知識;需要寫入時,應該回到 Markdown 原始資料層,依照文件治理規則處理。QMD 不應被當成可以直接編輯的工作區。
這會讓流程多一步,但換來的是可追溯性:誰在什麼時間修改了哪一份原始文件,內容變更前後是什麼,都可以在 Markdown 與版本記錄中查到。索引壞了可以重建,原始資料不會因此消失。
真正的取捨
把 QMD 當成衍生層,並不是否定索引的價值。相反地,只有先把權威來源和加速層分開,搜尋系統才可以放心演進。未來可以更換 BM25 參數、embedding 模型,甚至換掉整個索引工具,而不必搬遷公司知識本身。
這也是資料架構裡很常見的原則:可重建的 cache、index、materialized view,不應該和 source of truth 混為一談。
今天的結論
如果你正在替 Agent 加上知識庫,先回答一個問題:哪一份資料是唯一權威來源?
我的答案是 Obsidian Vault 的 Markdown。QMD 負責讓它更容易被找到,不負責取代它。
這條界線看似只是命名和目錄規則,實際上決定了系統能不能長期維護。當資料量從幾十份增加到幾百、幾千份時,最怕的不是搜尋慢,而是每個人都以為自己手上的那份才是真的。
下一篇 D11:外部文章、X、官網與 Google Drive 文件如何經過分類、查重、建關聯,最後進入可執行的知識庫。