language:
- ja
license_name: sarahina-non-commercial-license
license_link: LICENSE
base_model:
- sbintuitions/sarashina2.2-1b
tags:
- transformers
- sentence-similarity
- feature-extraction
- sentence-transformers
inference: false
Sarashina-Embedding-v2-1B
「Sarashina-Embedding-v2-1b」は、日本語LLM「Sarashina2.2-1B」をベースにした日本語テキスト埋め込みモデルです。
このモデルは、マルチステージの対照学習で訓練され、 JMTEB (Japanese Massive Text Embedding Benchmark)の28個のデータセットの平均で、最高水準の平均スコア(2025/07/28時点)を達成しました。
このモデルは、文や文章を1792次元の高密度ベクトル空間にマッピングし、意味的テキスト類似度、意味的検索、paraphrase mining、テキスト分類、クラスタリングなどに使用できます。
モデル詳細
モデル説明
- モデルタイプ: Sentence Transformer
- ベースモデル: Sarashina2.2-1B
- 最大シーケンス長: 8,192トークン
- 出力次元数: 1,792次元
- 類似度関数: コサイン類似度
- 言語: 日本語
- ライセンス: Sarashina Model NonCommercial License Agreement
モデルアーキテクチャ
SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: LlamaModel
(1): Pooling({'word_embedding_dimension': 1792, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': True, 'include_prompt': False})
)
使用方法
まず、Sentence Transformersライブラリをインストールします。
pip install sentence-transformers==4.0.2
次に、このモデルをロードし、推論を実行します。
from sentence_transformers import SentenceTransformer
# 🤗 Hubからモデルをダウンロードする
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sbintuitions/sarashina-embedding-v2-1b")
# 推論を実行する
query = [
'task: クエリを与えるので、与えられたWeb検索クエリに答える関連文章を検索してください。\nquery: Sarashinaのテキスト埋め込みモデルはありますか?'
]
texts = [
'text: 更級日記は、平安時代中期に菅原孝標女によって書かれた回想録です。',
'text: Sarashinaは、SB Intuitionsが開発した日本語大規模言語モデルです。これまでに7B, 13B, 70B, 8x70Bのモデルが公開されています。',
'text: サラシナエンベディングは日本語言語モデルをベースにした日本語埋め込みモデルです。'
]
query_embedding = model.encode(query)
text_embeddings = model.encode(texts)
# 埋め込みの類似度スコアを取得する
similarities = model.similarity(query_embedding, text_embeddings)
print(similarities)
# tensor([[0.7403, 0.8651, 0.8775]])
instrcution, prefixの付け方
クエリ側とドキュメント側で形式の異なるprefixをつけ、クエリ側にはtask:
というprefixの後に指示を付与します。(*ただしSTSタスクのみ両方のテキストをクエリとみなし同じ形式のinstrcutionとprefixを使用します)
- クエリ側:
task: {インストラクション}\nquery: {クエリ}
- ドキュメント側:
text: {ドキュメント}
instrcution, prefixのテンプレート
テキスト埋め込みモデルが用いられる5つの主なタスクで使用できるinstrcutionとprefixのテンプレートを下記の表に示します。
タスク | クエリ側 | ドキュメント側 |
---|---|---|
Retrieval Reranking |
task: 質問を与えるので、その質問に答えるのに役立つ関連文書を検索してください。\nquery: | text: |
Clustering | task: 与えられたドキュメントのトピックまたはテーマを特定してください。\nquery: | - |
Classification | task: 与えられたレビューを適切な評価カテゴリに分類してください。\nquery: | - |
STS | task: クエリを与えるので,もっともクエリに意味が似ている一節を探してください。\nquery: | task: クエリを与えるので,もっともクエリに意味が似ている一節を探してください。\nquery: |
学習
Sarashina-Embedding-v2-1Bは、以下の3段階の学習ステージによって学習されています。
Stage 1: 弱教師あり学習
幅広いドメインに対して汎用的かつ高い性能を持つ埋め込みモデルを構築するため、独自のwebクロールデータとオープンデータで構成された弱教師データによる対照学習を行いました。
Stage 2: ファインチューニング
より正確なクエリ-ドキュメント間の類似度をモデルに学習させるために、Stage 1で使用したデータよりも高品質なデータを用いてファインチューニングを行いました。 またデータの一部を変更して複数のモデルを学習しました。
Stage 3: モデルマージ
Stage 2においてJMTEBのスコアが最も高かった2つのモデルの重みを線形マージすることで性能向上を図りました。
JMTEBによる評価 (*)
Model | Avg. | Retrieval | STS | Classification | Reranking | Clustering |
---|---|---|---|---|---|---|
Sarashina-Embedding-v2-1B (This model) | 76.38 | 76.48 | 84.22 | 77.14 | 86.28 | 52.56 |
cl-nagoya/ruri-v3-310m | 75.85 | 76.03 | 81.59 | 77.65 | 85.84 | 50.52 |
sbintuitions/sarashina-embedding-v1-1b | 74.87 | 74.53 | 81.71 | 77.20 | 84.36 | 50.30 |
OpenAI/text-embedding-3-large | 73.86 | 71.95 | 82.52 | 77.27 | 83.06 | 51.82 |
(*) 評価日:2025.07.28
ライセンス
このモデルはSarashina Model NonCommercial License Agreementに基づいて公開されています。
もしこのモデルの商用利用にご興味がある場合は、お気軽にコンタクトページへご連絡ください。