Instructions to use mahiyama/Sazanami-Embed-310m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use mahiyama/Sazanami-Embed-310m with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("mahiyama/Sazanami-Embed-310m") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
Sazanami-Embed-310m
sbintuitions/modernbert-ja-310m を初期値に学習した、日本語の単一ベクトル検索モデル (Bi-Encoder) です。質問と文書をそれぞれ 768 次元のベクトル 1 本に変換し、コサイン類似度で比較します。最大 8,192 トークンまで読めます。
このモデルは、同じ初期値・学習データ・損失で作った Late Interaction モデル Sazanami-ColBERT-310m と対になっています。違うのは「文書を何本のベクトルで表すか」だけなので、多ベクトルと単一ベクトルの差を、ほかの条件を動かさずに比べられます。
1. モデルの概要
| 項目 | 内容 |
|---|---|
| ベースモデル | sbintuitions/modernbert-ja-310m |
| アーキテクチャ | Transformer → 平均プーリング (接頭辞のトークンを含む) |
| パラメータ数 | 約 315M |
| ベクトルの次元 | 768 |
| 文書あたりのベクトル本数 | 1 本 |
| 最大入力長 | 8,192 トークン (モデルに保存された既定値。学習は 512 トークンで実施) |
| スコア関数 | コサイン類似度 |
| 接頭辞 | 質問に 検索クエリ: 、文書に 検索文書: |
| トークナイザ | SentencePiece (ModernBERT-Ja の語彙をそのまま使用) |
| 主要フレームワーク | sentence-transformers (SentenceTransformer) |
| 学習時の混合精度 | bf16 |
関連モデル
4 モデルはすべて sbintuitions/modernbert-ja-310m を初期値に、同じ学習データで学習しています。違うのは、文書 1 件を何本のベクトルで表すかです。本モデルは単一ベクトルで、多ベクトルの 3 モデルと比べるために同じ条件で学習しました。
| モデル | 文書あたりのベクトル | 選ぶ目安 |
|---|---|---|
| Sazanami-ColBERT-310m | 本文の有効トークン数と同数 | 長い文書を多数の候補から探す用途で最も精度が高い |
| Sazanami-AGC-310m | 最大 32 本 | データ量を抑えたいとき |
| Sazanami-MetaEmbed-310m | 最大 64 本 (使う本数を減らせる) | 類似度計算を速くしたいとき |
| Sazanami-Embed-310m (本モデル) | 1 本 (768 次元) | データ量と計算量を最小にしたいとき |
2. 使い方
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("mahiyama/Sazanami-Embed-310m")
queries = [
"住民票はどこで取れますか",
"国民健康保険の加入手続きを知りたい",
]
documents = [
"住民票の写しは、市区町村の窓口またはコンビニ交付サービスで取得できます。",
"国民健康保険の加入手続きは、転入や退職から 14 日以内に市区町村の窓口で行ってください。",
"粗大ごみの収集は、事前の申し込みが必要です。",
]
# 接頭辞はモデルに保存されているので、本文に自分で付けない
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
# 保存された設定によりコサイン類似度で採点される
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
3. トレーニング方法
ベースモデル
sbintuitions/modernbert-ja-310m を初期値にしています。穴埋めの事前学習だけを済ませたモデルで、検索向けの学習は入っていません。この Transformer に平均プーリングを足しただけの構成で、追加の射影層はありません。
学習データ
質問 1 件に正例 1 件と負例 5 件を並べた n-tuples と、正例だけを並べた pairs の 2 種類を使いました。
| 出典 | 形式 | 件数 |
|---|---|---|
| mahiyama/auto-wiki-qa | n-tuples | 100,000 |
| mahiyama/mqa-ja | n-tuples | 100,000 |
| mahiyama/mmarco-ja | n-tuples | 50,000 |
| mahiyama/civicqa-ja (非公開) | n-tuples | 43,382 |
| mahiyama/quiz-no-mori | n-tuples | 13,422 |
| mahiyama/quiz-works | n-tuples | 12,502 |
| mahiyama/amagasaki-qna | n-tuples | 11,069 |
| mahiyama/miracl-retrieval | n-tuples | 4,603 |
| mahiyama/mrtydi | n-tuples | 3,602 |
| mahiyama/anlp-meeting-retrieval (title-abs) | n-tuples | 1,926 |
| mahiyama/anlp-meeting-retrieval (title-intro) | n-tuples | 1,952 |
| mahiyama/civicqa-ja (非公開) | pairs | 28,653 |
| mahiyama/amagasaki-qna | pairs | 7,323 |
| mahiyama/kosodate-faq-pairs-ja | pairs | 595 |
| 合計 | 379,029 |
mahiyama/civicqa-ja は、日本の国の機関と自治体が公開している FAQ から収集した質問と回答です。現在は非公開です。
評価に使うデータは学習から外しています。JaGovFaqs-22k は学習に一切使っていません。NFKC 正規化して空白を除いた質問が JaGovFaqs-22k の評価分割の質問と一致する行、または同じ処理をした正例がその評価分割の文書と一致する行を、各段階で除外しています。
訓練方法
n-tuples には、対照損失と蒸留損失を足したものを使います。両方を 1 回のスコア計算から求めます。
- 対照損失 — バッチ内のすべての文書 (自分の候補 6 件と、同じバッチの他の行の文書) を選択肢とする交差エントロピー。コサイン類似度を 20 倍してから使います。
- 蒸留損失 — 自分の候補 6 件に対するコサイン類似度の確率分布と、教師スコアの確率分布の KL ダイバージェンス。教師の温度は 2.0 です。
pairs には、バッチ内の他の行の文書を負例とする対照損失を使います。
| 項目 | 値 |
|---|---|
| learning_rate | 2e-5 |
| num_train_epochs | 1 |
| per_device_train_batch_size | 64 |
| scale (コサイン類似度の倍率) | 20.0 |
| warmup_steps | 全体の 5% |
| weight_decay | 0.01 |
| 学習時の最大入力長 | 512 トークン |
| 保存した推論時の最大入力長 | 8,192 トークン |
| 混合精度 | bf16 |
| batch_sampler | NO_DUPLICATES |
| 勾配チェックポイント | 有効 |
| 教師の温度 | 2.0 |
| 乱数シード | 42 |
訓練時間は NVIDIA RTX PRO 6000 Blackwell Server Edition (96 GB) 1 枚で約 4 時間 27 分 (5,923 ステップ)、GPU メモリの最大使用量は 22.1 GB でした。
4. ライセンスと学習データの制約
本モデルの重みは MIT License で提供します。ベースモデルの sbintuitions/modernbert-ja-310m も MIT License です。
学習データに MS MARCO の日本語訳 (mahiyama/mmarco-ja) を含みます。MS MARCO は非商用の研究目的での利用を前提に公開されており、商用利用のライセンスは明確ではありません。本モデルを商用で利用する場合は、利用者ご自身の責任で MS MARCO の利用規約を確認してください。
学習データの一部に、日本の国の機関と自治体が公開している FAQ から収集した質問と回答を含みます。各出典の利用条件に従うデータで、本モデルのリポジトリでは再配布していません。本モデルを利用する場合は、利用者ご自身の責任で用途を判断してください。
- Downloads last month
- 50
Model tree for mahiyama/Sazanami-Embed-310m
Base model
sbintuitions/modernbert-ja-310m