跳至主要內容
WeeMed Logo

致力運用創新科技為醫療機構打造智慧化資訊系統,提升醫療服務品質

瑋易科技股份有限公司

統一編號:00085209

關注我們:

快速導覽

  • 關於我們
  • 我們在建什麼
  • 解決方案
  • EAP 服務市集
  • 服務項目
  • 技術優勢
  • 最新消息
  • 人才招募
  • 聯絡我們

相關資訊

隱私權政策服務條款資訊安全政策ESG 永續發展

聯絡資訊

客服專線
04-23016388
客服信箱
service@weemed.ai
公司地址
台中市西區台灣大道二段 186 號 20 樓之 1
© 2024-2026 瑋易科技股份有限公司。保留所有權利。
ESG 永續發展隱私權政策服務條款資訊安全政策
WeemedAI Logo
首頁
關於我們
產品方案
我們在建什麼
服務項目
聯絡我們

開源釋出 · Apache-2.0

為了讀懂一句台灣的病歷,我們自己養了一顆模型

護理師講「皮蛇」,指的是帶狀皰疹。健檢名冊上的「L-CT」是低劑量肺部電腦斷層,不是頭部。健檢單上的「鈣化」問的是冠狀動脈鈣化分數。「傷寒」通常是說糞便檢體還沒交回來,不是那個病。這些字每天出現在台灣的紀錄裡,而我們試過的通用模型幾乎都讀不出來。所以我們自己訓練了一個,取名 IlhaEmbed,然後用 Apache-2.0 放上 Hugging Face。它 38.5 MB,用 CPU 就能跑,推論的時候不連網——護理站那台舊電腦跑得動。

權重和完整的 model card(評測方法、限制、引用格式)在這裡:huggingface.co/weemed/IlhaEmbed

為什麼要做這件事

現場的字,不在任何公開語料裡

八年來我們在健檢中心、企業職場和社區站做同一件事:把別人手上的檔案,變成一筆可以用的健康紀錄。那些檔案長什麼樣子?一格裡寫「定期心內門診-戒菸」,其實是兩件事:心臟科還在追蹤,加上戒菸。「成健」是成人預防保健。「檳榔」在社會史那一欄,跟菸、酒同一級。

這些不是錯字,是台灣醫療現場真正在用的寫法。它們大量出現在每天產生的紀錄裡,卻幾乎不存在於公開的訓練資料裡。所以拿現成的模型來讀,讀不出來。

皮蛇
帶狀皰疹
L-CT
低劑量胸部電腦斷層
鈣化
冠狀動脈鈣化分數(健檢開單時)
傷寒
傷寒篩檢的糞便檢體還沒收回
成健
成人預防保健服務
斷腦筋
中風(台語)
定期心內門診-戒菸
心臟內科持續追蹤 + 戒菸
檳榔
嚼食檳榔(社會史,與菸酒同級)

讀不出來的話,就只能讓人一格一格自己判斷。而人一格一格搬的時候,搬錯了不會有人發現——錯的那一格會安靜地變成病歷。

為什麼不用現成的

我們先試過現成的。三件事都過不了

自己訓練模型很花時間,不是我們的第一選擇。我們先拿市面上表現最好的中文嵌入模型來測,測完發現三件事都不行,才決定自己養。

一、讀不出來

同一份題目、同一個檢索池、同一套算分方式:通用中文模型是 0.11 到 0.21,我們的是 0.856。「皮蛇→帶狀皰疹」這種題目,通用模型 0.00 到 0.05,等於完全沒讀到。

二、進不了醫院

中文領域表現好的開源模型大多來自中國。台灣的公立醫院受關鍵基礎設施的資安規範,採購時看模型來源,而且沒有中間值:過或不過。我們的底座用 IBM Granite ModernBERT(Apache-2.0,美國來源),就是為了讓來源攤開來給人檢查。

三、跑不動

另一個候選在我們的測試裡吃掉將近 8 GB 記憶體。跑不動的替代方案是把病歷送上雲端,這條路我們不走。條件只有一個:地端、CPU、不連網。最後做出來的模型 38.5 MB,384 維,量化到 int8。

同一份題目的正確率(訓練時已保留,自我匹配排除)

題型IlhaEmbedjina-v2-base-zhckip-basebge-small-zh
俚語(皮蛇→帶狀皰疹)0.8550.050.000.00
縮寫(L-CT→低劑量胸部電腦斷層)0.8170.140.010.00
同位語(傷寒→傷寒篩檢糞便檢體)0.8950.450.360.33
總分0.8560.210.130.11
台語(斷腦筋→中風)0.9430.640.560.50

IlhaEmbed 這一欄是 fp32 的數字。實際放出去的 int8 版本總分 0.815、台語 0.929。評測腳本跟著 model card 一起公開,可以自己跑一次。

主權 AI 這件事

一句話從說出口到變成紀錄,全程不必離開這座島

一句台語的話要變成一筆能被稽核的紀錄,中間要經過三段:聽懂它、把用字對回標準概念、存進國家的資料標準。台灣現在三段都有人做了,中間那段是我們補的。

  1. Breeze-ASR-26

    聽 — 聯發科研究院的語音模型,聽得懂台語和台灣口音

  2. IlhaEmbed

    懂 — 這一頁的模型,把現場的寫法對回標準概念

  3. TW Core FHIR

    存 — 衛福部的健康資料標準,紀錄才能交換、能稽核

來源攤開來給人看

底座是 IBM Granite ModernBERT(Apache-2.0,美國來源),整條路上沒有任何中國來源的元件。對受關鍵基礎設施規範的機構,這決定了能不能用。

資料不出院

38.5 MB、int8、只用 CPU。不需要 GPU,不需要 API key,推論的時候不連網。病人資料不必離開機構的機房。

可以拿去賣

權重是 Apache-2.0,底座也是。任何人——包括做同一件事的公司——都可以下載、修改、裝進自己的產品,不用問我們。

接上標準,不另立一套

我們的做法是接衛福部的 TW Core FHIR。標準是公共財,接得上才有用。

就我們所知,這是第一個公開釋出的台灣臨床語意模型。希望它不是最後一個。

連失敗一起公開

最有用的發現,是一條走不通的路

要讓模型認得某一家機構自己的縮寫,直覺上就是拿那些字去微調。我們測完的結論是:這條路走不通,而且原因可以算出來。

把小模型量化到 int8,每個向量都會被擾動固定的量,我們量到的是 0.44。而要在一堆機構縮寫裡挑對,第一名和第二名的差距中位數只有 0.14。也就是說,模型是在自己的誤差裡面做選擇。把縮寫微調進權重,只會讓那個差距更小,誤差卻沒有變小——所以越調越差。我們試了 18 種組合(逐張量和逐通道的 int8、fp16、混合精度、權重內插、QAT、加了量化限制的 LoRA…),在可以部署的體積下沒有一種追得上全精度。

有用的做法是換個地方放這些知識:模型完全凍結,機構的詞彙表放在模型外面一份幾 KB 的對照表,進來的字先過一道門。夠像已知的字,就換成它的標準概念;不夠像,就原封不動走原本的路。所以加了這份對照表,原本會的題目不可能變錯。

我們把這件事記成一句話:量化之前,先量你的判斷餘裕有沒有大過量化的誤差。如果沒有,在權重上動手都救不了。這句話和所有走不通的嘗試,都寫在公開的研究紀錄裡。

同一個放出去的 int8 模型,加上對照表前後(110 個真實的機構縮寫)

只有模型加上對照表
機構縮寫(110 個)83/110110/110
沒放進對照表的變體—20/22
一般臨床題目的總分0.8150.815(沒變)
體積38.5 MB38.5 MB + 幾 KB
  • 0.82 到 0.86 這個水準是「先給建議、由人確認」,不是自動編碼。這顆模型的工作是讓人不用重打一遍,不是替人判斷。
  • 查表查出來的字,脫離語境就是編造。「鈣化」在健檢開單上是冠狀動脈鈣化分數,在影像報告裡是組織鈣化。那道門只回答「這是哪一個已知的寫法」,不回答「這個解讀在這裡對不對」。
  • 真正卡住的是資料,不是方法。我們整理好的台灣臨床口語配對大約 1,600 組,參考模型是 11.9 萬組。方法已經驗證過了,把資料做厚是還沒做完的功課。

它不是 demo

現在就跑在客戶自己的電腦上

IlhaEmbed 已經取代我們原本用的通用模型,包進系統的映像檔,在客戶自己的環境裡判斷匯入的檔案「這一欄到底在寫什麼」。

順序是刻意排的:先讓確定性的程式解掉絕大多數欄位,剩下的才交給模型,而且整批一次問完,不是每一欄問一次。真的判斷不出來的那幾欄才會拿去問人。人確認過一次之後就記住,同樣格式的檔案下一次連模型都不用問。

0.856

臨床語意總分,同一份題目通用中文模型最好 0.21

38.5 MB

int8 ONNX,384 維,CPU 就能跑

110/110

加上對照表後認出的機構縮寫

Apache-2.0

權重、方法、評測腳本、研究紀錄都公開

為了讀懂一句台灣的病歷,我們自己養了一顆模型。

拿去用吧。

記者、研究者、同業都可以直接拿:權重、完整的 model card、可以自己跑一次的評測腳本,還有包含失敗紀錄的研究日誌。訓練用的原始配對含第三方著作權,不隨權重釋出;我們放出去的是訓練完成的權重和方法。

前往 Hugging Face model card媒體與合作聯繫
  • 這顆模型在產品裡負責哪一步:Intake AI
  • 另一段是聲音:台語語音辨識
  • 我們釋出了什麼、為什麼開源

引用格式

IlhaEmbed: An Open Embedding Model for Taiwanese Clinical Text. WeeMed AI, 2026. https://huggingface.co/weemed/IlhaEmbed