splade-modernbert-ja-310m

ModernBERT-Ja-310M をベースにとして、日本語 SPLADE (Learned Sparse Retrieval) モデルとしてトレーニングした Learned Sparse Retrieval モデルです。

概要

項目 内容
ベースモデル ModernBERT-Ja-310M (315M params)
アーキテクチャ SPLADE
パラメータ数 約 315M
ベクトル次元 102,400
最大入力長 8,192 tokens
学習スクリプト sentence-transformers SparseEncoder 5.4+

評価結果 (尼崎市Q&Aデータセット)

metric value
dot_recall@1 0.3070
dot_recall@3 0.5215
dot_recall@5 0.6090
dot_recall@10 0.7639
dot_ndcg@10 0.6301
dot_mrr@10 0.6692
dot_map@100 0.5569
query_active_dims 51.4
corpus_active_dims 170.2
avg_flops 5.7

使い方

from sentence_transformers import SparseEncoder

model = SparseEncoder("mahiyama/splade-modernbert-ja-310m")

queries = [
    "母子手帳を受け取りたいのですが、手続きを教えてください。",
]
documents = [
    "Question: 母子手帳の受け取り方を教えてください。\nAnswer: 窓口で妊娠届をご記入いただき、母子手帳をお渡しします。住民票の世帯が別の方が代理で窓口に来られる場合は、委任状が必要になります。",
    "Question: 住民票の写しはどこで取得できますか?\nAnswer: 市民課窓口で取得できます。手数料がかかります。",
]

query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)

# どちらの documents の方がクエリに近いか
sim = model.similarity(query_embeddings, document_embeddings)
print(sim)  # tensor([[..., ...]])

# 疎ベクトルから語彙拡張結果を確認
for token, weight in model.decode(query_embeddings[0], top_k=10):
    print(f"  {token:>10}  {weight:.3f}")

語彙拡張サンプル

クエリ「母子手帳を受け取りたいのですが、手続きを教えてください。」に対する語彙拡張 (上位 20 トークン):

母子=2.407, 手続き=2.350, 手帳=2.341, たいのですが=1.481, 健康=1.479, 受け取り=1.464, わからない=1.396, 母=1.392, 手続=1.339, 質問=1.188, 受け取る=1.160, 、=1.110, したいのですが=1.053, を受け取り=1.047, 入会=1.034, 子ども=1.011, 手順=1.005, 母乳=0.994, 母親=0.947, 方法=0.875

短い具体的なクエリでは ~20-50 トークンで簡潔な拡張、抽象的な短語 ("情報検索" など) では数百トークン拡張、というメリハリのある挙動になります。

ライセンス

MIT

Downloads last month
109
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for mahiyama/splade-modernbert-ja-310m

Finetuned
(12)
this model
Finetunes
1 model
Quantizations
1 model

Dataset used to train mahiyama/splade-modernbert-ja-310m

Paper for mahiyama/splade-modernbert-ja-310m