genshiai-daichi/med-ruri-v3-310m
0115
med-ruri-v3-310m
日本語の医療ドメインに特化した文埋め込み (sentence embedding) モデル。 `cl-nagoya/ruri-v3-310m` (ModernBERT-Ja, 768次元, 8192 context) をベースに、医療ドメインの検索タスクで fine-tune しています。
in-domain 医療検索 nDCG@10: 0.305 (base) → 0.434 (+42%)
Ruri prefix (重要)
Ruri 系と同じく 1+3 prefix を付けて使います (付けないと精度が落ちます)。
- クエリ:
検索クエリ: - 文書:
検索文書:
prefix はモデル設定に登録済みなので prompt_name で自動付与できます。
使い方
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("genshiai-daichi/med-ruri-v3-310m")
queries = ["バンコマイシンのトラフ目標値は?"]
docs = ["MRSA 感染症における Vancomycin の TDM では ..."]
q = model.encode(queries, prompt_name="query", normalize_embeddings=True)
d = model.encode(docs, prompt_name="document", normalize_embeddings=True)
scores = q @ d.T # cosine similarity評価 (in-domain retrieval, held-out 2,000 queries)
用途
- 日本語の医療文書 (診療ガイドライン等) に対する 意味検索 / retrieval
- 医療 RAG の retriever (質問 → 関連 passage の検索)
- 文書間の意味的類似度・クラスタリング
制限事項
- 日本語の医療ドメイン特化。一般ドメインや他言語は base モデルの素の性能に近づきます
- 上記 nDCG は held-out の合成クエリでの in-domain 評価であり、実運用性能は別途検証を推奨
- 推論時は prefix 必須 (
検索クエリ:/検索文書:)
学習経過 (training progression)
fine-tune 中の held-out 検索性能 (500 step ごとに評価):
学習 loss (MultipleNegativesRankingLoss)
学習設定
- base: `cl-nagoya/ruri-v3-310m`
- loss: MultipleNegativesRankingLoss (scale=50, temperature=0.02)
- 1 epoch (5880 steps), best = step 3500 (0.60 epoch 相当)
- batch 192 / max_seq 768 / lr 3e-5 / bf16 + gradient checkpointing
- query/passage に Ruri prefix を付与して contrastive 学習
チェックポイント
学習途中の checkpoint は step-N ブランチに保存されています (SentenceTransformer("genshiai-daichi/med-ruri-v3-310m", revision="step-3500"))。 main は nDCG@10 が最良の checkpoint (step 3500) です。
