← 所有文章

思維的拓樸:嵌入空間裡的 Obsidian

15,800 則筆記。49,746 個區塊。每個區塊都是一個 256 維向量。7 我對整份資料集跑了 UMAP,投影到三維空間,讓結果在螢幕上緩緩旋轉。我的第二大腦有了形狀,而這個形狀揭露了筆記本身從未說出口的事:我的思考工作聚攏在三個密集樞紐周圍(Claude Code、設計系統、AI 研究),彼此之間只靠幾條細瘦的交集筆記橋接,外圍還環繞著一圈稀疏的孤立訊號,什麼也連不上。

知識的形狀會告訴您:您在哪裡思考、在哪裡迴避思考,以及您的想法在哪裡還有碰撞的空間。同一套用來組織代理行為的上下文架構,也在組織人的知識。

一句話總結: 把 15,800 則 Obsidian 筆記投影到 256 維的嵌入空間,會浮現三種知識拓樸——集中式、去中心式、分散式——各有不同的失效模式。群集之間的橋接筆記帶來最新穎的洞見;而相變研究顯示,草率的整理會在某個尖銳的門檻上讓整個知識結構崩塌。

TL;DR

嵌入空間賦予知識庫一種空間結構,讓思考的拓樸顯形。Kat(@poetengineer__)為 Obsidian 筆記庫示範了三種拓樸:集中式(一個核心概念串起全部)、去中心式(成群的主題樞紐),以及分散式(想法之間的連結標註了語意關係)。1 我那座 15,800 個檔案、49,746 個區塊的筆記庫,呈現的是有三個主導群集的去中心式拓樸。Pesce 等人研究神經網路剪枝中的相變,提供了一套數學框架,用來理解簡化(整理、封存、過濾)究竟在什麼時候會越過門檻、破壞知識結構的功能。2 以下依序談:嵌入究竟捕捉了什麼、三種知識拓樸與真實筆記庫數據、如何診斷自己的拓樸,以及一個以我實際筆記庫打造的互動式探索器。


嵌入實際捕捉了什麼

文字嵌入會把一段文字轉換成一串數字。分詞視覺化那篇文章談過文字如何變成 token;嵌入再往前一步:token 成為高維空間裡的座標,而距離對應的是語意。

兩段都在談「用於注入上下文的 Claude Code 掛鉤」的文字,在嵌入空間裡靠得很近。一段談「Claude Code 掛鉤」、另一段談「iOS SwiftUI 導覽」,兩者則相距甚遠。這個距離不是關鍵字重疊度。兩段文字可以一個字都不重複,只要談的是同樣的概念,位置依然相鄰;也可以共用大量字詞(「系統處理資料」),卻因為周邊語境不同而落在天南地北。

我的筆記庫用的是 Model2Vec 的 potion-base-8M 模型:760 萬個參數,輸出 256 維嵌入。3 該模型從較大的句子轉換模型(bge-base-en-v1.5)蒸餾而來,以靜態模型的形式運行,效能約可達 all-MiniLM-L6-v2 的九成——不論在 CPU 或 GPU 上都快上好幾個數量級。筆記庫裡的 49,746 個區塊,各自成為 256 維空間中的一個點。

256 維無法直接視覺化。UMAP 之類的降維技術會把高維結構壓到 2D 或 3D,同時保留局部鄰域關係。4 在 256 維中相鄰的點,在 3 維中依然相鄰。整體結構只是近似,但群集是真實的。


知識的三種拓樸

Kat 在探索 Obsidian 筆記嵌入時,辨識出三種截然不同的知識拓樸。1 每種拓樸反映一種思考結構,也各自帶著不同的失效模式。

集中式:一個核心概念串起全部

在集中式拓樸裡,多數筆記都透過單一主導主題彼此相連。嵌入空間會呈現中央一團密集群集,向外伸出幾條細長的觸鬚。一位只寫 React 的開發者就會看到這種拓樸:React 是樞紐,測試、狀態管理、部署、工具鏈的每一則筆記,都經由它連接。

優勢: 在核心領域累積深厚專業。搜尋效果很好,因為多數查詢都落在同一片鄰域。

失效模式: 脆弱。一旦核心主題失去意義(轉換跑道、技術退場),整個知識結構就失去了組織原則。那些只有相對於中心才說得通的筆記,全都變成孤兒。

去中心式:成群的主題樞紐

在去中心式拓樸裡,筆記形成數個明確的群集,由橋接筆記相連。我的筆記庫正是這種拓樸,有三個主導樞紐:

群集 區塊數 佔比 主要主題
AI 與 ML ~13,100 26% Claude Code、代理架構、LLM 研究
設計 ~7,200 14% UI 系統、字體排印、色彩科學、視覺設計
開發 ~5,100 10% FastAPI、SwiftUI、網頁工程、資料庫
收件匣(未處理) ~13,700 28% 原始訊號、未分類的擷取

其餘 22% 分散在靈感、生產力、科學等較小的類別。

優勢: 韌性。失去一個群集不會摧毀其他群集。跨領域的連結在群集邊界上形成,最新穎的洞見也從那裡長出來。

失效模式: 碎裂。群集之間的橋接筆記若太單薄,群集就會變成思想上的穀倉。我的筆記庫在設計與 Claude Code 之間有一條細橋(關於設計代理 UI、提示介面模式的筆記),但設計與純開發之間幾乎沒有橋(後端架構筆記很少連到視覺設計)。這道縫隙就是盲點:我思考設計,也思考後端工程,唯獨很少把兩者放在一起思考。

分散式:帶有關係標籤的連結

在分散式拓樸裡,筆記之間的連結帶有語意標籤,說明想法如何相關。Kat 的實作用 LLM 為相鄰筆記之間的連結產生標籤。1 連結不再只是匿名的鄰近關係,而是各自有了描述:「反駁」「延伸」「提供證據支持」「應用於不同領域」。

優勢: 可導覽性。分散式拓樸回答的不只是「哪些相關?」,而是「如何相關?」。標籤讓更高階的推理成為可能:找出反駁某個論點的筆記,而不只是提到它的筆記。

失效模式: 成本。為每一組連結產生標籤,成本以平方成長。以我筆記庫的 49,746 個區塊計算,窮舉式標註約需 12 億次 LLM 呼叫。實務上的作法只標註相似度門檻以內的連結。


相變:簡化在什麼時候會摧毀結構

Pesce、He 與 Caldarelli 研究神經網路剪枝中的相變,發現了一個尖銳的門檻:網路會出現「從協同、可運作的相,轉變為效能崩潰的無序相」。2 在門檻之下,移除連結幾乎不影響功能;一到門檻,功能便驟然崩潰。這個轉變遵循的標度律與二階臨界行為一致——正是描述冰融化成水的那套數學。

這與知識整理的類比非常直接。我的訊號評分流程6靠一道相關性門檻,把收件匣從 14,771 則筆記削到 5,886 則。讓代理記憶得以累積價值的複利式上下文動力學,在這裡同樣成立:一則筆記的價值取決於它的連結,而不只是它的內容。這次削減確實改善了搜尋品質:低相關性的結果變少、群集更緊密、檢索更快。但訊號有沒有因此流失?這次簡化是否越過了相變門檻?

剪枝研究給出的答案是:關鍵在連通性,不在數量。移除孤立節點(沒有語意鄰居的筆記)對網路功能的影響微乎其微;移除橋接節點(連起原本各自獨立之群集的筆記)則可能讓結構崩塌——即使那些筆記單獨看起來無足輕重。

我的分流流程把相關性門檻從 0.30 提高到 0.40。收件匣縮減 60% 是以數量衡量的,我並沒有衡量對拓樸的影響。一套具備相變意識的整理策略應該要:

  1. 在過濾前先辨識出橋接筆記(在相似度圖中中介中心性高的筆記)
  2. 不論個別分數高低,都讓橋接筆記豁免於相關性過濾
  3. 每一輪整理之後,追蹤群集連通性指標
  4. 當某一步整理讓群集間的橋接密度低於門檻時發出警示
# Sketch: bridge note detection before curation
def identify_bridge_notes(embeddings, threshold=0.7):
    """Find notes that connect otherwise-separate clusters."""
    from sklearn.neighbors import NearestNeighbors
    nn = NearestNeighbors(n_neighbors=10, metric='cosine')
    nn.fit(embeddings)
    distances, indices = nn.kneighbors(embeddings)

    # Bridge score: how many of a note's neighbors are from
    # different clusters than the note itself
    bridge_scores = []
    for i, neighbors in enumerate(indices):
        own_cluster = labels[i]
        cross_cluster = sum(1 for n in neighbors if labels[n] != own_cluster)
        bridge_scores.append(cross_cluster / len(neighbors))

    return bridge_scores

診斷您的知識拓樸

分析知識拓樸不需要 15,000 則筆記。任何 100 則以上、帶有嵌入的筆記集合,都足以顯露結構。如果您已經把 Obsidian 當成 AI 基礎設施在用,原料早就在手上了——我筆記庫裡的一萬七千則訊號,最初也只是每天隨手的擷取。三個診斷問題:

1. 存在多少個群集?

對嵌入跑一次 k-means 或 DBSCAN,數一數有幾個明確的群集。少於 3 個,偏向集中式拓樸;3 到 8 個之間,屬於去中心式;超過 8 個,可能是真正的分散式拓樸,也可能是整理不足(群集多代表主題多,而主題多往往意味著每一個都不夠深)。

2. 橋接有多密?

針對每一對群集,計算在兩個群集中都有最近鄰的筆記數量。若橋接密度低於較小群集規模的 2%,就有形成穀倉的風險。我的「設計—開發」橋接約為 1.4%——低於門檻,正好印證了我觀察到的盲點。

3. 孤立筆記佔多少比例?

所謂孤立筆記,是在餘弦相似度門檻(通常取 0.7)之內找不到任何鄰居的筆記。孤立不必然是壞事——它們可能代表真正新穎的想法。但孤立率若超過 15%,多半意味著擷取習慣不一致(筆記與您的知識領域不搭),或是嵌入品質有問題。

我的筆記庫孤立率約 8%。大多數孤立筆記是尚未整理成結構化筆記的收件匣原始擷取。排除收件匣後,孤立率降到 3%,代表處理過的筆記能夠順利融入既有拓樸。


群集揭露了什麼

上方的視覺化取自我筆記庫中隨機抽樣的 500 個區塊。這些群集對應著真實的思考鄰域。

AI 與 ML 樞紐(佔區塊 26%)是最密集的群集。Claude Code 架構、代理設計模式、LLM 研究論文與提示工程技巧,構成一片緊密的鄰域。密度反映的是量:我閱讀與擷取的 AI/ML 內容多過任何其他類別。密度也帶來搜尋品質上的優勢——這個領域的查詢會回傳高度相關的結果,因為嵌入空間夠稠密。

設計樞紐(14%)與 AI 和 ML 保持著距離。字體排印系統、色彩科學、UI 元件模式與視覺設計參考,自成一個群集。這樣的分隔是合理的:設計與 AI 工程使用不同的詞彙、不同的推理框架、不同的評估標準。但分隔也意味著,像「代理的輸出該如何排版才方便開發者審閱」這類查詢,會掉進兩個群集之間的縫隙,回傳的結果不是偏這邊就是偏那邊,很少來自交集處。

開發樞紐(10%)與 AI 和 ML 的重疊,多過與設計的重疊。FastAPI 模式、資料庫設計與 SwiftUI 架構,和 AI 工程筆記共用一套概念詞彙(雙方都談程式碼、架構、測試)。詞彙上的重疊造就了一片混合地帶,「給代理用的 DevOps」與「給 AI 用的基礎設施」這類筆記就住在那裡。

收件匣光暈(28%)包覆著一切。原始擷取、未分類訊號與尚未處理的書籤,形成一團稀疏的雲,與既有群集之間的連結相當薄弱。把收件匣從 14,771 則削到 5,886 則的訊號評分流程,刪掉的主要就是這圈光暈裡的東西:與任何既有群集相似度都偏低的筆記。

靈感群集(6%)位於設計與收件匣之間。動態字體排印參考、動態設計研究與視覺藝術擷取,構成一片鬆散的鄰域。這個群集之所以存在,是因為我持續擷取視覺靈感,卻很少把它們整理成結構化筆記。它揭露了一個模式:我廣泛消費視覺靈感,產出的設計工作卻很窄。消費與產出之間的落差,在拓樸上就顯示為一個「進來的密度高(擷取)、出去的連結少(在靈感之上長出的筆記)」的群集。

跨群集的橋接是最耐人尋味的特徵。最細的一條橋連接設計與開發:較小群集中約有 1.4% 的筆記,在兩個群集裡都有最近鄰。相比之下,AI 與開發之間的橋接達 8.3%,反映出我的開發工作有多大比例牽涉 AI 基礎設施。橋接密度能預測新意會從哪裡冒出來。我那篇從 Boids 到代理,就來自一則橋接筆記——它把湧現行為研究(AI 與 ML 群集)和群飛演算法實作(開發群集)接了起來。少了這座橋,那兩批筆記永遠不會相撞。

拓樸也塑造了檢索品質。驅動我筆記庫搜尋的混合式檢索器同時使用 BM25 關鍵字比對與向量相似度——但它的效果取決於底層的群集結構。落在密集群集裡的查詢會得到精準結果;掉在群集之間的查詢,則需要 BM25 這條退路來補上缺口。

筆記庫旁邊還有第二個嵌入資料庫:工具鏈搜尋資料庫,涵蓋 653 個檔案、4,518 個區塊。5 工具鏈的拓樸截然不同:一個密集的核心群集(Claude Code 設定),外圍散布著測試、掛鉤與技能的小型衛星群集。這種單一化拓樸對工具鏈是合適的,因為工具鏈只服務單一目的。但知識庫若呈現單一化拓樸,那就是警訊。


重塑您的拓樸

拓樸並非定局。四個有意識的動作,可以重塑知識結構。

動手寫橋接筆記。 若兩個群集缺乏連結,就刻意寫下跨越兩者、明確串起概念的筆記。我的「設計—AI」橋很細,是因為我很少寫關於設計代理介面的東西。一則名為「代理輸出的 UX 模式」、同時引用設計原則與代理架構研究的筆記,就能造出一個橋接點。

找出孤立筆記。 每月掃描一次孤立筆記,然後做決定:整合、封存,或刪除。代表萌芽中想法的孤立筆記,應該用橋接筆記接回既有群集;只是一次性參考的,封存即可。

整理之後要追蹤。 任何大規模整理(刪除、封存、過濾)的前後,都測量一次群集連通性。若群集間的橋接密度下降,代表這次整理刪掉了本該保留的橋接筆記。

在邊界上閱讀。 最有價值的閱讀對象,不在您最密集的群集更深處,而在群集與群集的交界。一篇橫跨 AI 工程與視覺設計的論文,能激發的新連結,遠多於又一篇加深原本就很稠密之 AI 群集的論文。


重點整理

  • 嵌入空間讓知識庫有了形狀。 這個形狀揭露思考的拓樸:注意力集中在哪、迴避了哪,以及想法在哪裡跨越領域相連。
  • 三種拓樸有不同的失效模式。 集中式脆弱;去中心式缺了橋接筆記就會碎裂;分散式維護昂貴,但導覽起來最豐富。
  • 相變讓整理變成非線性的事。 在門檻之下刪筆記,結構幾乎不受影響;一到門檻,功能就崩潰。任何大規模整理之前,都必須先辨識並保護橋接筆記。
  • 收件匣光暈是整理的前線。 原始擷取在既有群集外圍形成一團稀疏的雲。訊號評分負責過濾這圈光暈,而拓樸則告訴您:過濾究竟保住了還是毀掉了橋接連結。
  • 在邊界上閱讀。 價值最高的筆記負責連接群集,而不是加深群集。孤立筆記偵測與橋接密度指標,可以引導閱讀的優先順序。

常見問題

什麼是文字嵌入?它如何表示知識?

文字嵌入會把一段段文字轉換成高維空間中的一串數字(向量),而空間中的距離對應語意上的遠近。談論相近主題的兩段文字會彼此靠近,無論它們是否用了相同字詞。像 potion-base-8M 這樣的 256 維嵌入模型,會把每個文字區塊轉成 256 個座標。把這套作法套用到整座知識庫,這些向量的集合便構成一種空間結構,其中的群集、橋接與縫隙,正揭露了內容在思考上的拓樸。

我要如何把自己的 Obsidian 筆記庫嵌入空間視覺化?

先用句子嵌入模型為筆記產生嵌入(Model2Vec 的 potion-base-8M 又快又免費),再以 UMAP 把高維向量投影到 2D 或 3D。把嵌入存進資料庫(SQLite 搭配 vec 擴充相當好用),跑一次 UMAP 投影,然後用任何 3D 繪圖函式庫呈現。得到的點雲會顯露筆記庫的群集結構:您經常書寫的密集區、主題之間的稀疏縫隙,以及不同領域交會的橋接地帶。

知識整理中的「相變」是什麼?

知識整理中的相變,指的是一道門檻:越過它,刪除筆記造成的不是緩慢劣化,而是知識結構驟然崩塌。神經網路剪枝研究顯示,連結被移除時網路仍能維持功能,直到某個尖銳的門檻,效能才突然崩潰。知識庫的動力學完全相同:刪掉孤立、低價值的筆記影響甚微;但刪掉連接群集的橋接筆記,即使它們單獨看來無足輕重,也可能讓拓樸碎裂。具備相變意識的整理,會在過濾之前先辨識並保護橋接筆記。

要做出有意義的拓樸分析,需要多少則筆記?

大約 100 則帶有嵌入的筆記,就足以浮現有意義的群集結構。少於 100 則,可能形不成明確的群集。100 到 500 則之間,能看出基本拓樸(2 到 4 個群集)。500 到 5,000 則之間,會顯露較細緻的結構,包括橋接地帶與孤立模式。超過 5,000 則之後,拓樸趨於穩定,新增筆記多半是加深既有群集,而非開出新群集。關鍵指標不是總量,而是群集的多樣性:您的筆記是否至少橫跨三個明確不同的主題領域?

Obsidian 的嵌入和知識圖譜有什麼不同?

知識圖譜靠您手動建立的明確連結(反向連結、標籤、MOC)串起筆記;嵌入則靠模型自動發現的語意相似度連起筆記。兩者互補:知識圖譜捕捉的是您有意識建立的結構,嵌入揭露的則是您從未刻意建立的潛在結構。沒有任何反向連結的兩則筆記,也可能因為用不同詞彙談論相關概念,而在嵌入空間裡相鄰。兩者並用——圖譜負責導覽、嵌入負責發現——才能造出一個會主動浮現遺漏連結的第二大腦。

大型 Obsidian 筆記庫最好的檢索策略是什麼?

把 BM25 關鍵字搜尋與向量相似度結合的混合式檢索,表現優於單用其中任一種。BM25 能抓到嵌入可能漏掉的精確術語比對;嵌入則能捕捉關鍵字搜尋察覺不到的概念相似度。倒數排名融合(RRF)負責把兩份結果清單合併。筆記庫超過 10,000 則時,在初次檢索後再加一道重新排序,精確度還能再往上。筆記庫的拓樸會影響哪種策略佔上風:密集群集有利向量搜尋,稀疏或術語密集的區域則有利 BM25。


參考資料


  1. Kat(@poetengineer__),”Exploring shapes of thoughts: extracted my Obsidian notes’ embeddings and arranged them as a 3D network using 3 different topologies”,發表於 X,2026年2月。三種拓樸:集中式、去中心式,以及帶有 LLM 標註連結的分散式。 

  2. Pesce, Diego、Yang-Hui He 與 Guido Caldarelli,”Phase Transitions in Neural Networks Pruning”,arXiv:2602.15224,2026年2月。arxiv.org。從協同、可運作的相到無序相的尖銳轉變,標度律與二階臨界行為一致。 

  3. MinishLab,”Model2Vec: Fast State-of-the-Art Static Embeddings”,2024年。github.com/MinishLab/model2vec。potion-base-8M:760 萬參數、256 維嵌入,效能約為 all-MiniLM-L6-v2 的 90%。 

  4. McInnes, Leland、John Healy 與 James Melville,”UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction”,arXiv:1802.03426,2018年。arxiv.org。比 t-SNE 更能保留整體結構,執行效能也更佳。 

  5. 作者的語意記憶系統。Model2Vec + sqlite-vec + FTS5 BM25 + RRF 混合搜尋,涵蓋 49,746 個區塊。模組:~/.claude/lib/memory/ 中的 embedder.pyvector_index.pychunker.pyretriever.py。 

  6. 作者的訊號評分流程。透過調整相關性門檻,把收件匣從 14,771 則減至 5,886 則(縮減 60%)。記錄於訊號評分流程。 

  7. 作者的筆記庫拓樸分析。從 49,746 個區塊隨機抽樣 500 個點,依筆記庫目錄結構分類主題,並以 PCA 投影至 3D 供互動視覺化使用。 

相關文章

從 Boids 到 AI 代理:AI 系統的集群飛行法則

Craig Reynolds 1986 年的 boids 演算法,僅憑三條局部規則就催生出集群行為。同樣的原理與失效模式,也出現在多代理 AI 系統中。

2 分鐘閱讀

在瀏覽器中重建 MacPaint:1984 年的原始碼就是規格書

我在瀏覽器中重建了 MacPaint 1.3,並將每個工具對照 Bill Atkinson 公開的 Pascal 原始碼逐一驗證。忠實重現一款軟體,究竟需要什麼。

2 分鐘閱讀

真正有效的 AI 代理記憶體架構

混合 BM25+向量檢索、以 Markdown 儲存技能、漂移偵測機制。2026年3月五篇論文驗證了同一套從生產環境失敗中誕生的架構。

2 分鐘閱讀