ホーム/モデル/med-ruri v3
Sentence Similarity · 70M–310M

med-ruri v3

日本語の医療文書を意味で検索するための埋め込みモデル。質問文と文書を同じ空間のベクトルに変換し、近いものを引きます。院内のRAGや、Before/Afterデータセットを作るときの検索基盤に使っている、いわば土台の部品です。

Apache-2.0 ModernBERT-Ja ベース 70M / 130M / 310M nDCG@10 0.53
0.53
社内ベンチのnDCG@10(v1は0.42)
+0.11
v1からの改善幅(+0.1104)
7
公開している系統(サイズ×学習元)
310M
最大サイズ。70Mの軽量版も
What

これは何か

ふつうのキーワード検索は、文字が一致しないと引けません。医療の文書では、同じことを違う言葉で書くことが多い。「抗凝固」と「血をサラサラにする薬」のような差を、意味の近さで拾いたい。そのための道具が埋め込みモデルです。土台にはModernBERT-Jaを使い、そこに医療のテキストを足して、専門用語やガイドライン特有の言い回しに寄せました。

このモデル単体では派手さはありません。ただ、上に載る検索の質は、ほぼこの部品の質で決まります。だからいちばん手をかけています。

Metric

学習とともに上がった精度

社内ベンチマークの nDCG@10
上位10件にどれだけ正解が入るか。高いほど良い。
0.45 0.50 v1 ベースライン 0.4244 0.5348

学習の途中経過は metrics_progress.json に全ステップぶん残していて、特定ステップのチェックポイントも revision から取り出せます。数字は社内ベンチでの相対比較であり、他モデルとの横並びの絶対評価ではありません。

Recipe

v2でやったこと

v2は、実運用でつまずいた点を1つずつ潰した版です。

  • 表記のゆれを揃える。PDFから抜いた文書には崩れた文字が混じるので、NFKCで正規化してトークナイザのゴミを消しました。
  • 版に依存しない検索にする。ガイドラインは改訂のたびに年号が変わります。見出しから年号を落とし、古い版でも新しい版でも同じ質問で引けるようにしました。
  • 新しさだけで選ばせない。古い版のテキストをわざと「引っかけの不正解」として混ぜ、10倍の重みで学習。新しい文書ばかり上位に来る偏りを抑えます。
  • 数値を安定させる。重みはFP32で持ち、行列積だけTF32で回しました。
Usage

使い方(接頭辞に注意)

1つだけ約束事があります。クエリには 「検索クエリ: 」、文書には 「検索文書: 」 を必ず付けてください。これを外すと、精度がはっきり落ちます。

from sentence_transformers import SentenceTransformer m = SentenceTransformer("genshiai-daichi/med-ruri-v3-310m-v2-from-med") q = m.encode("検索クエリ: 心房細動の抗凝固はいつ始める?") d = m.encode("検索文書: 弁膜症を伴わない心房細動では…") # cos類似度で近い文書を引く
Variants

公開している系統

サイズは70Mから310Mまで。それぞれに、医療版から続けて学習したもの(from-med)と、素のRuriから学習したもの(from-ruri)を用意しました。速さ優先なら70M、精度優先なら310Mを選べます。

モデルサイズ学習元DL/月
med-ruri-v3-310m-v2-from-med310Mfrom-med678
med-ruri-v3-310m-v2-from-ruri310Mfrom-ruri130
med-ruri-v3-130m-v2-from-ruri130Mfrom-ruri
med-ruri-v3-70m-v2-from-med70Mfrom-med105
med-ruri-v3-70m-v2-from-ruri70Mfrom-ruri92
med-ruri-v3-310m (v1)310Mv1145
med-ruri-v3-70m (v1)70Mv1110
Related

関連

← モデルとデータセットの一覧に戻る