兩百個人在同一個場子裡。誰該跟誰講話?
這一頁是問答。沒有標語,沒有三大特色。你問的每一個問題,下面都有答案——包括我們做不到的那幾個。
靛色為檢視者這一端,天藍為被排序的另一端。加亮的線代表這一組有命中的維度。
為什麼不用 AI 就好?
因為主辦方要能回答一個問題:「為什麼推薦這個人給我?」
這個問題在活動現場一定會被問到。與會者會問、贊助商會問、被排在名單後面的人更會問。你需要一個能當著對方的面講出來、而且對方可以反駁的答案。
向量距離講不出來。「模型認為你們比較相近」不是理由,它是一個結論,而且是一個沒辦法檢視、沒辦法反駁、也沒辦法修的結論。當有人說「這個推薦不對」,你只能回答「那我們再訓練看看」。
所以這套的核心是反過來的:先定義什麼叫「配得上」,再照定義排。 定義是寫死的、看得到的、可以被主辦方改的。排出來的每一筆都帶著它命中了哪幾條定義。
這不是技術上做不到 AI。這是判斷了在這個場景裡,可解釋比聰明重要。
代價要一起講:它只會發現你定義過的關聯。兩個人之間有一種你沒想到的合作可能,這套排不出來——那正是 AI 有機會而它沒有的地方。
那你們怎麼算?
四個維度,逐維度比對,命中就給該維度的全額分數,沒命中就是零。沒有中間值。
| 維度 | 比對的是什麼 | 命中的定義 |
|---|---|---|
sector 領域 | 雙方登記的產業/領域標籤 | 有任一標籤重疊 |
stage 階段 | 雙方登記的階段(例如募資階段、合作階段) | 落在對方宣告的目標範圍內 |
budget 規模 | 收進來時就轉成級距了。系統裡不存原始金額。(收進來時已正規化為級距,不是原始數字) | 級距相符 |
geo 地域 | 雙方登記的地區 | 有任一地區重疊 |
為什麼是「全額或零」
因為半分講不出來。「這一維你們有 0.6 分的相似」——0.6 是什麼意思?誰能反駁它?
全額或零的好處是理由可以直接寫成一句話:「領域重疊:金融科技」。這句話對方看得懂,也可以說「不對,我們早就不做金融科技了」——然後你去改資料,下次就對了。
為什麼是單向
A 想見 B,不代表 B 想見 A。
一個找錢的新創想見所有投資人;一個投資人只想見符合他 thesis 的那幾家。同一組人,從兩邊看出去的排序完全不同,而且本來就應該不同。
所以這套算的是「以某個人為檢視者時,其他人該怎麼排」。每個人打開自己的名單,看到的順序都是為他自己算的。沒有一個叫做「配對成功」的全域狀態,因為那個狀態在真實世界裡不存在。
加權與平手
各維度的權重加總得到排序位置。分數只在系統內部存在,不會出現在任何輸出裡(原因見下一題)。
平手時的處理是確定性的:先比領域標籤的重疊數量,還是平手就依姓名排。不是隨機、不是「看誰先報名」——同樣的輸入永遠得到同樣的順序,可以重放、可以複查。
工程性質
純函式
無 I/O、無隨機、無時鐘。給同一份資料,永遠回同一個結果
毫秒級
在一次 session 內算完,不需要預先跑批
有測試
單元測試與整合測試都有,排序邏輯的改動會被測試擋
詞彙表是單一事實來源。表外的值不參與比對。
自由填寫欄位若填了詞彙表外的值(例如地區欄填「火星」),該值不會被拿去誤配,而不是被硬塞進最近的分類
為什麼只給理由,不給分數?
因為分數會被當成價值判斷。
「我只有 62 分?」——這句話一定會出現。而且出現的時候,你解釋不完。62 分不是在說這個人比較差,它只是在說「以這位檢視者當下的四個維度看,命中了兩項」。但沒有人會這樣讀它。數字一旦出現在畫面上,它就變成了對人的評價。
更麻煩的是分數會被拿去比較。與會者會互相問「你幾分」,然後你就得解釋為什麼同一個人在不同人的名單裡分數不同(因為是單向的),而這個解釋會花掉你整場活動的時間。
所以輸出只有理由:
陳○○ | 某消費性電子品牌 | 產品負責人 ✓ 領域重疊:智慧硬體 ✓ 地域重疊:台北 林○○ | 某工業自動化系統商 | 業務總監 ✓ 領域重疊:智慧硬體、工業物聯網 ✓ 規模級距相符 黃○○ | 某供應鏈軟體團隊 | 共同創辦人 ✓ 領域重疊:工業物聯網
排序仍然存在——第一筆就是排最前面的那一筆。但你看到的是它為什麼在前面,而不是一個可以拿去比大小的數字。
這個差別在實務上很具體:有人跟你說「這個推薦不對」,你們可以一起看那三行理由,指出哪一條寫錯了,然後去改資料。分數做不到這件事——分數只能被接受或被質疑,不能被修正。
分數確實在內部存在(它決定順序)。我們的選擇是不把它端出去。如果你的場景需要分數(例如要跟贊助方交代一個量化指標),這是設定層的決定,不是重寫系統——但我們會先勸你不要。
權重誰決定?
主辦方決定,但目前是在導入階段一起設定的,不是後台自助調整。
講清楚現況:維度與詞彙表是設定驅動的——維度定義、詞彙表、表單欄位對應各自有自己的設定檔,換一個場景就換一組設定,不動流程程式碼。但「主辦方自己在後台拉滑桿改權重」這個介面目前沒有實作。導入時我們一起把權重定下來,之後要調整由我們改設定。
這不是理想狀態,但我們不會把還沒做的東西畫在頁面上。
這裡刻意不寫具體數字。第一次導入時用你們的實際名單試,比看數字有用。(討論用,不是產品內建的預設值)
| 場景 | sector | stage | budget | geo | 為什麼這樣起手 |
|---|---|---|---|---|---|
| 展會買賣家媒合 | 高 | 低 | 中 | 中 | 買什麼賣什麼最重要;階段幾乎不影響 |
| 投資對接 | 高 | 高 | 高 | 低 | 階段與規模不對就見不成面,地域可遠距 |
| 加速器 mentor 配對 | 高 | 中 | 低 | 中 | 領域對口為主;金額不是變數 |
| 產學媒合 | 高 | 低 | 低 | 高 | 地緣關係在產學合作裡權重很高 |
這張表是導入討論的起點,不是產品出廠設定。每一場活動的目的不同,第一次一定要一起調。調權重的效果是可以馬上看的:改完重跑,同一批人的排序立刻不同,兩份名單並排就知道改對沒有。
冷啟動怎麼辦?
先說結論:資料少的時候,它會誠實地排不出強弱,而不是製造假的區別。
具體行為有三條:
一、缺資料不淘汰,只扣分。 報名表沒填完的人不會從名單裡消失,他只是在那個維度拿不到分。半份資料仍然參與排序——因為在真實活動裡,「報名表沒填完」跟「這個人不重要」完全是兩件事。
二、表外的值不參與比對。 自由填寫的欄位填了詞彙表沒有的值,那個值就是不比對,不會被硬塞進最相近的分類。寧可少一條理由,不要一條錯的理由。
三、整批資料都稀疏時,排序會趨近平手。 這時候接手的是確定性的平手規則(先比領域重疊數、再比姓名)。畫面上會出現一整批理由少不代表這個人不好,代表你們對他的資料還很少。、甚至沒有理由的人——那個畫面是正確的,它在告訴你「資料還不夠,先去補表單」,而不是告訴你這些人配不上。
目前的資料量還排不出明顯的順序。建議先確認報名表的必填欄位。
我們沒有做「資料不足時改用別的推薦策略」這種降級。那會讓兩種模式的輸出混在一起,而使用者分不出來哪一筆是哪一種算法排的——那比排不出來更糟。
會不會每次都推薦同一批人?
會。而且是必然會——因為這是純函式:同樣的輸入,永遠是同樣的輸出。
目前沒有實作曝光平衡或輪替機制。 這是實話,不是保留。系統裡沒有任何「這個人已經被推薦太多次了,往後排一點」的邏輯。
所以在現階段,讓名單變動的只有三件事:
| 讓名單變的東西 | 怎麼變 |
|---|---|
| 資料變了 | 有人補完報名表、有人改了領域標籤 → 重新同步後排序就會不同 |
| 權重變了 | 主辦方調整維度權重 → 整批重排 |
| 人變了 | 新報名者進來 → 進入排序池 |
如果你的場景需要曝光平衡(例如一個要確保每位參展商都被看見的展會),那是要另外做的功能,不是設定可以打開的開關。我們寧可在這裡講清楚,也不想讓你在活動當天才發現。
補充一個相反的觀點:確定性本身在某些場景是優點。同一份名單今天看跟明天看是一樣的,與會者不會覺得「我昨天看到的那個人怎麼不見了」,主辦方也可以重放任何一次排序來查問題。是不是缺點,取決於你的活動。
這套現在能用嗎?
誠實的答案是:還不能,而且我們知道還差什麼。
目前狀態
| 項目 | 狀態 |
|---|---|
| 排序引擎本體 | 程式碼完整,純函式,有單元測試與整合測試 |
| 表單資料同步 | 完整(映射由設定檔驅動,欄位有 ground truth 檔鎖住以偵測漂移) |
已知限制(逐條列,不包裝)
一、沒有經過真實活動的實戰驗證。 我們不會說「已在大型活動驗證」——那是還沒發生的事。程式跑得起來、測試會過,跟兩百個人同時在會場上用,是兩件事。
二、主辦方自助調權重的介面沒有做。 見第 4 題。
三、沒有曝光平衡。 見第 6 題。
四、維度是四個,而且是為特定場景定義的。 換一個場景要重新定義維度與詞彙表。這件事不難,但它是一次導入工作,不是「填個設定就好」。
這一頁到這裡為止沒有出現過一句「業界領先」「智慧配對」「精準媒合」。這是刻意的。這套東西的價值就是它可以被完整地檢視——包括檢視它還沒做完的部分。
那下一步是什麼?
如果你手上有一份真實的報名名單(不用給我們真名,欄位結構就好),我們可以跟你一起做兩件事:
一、把你的場景翻譯成維度。 你這場活動裡,什麼叫「配得上」?這一題比程式碼難,而且只有你答得出來。
二、用你的欄位跑一次排序,把理由印出來看。 對不對,你看第一眼就知道。