把三個月的田野變成一片會聚散的星群:RP-01 語意星圖原型上線
RP-01 的互動星圖今天上線於 /atlas/。我們把《艷世紀》227 則田野片段——手記、實驗日誌、辭典詞條——用 bge-m3 轉成向量,UMAP 降到三維,再由 Three.js 灑成一片可切換三種視圖的點雲。這篇記錄整條管線怎麼走過來,也誠實寫下哪些聚類讓我們驚喜、哪些邊界其實脆弱得經不起換一次參數。
先講你現在能點開的東西
打開 /atlas/,你會看到一片浮在暗色裡的點。每一顆點是一則真實的田野片段——滑過去讀它,點下去回到它的原文。你可以在語意、時間、來源三種視圖之間切換,看同一批內容在不同的組織邏輯下各自聚成什麼形狀。
這片星群不是設計師排出來的。它的座標,是三個月的田野內容自己算出來的位置。
這篇是它的上線說明,但我更想寫的是中間那段——一批散亂的段落,怎麼一步步變成一張可以被質疑的圖。
227 則片段,先講它們從哪來
星圖裡一共 227 個點,資料是 2026 年 7 月的一份快照。組成是這樣的:手記段落 120 則、實驗日誌段落 83 則、辭典詞條 24 則。全部來自艷世自有媒體《艷世紀》,沒有一則沾到客戶或受訪者的資料——這條線我們不跨,實驗場域只用自己走過、寫過的東西。
要強調的是「段落」這個顆粒度。我們沒有把一整篇手記當成一個點。一篇手記裡,開場的街景、中段的一段對話、結尾的一句感想,講的往往是三件不相干的事;整篇壓成一個向量,等於把三種氣味攪成一杯混濁的水,語意全被平均掉了。所以切段策略是段落層級——以自然段為單位切,並對每篇設一個取樣上限,免得某幾篇特別長的手記在圖上結成一坨、把別的內容擠到邊緣。窄一點,但每個點都還保有它自己的語氣。
從段落到座標:一條四步的管線
中間的轉換,拆開是四步。
第一步,embeddings。每一則段落餵給 Cloudflare Workers AI 上的 bge-m3 模型,轉成一個 1024 維的向量。這個數字不用理解成什麼玄學——它就是模型讀完這段話後,對「它在講什麼」的一種數值編碼。語意相近的兩段話,它們的向量在這 1024 維空間裡會靠得比較近。選 bge-m3,是因為它對中文的處理夠穩,而且跑在 Workers AI 上,和我們整個 Cloudflare 技術棧接得順。
第二步,降維。1024 維人是看不見的,得壓到三維才畫得出來。這裡用 UMAP,參數 nNeighbors=12、minDist=0.15。這兩個數字很要緊,後面會回來講它們有多敏感。UMAP 做的事,是盡量在壓扁的過程裡保住原本的鄰里關係——本來靠得近的,壓完希望還是近的。
第三步,渲染。三維座標交給 Three.js,灑成一片點雲。滑過讀內容、點擊回原文的互動,也在這一層。
第四步,三種視圖。同一批點,語意視圖按向量的相似度佈局,時間視圖按採集的先後排開,來源視圖按手記/日誌/辭典分群。切換視圖時點會流動到新的位置——你能親眼看到同一批內容,在不同的組織邏輯下重新聚散。
技術棧是 Astro / Three.js / GSAP / Cloudflare,和本站其餘部分同一套。
讓我們驚喜的:語意真的把該靠近的靠近了
原型跑起來,第一件讓我們停下來多看幾眼的事,是語意視圖裡有些聚類「對得莫名其妙地準」。
有一小群手記段落,分別來自不同月份、不同地點、當初寫的時候完全沒想過它們有關,結果在圖上緊緊挨在一起。點開一看,才發現它們共通的是一種很難命名的東西——大概是「站在一個正在被拆改的老空間裡,那種說不上來的悵然」。不是同一個地名、不是同一個關鍵字,是同一種情緒的紋理。模型沒有被教過這個分類,它是從字裡行間自己嗅出來的。
那一刻很微妙。我們寫田野的時候,這種呼應是靠人腦模糊地記著「我好像在哪也寫過類似的感覺」;現在它被擺成了空間上一個看得見的鄰近關係。這正是我們做 RP-01 想要的——不是讓 AI 替我們下結論,是讓它把我們自己都沒串起來的線索,擺到桌面上讓人看見。
沒那麼好看的:邊界其實很脆
但同一片圖,越看越心虛。
第一個侷限:小樣本下,星群的邊界對參數敏感得嚇人。 227 則在向量的世界裡是很小的量。我們試著把 UMAP 的 nNeighbors 從 12 調到 15,某幾個看起來很結實的星群就散了、重組成另一種分法。這說明一件事:圖上那些「聚類」,有一部分是資料真實的結構,有一部分是我們挑的那組參數投影出來的假象。哪些是真、哪些是參數的影子,現在這個樣本量還分不乾淨。所以請把這張圖當成一個提問的起點,不要當成一份結論——它在說「這些也許有關」,不是在說「這些一定有關」。
第二個侷限:台語混寫的段落,品質待查核。 田野手記裡不少段落是台華夾雜,甚至有漢字寫台語音的地方。bge-m3 對這種混寫的理解到底穩不穩,我們還沒有把握。目前的觀察是,有幾則台語濃度高的段落,落點有點可疑——孤零零飄在邊緣,鄰居和它語意上並不真的近。這到底是這些段落本來就獨特,還是模型根本沒讀懂它、只好把它丟到角落,現在分不出來。這一塊要靠人一則一則查核,AI 給的落點只能當線索,不能當答案。
收在一個立場上
上線一個會動、會聚散、點開來漂亮的星圖,是容易的部分。難的是忍住不把它講得比它實際上更可信。
所以這篇日誌花了一半篇幅在寫它哪裡站不住。因為對我們來說,一張可以被質疑的視覺化,才是研究工具;一張只能被讚嘆的,不過是裝飾。
如果你點開 /atlas/,看到某兩則片段靠在一起覺得「這也能算一群?」——那個懷疑,正是這個原型該引發的反應。它不是要你相信這片星群,是要你能夠指著其中一顆星問一句:你憑什麼落在這裡。
這是 2026 年 7 月的第一版快照。資料會長、參數會調、查核會補。但那個「能被指著問」的性質,我們打算一直留著。