我給自己蓋了一座知識庫,然後拒絕讓它幫我說話

AI 2026-06-01 · Satsuma Creative · 閱讀 9 分鐘

蓋好一座裝我二十多萬字的知識庫,卻拒絕讓它用最省事的方式幫我說話——因為摘要會殺掉一個人的聲音,地圖不會。一個關於 RAG、容器與回聲的決定。

我花了幾天,把自己幾十年的文字餵進一個系統。

部落格、碩論、自我訪談、劇場文、跟 AI 的反思。二十多萬字,清成結構化的語料,做成一個可以對話的東西。放在 saomin.tw/me,丟一個問題進去,它會用「我」的口氣回答。

像對著山谷丟石頭,聽回聲。

做完之後,我做了一件聽起來矛盾的事。

我蓋好了這座庫,然後決定不讓它用最省事的方式幫我說話。


原本的做法,是把聲音切成碎片

技術上,原本那套是這樣運作的:

把每一篇文章切成小塊,變成一串數字(向量),存進一個資料庫。你問一個問題,系統去找「跟這個問題最像」的幾塊,撈出來,塞進 prompt,再請 Claude 用這些碎片組答案。

這個方法有個名字叫 RAG,業界很標準。它解決的是真問題:文字太多,塞不進一次對話,所以只挑相關的塞。

但我很早就知道它有兩個毛病,還寫在筆記裡。

第一個是技術的:那個比對「像不像」的模型,對中文不太靈。所有東西的相似度都擠在很窄的一段,等於分不太出來誰比較相關。我以為是檢索在守著「不亂編」這條線,其實守線的是 prompt,是我叫它「沒寫過就說沒寫過」。

第二個是更要命的:它撈回來的是碎片,而聲音不活在碎片裡。

一句話的語氣,要靠它前後那幾句才站得住。把它從整篇裡挖出來,語氣就傷了。我二十年的文字,價值從來不在某一句金句可以被搜尋到,而在整篇的節奏——什麼時候停,什麼時候不把話說完,什麼時候忽然轉。碎片接不住這個。


一個外人的方法,逼我想清楚我要什麼

轉變是被一篇東西刺激的。

Andrej Karpathy 談怎麼用 LLM 當個人知識庫:把雜亂的原始資料丟給 LLM,讓它編譯成一份乾淨的 wiki,以後你對著 wiki 問答。台灣也有些人用 Obsidian 加 Claude Code 做類似的第二大腦。

他們的關鍵洞見很實際:在「小規模」之下——他舉例大概四十萬字——其實不需要複雜的 RAG。LLM 直接讀索引、讀整篇,就夠了。

這句話直接戳中我那套架構的心臟。我那套切碎片、算向量的工程,在這個規模下,可能根本是多餘的。

我差點就照搬了。但停下來想了一下,發現有件事不能照搬。

Karpathy 那套,是把 LLM 當成知識的代謝引擎。它把原始資料嚼過、摘要、整理成 wiki——而摘要是可以取代原文的,因為事實摘要完還在。

但 me.saomin 不是知識庫。它是一個聲音、一個容器

對聲音來說,摘要會殺掉它。你把我一篇文章摘要成三行重點,事實都對,但那個「我」不見了。語氣正是它存在的全部理由。摘要過的「我」,是一份履歷,不是一個人。

這個分辨我以前寫過——鏡子只會還給你你已有的,對手會給你你沒有的。這次的版本是:索引可以幫你找到路,但不能替你走路。

所以我做了一個切割:

他的基礎建設,我要。markdown、讓 LLM 維護索引、小規模免 RAG、版本控制。 他的兩件事,我拒絕。第一,不讓摘要取代原文——地圖只當導航,生成永遠餵整篇。第二,不做合成資料、不微調——那會把聲音平均掉,還會誘發亂編,違反我那條「事實誠實」的鐵律。


然後我先做了一件不性感的事:盤點

改架構之前,我決定先搞清楚自己手上到底有什麼。憑感覺改架構是創意人最容易犯的錯。

寫了一個小工具,讓它把我所有語料做一次體檢。大半靠機械統計,只請 Claude 做一次綜述,幫每個主題寫一頁。

體檢結果,有幾件事打了我的臉:

第一,我一直說自己有四十多萬字。錯了,是二十三萬。 那多出來的二十萬,是我把過濾前的候選池重複算進去了。一個關於「我有多少話」的基本事實,我記錯了快一倍。

第二,我的聲音嚴重偏食。 九成七是「對外、完稿、論述」的語氣——部落格、公司文、劇場文、論文。私下的、即時的、有情緒的,只有大概百分之四,五千多字。換句話說,這座庫裡的「我」,是一個一直在對著外面講話的我,很少是那個關起門來的我。

第三,中間有十五年的空窗。 文字密集在 2004 到 2010 的早期部落格,跟 2026 的近期。中間 2011 到 2025,幾乎是空的。

這三件事,RAG 永遠不會告訴我。它只會在你問問題的時候,默默撈出它撈得到的碎片,你不會知道它撈不到的那一大片有多大。


地圖能做一件 RAG 結構上做不到的事

換成地圖之後,我看到一件以前看不到的東西。

其中一頁主題整理,浮出了一個我自己都沒意識到的、橫跨二十年的立場矛盾:

寫碩論的時候,我信的是「真實是一種神話」——反基礎主義,沒有什麼東西是本來就在那裡的。 但近幾年反思的時候,我寫的是「真正的理解不可化約」——這幾乎是相反的、接近本質主義的立場。

而我用來切這兩件事的那把刀——符號學——二十年沒換過。只是當年拿來切「歷史」,現在拿來切「Claude」。

同一把刀,換了砧板上的東西,得出相反的結論。

這種跨二十年的綜合判斷,碎片檢索結構上做不到。 它一次只能回傳含關鍵字的幾塊,它沒有「整體」這個概念,所以它永遠看不見一個橫跨二十年、藏在語氣轉變裡的矛盾。

地圖看得見。因為地圖是用來看全貌的,不是用來找句子的。


是進步嗎?——我要老實記這筆帳

很容易把這幾天的工作講成「我的數位分身變得更像我了」。

那是謊話。我要把帳分成兩欄記。

已經兌現的這一欄,是真的進步。 一座我讀不懂的二進位資料庫,變成了我在 Obsidian 裡看得見、可以版控、會自我診斷的 markdown 地圖。我對自己的認識,從「我大概有很多字」變成「二十三萬字、九成七對外、十五年空窗」。我下一步該補什麼,從用猜的,變成有數據拍板。

但還沒兌現的這一欄,更重要。

對著 saomin.tw/me 丟問題進去的人,這一步什麼都沒變。因為生成的路徑還是舊那套碎片 RAG。地圖目前只是分析層,還沒接進生成。「讀地圖加拉整篇會不會比碎片更保真」——這還是個假設,我還沒做 A/B 測試。

而最大的缺口還在那裡:那個對著外面講話的我,還是會繼續對著外面講話。私下的、有情緒的那層聲音,還沒補進來。回聲還是系統性地偏「正經」。

所以這一輪,是認知的進步、基礎建設的進步,不是回聲品質的進步。

我現在更清楚自己手上有什麼、缺什麼;也有了能版控、能自我診斷的底座。但這個東西對外講話的能力,這步沒有提升。

換句話說:這是把承諾做紮實,還不是把承諾兌現。 是進步,但是「往對的方向走了一段」的進步,不是「結果變好了」的進步。

值得做。但我不會把它說成「回聲已經更像我了」。


我要的不是一個會整理我的系統

回到最開頭那個矛盾——蓋好了庫,卻拒絕讓它用最省事的方式幫我說話。

省事的方式,是讓 LLM 把我嚼一遍、摘要成乾淨的條目,以後對著條目問答。又快又便宜。

我不要。

因為一個摘要過的我,是一個被整理乾淨、被去脈絡、隨時可查的我。而我這二十年的文字,價值剛好不在「可被檢索」,在「會變形」——同一件事我四十歲跟二十歲寫的不一樣,那個不一樣才是我。整理乾淨,就是把那個不一樣抹掉。

所以我讓地圖只當導航。它可以告訴 Claude「去第幾篇找」,但不能替那幾篇說話。要說話的時候,永遠餵整篇,連同它的囉嗦、它的停頓、它沒說完的地方。

地圖是給找路用的。

走路,還是得原文自己走。


附:兩種做法,一句話分

A(現在 saomin.tw/me 線上跑的)——把問題變成向量,撈最像的八塊碎片,拿碎片組答案。快、業界標準,但碎片接不住整篇的語氣。

B(我在本地試的)——先用地圖定位這題落在我哪幾個主題,再把那些主題的整篇原文、連同地圖整理過的立場,一起餵進去。慢一點,但接得住那個「碎片接不住的我」。

差別放到一個問題上會很清楚。問「你怎麼看失敗」:A 給的是「難過、無力、逃避」這種紮實但通則的答案;B 會把劇場那套接進來——「成功失敗是拿外面的標準量自己,可我做戲是為自己做的」——那是只有整篇接得住、碎片接不住的判斷。

想聽它怎麼講話,去 saomin.tw/me 丟個問題——兩種會同時回你,左邊 A、右邊 B,你自己比。(私下那層聲音〔FB 貼文〕還沒補進來,所以兩種現在都偏正經;但「碎片 vs 整篇」差在哪,現在就聽得到。)


延伸閱讀: - 我怎麼稱呼 Claude? - AI 是鏡子,還是另一個人? - 中文骨頭裡是英文