正在把院內累積的病歷摘要、衛教文件接上一套讓護理師打字就能查資料的搜尋功能
先分清楚兩種搜尋AI的做法。一般的嵌入模型是把「整篇文章」壓縮成「一個向量(vector)一串代表文字意思的數字,兩段文字的向量越接近,代表意思越相似」,比對時只算一次「像不像」。這篇教學介紹的是另一種做法,叫「多向量」或 ColBERT 式模型:它不壓縮,而是幫文章「每一個字」都留一個小向量,比對時用一種叫MaxSim比對兩句話時,讓查詢句裡的每個字都去文件裡找「最像的那一個字」,再把所有配對分數加總,當作整體的相似分數的算法逐字精算。這樣做保留了單一向量會被迫「平均掉」的細節,通常搜得更準,代價是要存的資料(索引)變大很多。
為什麼要特地微調(finetune)拿一個已經訓練好的通用AI模型,用你自己領域的資料再訓練一次,讓它更懂你的專業術語和使用情境?因為不同領域的用字、提問方式、「什麼算相關」的標準都不一樣——網頁搜尋、法律文件、程式碼搜尋、醫療病歷,彼此的「行話」差很多,通用模型很難全部照顧到。這篇教學的作者實際示範:他微調出的醫療搜尋模型 mLateOn-medical,只用一張消費級顯卡 RTX 3090 訓練 14.5 小時,結果在醫療檢索測試中,贏過他找得到的所有現成模型,不管是壓縮成一個向量的、關鍵字比對的,還是同樣走多向量路線的,全部都輸給這個「量身訂做」的小模型。
整套教學用開源套件 sentence-transformers 就能重現,涵蓋「要用哪個模型當底、資料怎麼準備、用什麼損失函式訓練、怎麼評分、怎麼一步步跑訓練」的完整流程,不是紙上談兵。作者也另外寫了一篇「使用篇」,教訓練好之後怎麼把模型接進向量資料庫(vector database)專門儲存大量向量、並能快速找出「最相似」那幾筆的資料庫,是搜尋AI真正上線時要用到的儲存系統實際上線查詢。