A Day in the Life

Qwen3 Embedding 文章ベクトルの日本語性能を JMTEB で測る

オープンウェイトな高性能マルチリンガル embedding, reranker モデル、Qwen3 Embedding シリーズがリリースされましたね。モデルサイズも 8B, 4B, 0.6B とあり文章ベクトルの作成・リランキングで高性能で、Multilingual MTEB leaderboardではトップの性能となっています。

ただ、マルチリンガルモデルはあまり日本語が重視されない傾向にあるので、JMTEB: Japanese Massive Text Embedding Benchmarkで Qwen3-Embedding-0.6B の性能を計測してみました。なお、jsick, jsts がエラーになったため、STSタスクは除いてあります。

JMTEB 計測結果

Model Retrieval STS Classification Reranking Clustering PairClassification
Qwen3-Embedding-0.6B 72.81 -- 66.09 93.10 48.84 62.42
ruri-v3-310m 81.89 81.22 78.66 93.43 55.69 62.60
ruri-v3-130m 81.89 79.25 77.16 93.31 55.36 62.26
ruri-v3-70m 79.96 79.82 76.97 93.27 52.70 61.75
PLaMo-Embedding-1B 79.94 83.14 77.20 93.57 53.47 62.37
ruri-v3-30m 78.08 82.48 74.80 93.00 52.12 62.40
sbintuitions/sarashina-embedding-v1-1b 77.61 82.71 78.37 93.74 53.86 62.00
jinaai/jina-embeddings-v3 75.22 80.05 76.39 92.71 51.46 62.37
OpenAI/text-embedding-3-large 74.48 82.52 77.58 93.58 53.32 62.35
pkshatech/GLuCoSE-base-ja-v2 73.36 82.96 74.21 93.01 48.65 62.37
pkshatech/RoSEtta-base-ja 73.21 81.39 72.41 92.69 53.23 61.74
intfloat/multilingual-e5-large 70.98 79.70 72.89 92.96 51.24 62.15
OpenAI/text-embedding-3-small 66.39 79.46 73.06 92.92 51.06 62.27

結果はこちらです。日本語のタスクがあまり学習されていないからなのか、日本語の結果は振るわない結果でした。ruri-v3 シリーズはモデルサイズも小さく、かつ日本語では圧倒的に高性能ですね。

なお Retrieval, Reranking タスクでは、Query の prefix に Instruct: Given a web search query, retrieve relevant passages that answer the query\nQuery: を追加しています。

また計測に使った、JMTEB用の設定(jsonnet)や結果の summary.json、実行コマンドは以下においてあります。Qwen3-Embedding-0.6B の性能が低すぎる気もするので、何か間違っていたら教えてください。

おまけ: Qwen3 Embedding 論文を読む

Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Modelsが公開されたのでざっくり読んでみました。とりわけ合成データセット作成あたりが個人的に面白かったです。

以下は私の興味範囲のメモ書きです。

  • LLM2Vec のような decoder → encoder ではなく、casual attention をそのまま利用
  • Embedding モデルは最終層の[EOS] トークンの hidden state から最終埋め込みを取得
    • Query は Instruction + Query で作成。Doc はそのまま。
    • InfoNCE を改良したスコア(単純な対照学習ではなく、ハードネガティブを複数含めたり、類似度のポジネガを調整した偽陰性の調整など)
  • Reranking は chat template をそのまま使って、"yes", "no" トークンの確率で、関連性スコアとして計算
    • decoder model のラベル分類の解き方(該当ラベルトークンの確率を見る)のアプローチをママ適用
    • SFT で学習できる
  • 1st stage で Qwen3-32B で作った合成データセットをもとに学習
    • 情報検索, 対訳マイニング(Bitext Mining), 意味的類似性, 分類 の4つのタイプを作成
    • 情報検索の合成データセットの場合、詳細な設定を作り、それをもとにQwen3の事前訓練コーパスの文章からクエリを生成
  • 2nd stage で 700万の既存データセット(MS Marco, MIRACLなどなど)と、1st stage のコサイン類似度でフィルタリングした1200万件のデータをもとに学習
  • 最後に多様性考慮のモデルマージ
    • 詳細は記されてないので推察だが、2nd stage の複数のチェックポイントは、タスク特化学習させたもの、特定言語にフォーカスして学習させたもの、などが考えられそう
    • モデルマージは適当にマージして、ベンチマーク走らせると結果が向上することを、少ないコンピューティングリソースで観測できるので、たくさんチェックポイントがあるならいろいろ試した方が良さそう。
記事の一覧 >

関連するかもエントリー

OpenAIの新embeddings,text-embedding-3-smallをRAGタスクで評価する
先日、OpenAI から新しい embeddings モデルである、text-embedding-3-smallとtext-embedding-3-largeが公開された。text-embedding-3-smallは、古いembeddingsモデルのada-v2よりも価格は1/...
先日、OpenAI から新しい embeddings モデルである、text-embedding-3-smallとtext-embeddin...
SPLADE モデルの作り方・日本語SPLADEテクニカルレポート
近年、大規模言語モデル(LLM)の台頭により、情報検索の重要性が増している。特に、Retrieval-Augmented Generation(RAG)などの応用分野では、効率的で高精度な検索システムが求められている。ニューラルネットワークを用いた検索モデルの分野では、密ベクトル...
近年、大規模言語モデル(LLM)の台頭により、情報検索の重要性が増している。特に、Retrieval-Augmented Generatio...
情報検索のための質問文作成モデル query-crafter-japanese を公開
情報検索で利用する、ベクトル検索・リランカーなどのニューラルネットワークモデルの学習には、質問文と回答文がペアで必要です。回答文章はなんでも良い(もちろん質が高い文章や、独自ドメインのデータなどが高品質なモデル作成につながるのですが)のですが、学習にはその回答に関連がある質問文が...
情報検索で利用する、ベクトル検索・リランカーなどのニューラルネットワークモデルの学習には、質問文と回答文がペアで必要です。回答文章はなんでも...