社内文書の検索(RAG)は、問いに合う段落を探し、その結果を生成 AI に渡す仕組みです。探す段階には、文章を数値の列に変えて近さで探す埋め込み(embedding)モデルと、問いの単語を含む段落を探す BM25 を使えます。AIコンパスの記事から作った問いで試すと、同じ問いに両者が別の段落を1件目に出しました。正解だったのは、1問目が埋め込み、2問目が BM25 です(図1)。
同じ問いに、BM25 と埋め込みが別の段落を1件目に出した。正解だったのは、1問目は埋め込み、2問目は BM25
問い:課金すれば入力が学習されなくなるか
BM25の1件目不正解
使い方ごとの判断 公式や公的機関が、使い方ごとの違いを比べた文書は見つかりませんでした。次の表は編集部の整理です。 使い方、入力の送り先、編…
Qwen3-Embedding-8Bの1件目正解
入力の学習は有料版でも変わらない ここは誤解されやすい点です。Plus や Pro に変えるだけでは、入力の扱いは変わりません。 料金ページ…
問い:切り抜きの評価で人物の公開テスト写真を使わなかった訳
BM25の1件目正解
学習に使われた写真との重なり:BiRefNet の汎用の学習データ(README の表)に、人物の公開テスト用の写真 P3M-500 が入っ…
Qwen3-Embedding-8Bの1件目不正解
比較の方法:正解との差は、透明度(0〜1)の差の絶対値を写真全体で平均し、100倍した値です。大きく失敗した写真は、正解と切り抜きの透明度を…
編集部では、無料で使える日本語向けの埋め込みモデル16個と BM25、検索結果を並べ替える reranker 6個を測りました。reranker は、BM25 や埋め込みで集めた候補を、問いとの相性で並べ替えるモデルです。データは、公開されている6つと、AIコンパスの記事から作った自作データの1つです。比べる指標は検索精度(nDCG@10。正解の段落が上位10件の上のほうに出るほど高く、満点は1)です。
7データすべてで、最良か、最良と差があるとは言えない結果だった埋め込みは、ruri-v3-310m だけでした。 次に多い ruri-v3-130m は4データです。平均が最も高い埋め込み(以下、最良)は、データによって4つのモデルに分かれました。選び方の要点は次のとおりです。根拠の数字は後の節にあります。
- 最初に試す:ruri-v3-310m。7データすべてで最良か最良と差があるとは言えず、学習データと同じ出どころ(†)のある2データを除いた5データでも、5データすべてで同じ結果でした。
- CPU だけで速さを優先する:ruri-v3-30m か bekko-embedding-v1-a25m。CPU の8コアで1,000段落を、4.5秒と9.0秒で埋め込めます。ただし自作データでは、どちらも BM25 との差があるとは言えませんでした。
- モデルの大きさ:同じ系列では、大きいほうが高いデータが多くなりました。ただし、測った中で最大の Qwen3-Embedding-8B は、4データで最良より低くなりました。
- 長い文書を分割せずに探す:BM25 も候補です。ただし根拠は、NLP Journal(要旨→本文)の1データだけです。
- 検索結果を並べ替える:reranker は BM25 の検索結果に足すと、7データ中4〜6データで上がり、NLP Journal(要旨→本文)では6個とも下がりました。CPU で最も速いのは japanese-reranker-xsmall-v2 です。
どの場合も、自社の文書から正解つきの問いを作って測ることを勧めます。BM25 が最良の埋め込みより高いデータは2つ、低いデータは4つ、差があるとは言えないデータは1つでした。
実測表:ruri-v3-310m は7データすべてで、最良か、最良と差があるとは言えなかった
7つのデータが探すものは、次のとおりです。
- JQaRA:クイズの問いに答えが載った Wikipedia の段落を、問いごとの100候補の中から探す。
- JaCWIR:ウェブ記事の題名と概要を、生成した問いから、問いごとの100候補の中から探す。
- JaGovFaqs:行政の FAQ の回答を、問いから全文書(2.3万件)の中から探す。
- NLP Journal(題→要旨):言語処理学会の論文誌で、論文の題から、その論文の要旨を探す。
- NLP Journal(要旨→本文):同じ論文誌で、論文の要旨から、その論文の本文を探す。本文は長く、埋め込みは先頭512トークン(モデルが文章を区切る単位)だけを使う条件で測った。
- MIRACL 日本語:Wikipedia の短い問いに答えが載った段落を、問いごとに平均9.7件の候補の中から探す。
- 自作データ:AIコンパスの2026年11月の記事から作った254段落を、LLM が書いた150問で探す。
実測表:ruri-v3-310m は7データすべてで、最良か、最良と差があるとは言えなかった
| モデル | JQaRA (1,667問) | JaCWIR (1,000問) | JaGovFaqs-22k (3,420問) | NLP Journal (題→要旨) (510問) | NLP Journal (要旨→本文) (510問) | MIRACL 日本語 (860問) | 自作データ (150問) | 平均 (参考) |
|---|---|---|---|---|---|---|---|---|
| ruri-v3-310m | 0.699† | 0.883 ○ | 0.772 | 0.978 ○ | 0.949 ○ | 0.860† ○ | 0.814 ○ | 0.851 |
| Qwen3-Embedding-8B | 0.661 | 0.902 ○ | 0.726 | 0.965 | 0.933 | 0.870† | 0.848 | 0.844 |
| ruri-v3-130m | 0.683† | 0.873 | 0.767 ○ | 0.980 | 0.954 | 0.868† ○ | 0.763 | 0.841 |
| ruri-v3-70m | 0.641† | 0.867 | 0.745 | 0.971 ○ | 0.922 | 0.856† | 0.792 ○ | 0.828 |
| snowflake-arctic-embed-l-v2.0 | 0.539 | 0.888 ○ | 0.719 | 0.973 ○ | 0.919 | 0.839 | 0.812 ○ | 0.813 |
| bge-m3 | 0.539 | 0.895 ○ | 0.698 | 0.959 | 0.902 | 0.860† ○ | 0.820 ○ | 0.810 |
| ruri-v3-30m | 0.591† | 0.868 | 0.720 | 0.974 ○ | 0.940 | 0.839† | 0.737 | 0.810 |
| multilingual-e5-large | 0.561 | 0.900 ○ | 0.727 | 0.954 | 0.832 | 0.862† | 0.831 ○ | 0.809 |
| bekko-embedding-v1-a25m | 0.539 | 0.904 | 0.692 | 0.968 ○ | 0.932 | 0.792† | 0.798 ○ | 0.804 |
| GLuCoSE-base-ja-v2 | 0.592† | 0.891 ○ | 0.691‡ | 0.948 | 0.875 | 0.813† | 0.809 ○ | 0.803 |
| embeddinggemma-2 | 0.583 | 0.874 | 0.659 | 0.941 | 0.887 | 0.841 | 0.779 | 0.795 |
| granite-embedding-311m-multilingual-r2 | 0.419 | 0.856 | 0.714 | 0.957 | 0.919 | 0.828 | 0.768 | 0.780 |
| BM25 | 0.504 | 0.925 | 0.605 | 0.967 ○ | 0.997 | 0.687 | 0.749 | 0.776 |
| Qwen3-Embedding-0.6B | 0.438 | 0.871 | 0.664 | 0.952 | 0.903 | 0.805† | 0.759 | 0.770 |
| multilingual-e5-base | 0.476 | 0.882 | 0.682 | 0.949 | 0.829 | 0.819† | 0.745 | 0.769 |
| multilingual-e5-small | 0.493 | 0.890 ○ | 0.658 | 0.945 | 0.839 | 0.818† | 0.724 | 0.767 |
| static-embedding-japanese | 0.471† | 0.808 | 0.548 | 0.904 | 0.789 | 0.720† | 0.624 | 0.695 |
行は7データの平均の大きい順です。平均は参考の値です。検定で裏づけていないため、順位付けには使いません。「差があるとは言えない」は、2つのモデルを同じ問いで比べ、片方が高かった問いの数の差が偶然で起こる程度のときに使う言い方です(判定の方法は測定の条件)。
最良の埋め込みは4つのモデルに分かれたが、ruri-v3-310m は7データすべてで最良か、最良と差があるとは言えなかった
JQaRA と MIRACL では、ruri-v3-310m が同じ出どころのデータで学習しています(†)。この2つを除く5データ(JaCWIR・JaGovFaqs・NLP Journal の2つ・自作データ)でも、ruri-v3-310m は5データすべてで最良か、最良と差があるとは言えませんでした。ほかのモデルは最大でも3データです。ただし JaCWIR では、最良の bekko-embedding-v1-a25m より平均が0.022低く、問いごとでは ruri-v3-310m が高かった問いが81問、bekko-embedding-v1-a25m が高かった問いが117問でした。この比較は判定の境目に近く、検定の補正(測定の条件)をかけなければ差ありになります。その場合、ruri-v3-310m が最良か最良と差があるとは言えないデータは6つで、最も多いことは変わりません(次は ruri-v3-130m の4データ)。「差があるとは言えない」は同等という意味ではなく、問いの少ないデータ(自作データは150問)では差を見つけにくくなります。JaGovFaqs では ruri-v3-130m も、最良と差があるとは言えませんでした。
BM25 は、2つのデータで最良の埋め込みより高く、4つのデータで低かった
BM25 は、2つのデータで最良の埋め込みより高く、4つのデータで低く、1つは差があるとは言えなかった
BM25 が高かったのは、NLP Journal(要旨→本文)と JaCWIR です。前者は、埋め込みが本文の先頭512トークンだけを使う条件で測りました(探す対象の本文637件が、すべて512トークンを超えていました)。BM25 は全文を使っています。JaCWIR では、BM25 が0.925、最良の埋め込みが0.904でした。問いごとに比べると、BM25 のほうが高かった問いが112問、埋め込みのほうが高かった問いが73問で、残りの815問は同点です。差は小さく、判定の境目に近い結果です(値は測定の条件)。
埋め込みが高かった4データのうち、問いの言葉が正解の段落とどれだけ重なるかを測ったのは自作データだけです(重なりの測り方は冒頭の図の注)。重なりが0.5以下の83問では、BM25 が0.638、Qwen3-Embedding-8B が0.811でした。残りの67問では、BM25 が0.888、Qwen3-Embedding-8B が0.895で、差があるとは言えませんでした。JQaRA などで差が出た理由が言葉の離れ方かどうかは、確かめていません。BM25 と埋め込みを混ぜる検索(ハイブリッド)は測っておらず、この記事では勧めていません。
小さいモデルでどこまで出るか:ruri-v3-30m は、上回るデータと下回るデータに分かれた
モデルの大きさは、パラメータ(学習で決まる数値)の数で表します。ruri-v3-30m は約3,700万パラメータ(名前の30mは概数)で、次元(1つの段落を表す数値の数)は256、ライセンスは Apache 2.0 です。multilingual-e5-large と bge-m3 は MIT ライセンスです。
ruri-v3-30m は約15分の1の大きさで、multilingual-e5-large を NLP Journal の2つで上回り、3データで下回った
- ruri-v3-30m(約3,700万パラメータ。モデルの大きさの目安)
- multilingual-e5-large(約5.6億)
- bge-m3(約5.7億)
multilingual-e5-large との比較では、上回ったのが NLP Journal の2つと JQaRA、下回ったのが JaCWIR・MIRACL・自作データで、JaGovFaqs は差があるとは言えませんでした。JQaRA で上回った結果は、ruri-v3-30m だけが同じ出どころのデータで学習している組合せ(†)です。bge-m3 との比較では、JaGovFaqs も上回りました。自作データでは、ruri-v3-30m が0.737、multilingual-e5-large が0.831で、0.094低い値でした。
CPU の8コアだけで1,000段落を埋め込む時間は、ruri-v3-30m が約4.5秒、multilingual-e5-large と bge-m3 が約90〜100秒だった
CPU の8コアだけで1,000段落を埋め込むと、ruri-v3-30m は multilingual-e5-large と bge-m3 の約21〜22分の1の時間で済みます。検索精度は前の図のとおりで、ruri-v3-30m が下回るデータもあります。自作データでは、ruri-v3-30m が0.737、BM25 が0.749で、差があるとは言えませんでした(ruri-v3-30m が高い問いが41問、BM25 が高い問いが42問)。
CPU で9.0秒の bekko-embedding-v1-a25m は、JaCWIR で最良で、NLP Journal(題→要旨)と自作データでも最良と差があるとは言えませんでした。自作データでは0.798で、BM25 との差があるとは言えません(bekko-embedding-v1-a25m が高い問いが46問、BM25 が高い問いが30問)。
同じ系列の中で大きさを比べると、大きいほうが高いデータが多くなりました。Qwen3-Embedding-8B は Qwen3-Embedding-0.6B より6データで高く、multilingual-e5-large は multilingual-e5-small より4データ、ruri-v3-310m は ruri-v3-30m より5データで高い結果です。残りのデータは差があるとは言えず、小さいほうが高いデータはありませんでした。
BM25 の検索結果に reranker を足すと、42通りのうち31通りで上がり、6通りは下がった
この節の数字は、問いのサンプル(JQaRA・JaCWIR・JaGovFaqs は500問、NLP Journal は200問)で測った値で、実測表の値と少し違います。自作データは全150問、MIRACL は全860問です。
42通りは、7データ×reranker 6個です。残りの5通りは差があるとは言えませんでした。† と ‡ の8通りを除くと、34通りのうち23通りで上がり、5通りは差があるとは言えず、6通りは下がりました。下がった6通りは、すべて NLP Journal(要旨→本文)です。次の図は3データで、残りの4データは図の後の文のとおりです。
BM25 の検索結果を reranker で並べ替えると、JaGovFaqs と自作データでは6つとも上がり、NLP Journal(要旨→本文)では6つとも下がった
JQaRA と MIRACL では、6個とも BM25 の検索結果より上がりました。NLP Journal(題→要旨)は、BM25 がすでに0.970で、6個のうち3個が上がり、3個は差があるとは言えませんでした。JaCWIR では、Qwen3-Reranker の2個が BM25 の検索結果より上がったとは言えませんでした。
JQaRA では、reranker 6つのうち2つ(bge-reranker-v2-m3 と Qwen3-Reranker-0.6B)が、ruri-v3-310m の検索結果より良くならなかった
reranker を足せば必ず良くなるとは言えません。reranker の検索精度は1回の測定で、測定の揺れは測っていません。検索結果の並べ替えにかかる時間は、モデルによって大きく違います。
100候補の並べ替えにかかる時間は、GPU で0.09〜2.4秒、CPU の8コアで0.3〜36秒だった
| reranker | 大きさ(パラメータ数) | GPU (1問あたり) | CPU 8コア (1問あたり) |
|---|---|---|---|
| bge-reranker-v2-m3 | 567.8M | 0.27秒 | 9.6秒 |
| japanese-reranker-xsmall-v2 | 36.8M | 0.09秒 | 0.3秒 |
| japanese-reranker-base-v2 | 132.4M | 0.20秒 | 2.1秒 |
| ruri-v3-reranker-310m | 315.2M | 0.32秒 | 6.1秒 |
| Qwen3-Reranker-0.6B | 595.8M | 1.00秒 | 36.1秒 |
| Qwen3-Reranker-4B | 4.02B | 2.36秒 | 未測定 |
自社の記事から作った自作データの150問:埋め込み上位5つに差があるとは言えず、BM25 より高いと言えたのは3つ
自作データの150問では、埋め込み上位5つの間に差があるとは言えず、BM25 より高いと言えたのは3つだった
文書は、AIコンパスの2026年11月の記事25本を見出しごとに切った254段落です。問いの150問は、LLM(Claude Sonnet 5.5)が書きました。文書が同じ媒体の記事で、問いも人ではなく LLM が書いたため、他社の文書には当てはまらない可能性があります。問いと正解の段落、段落の本文は、own_set.json で公開しています。
公開データでの結果と、自作データでの結果が食い違う例があります。JaGovFaqs では、ruri-v3-310m のほうが高かった問いが754問、Qwen3-Embedding-8B のほうが高かった問いが411問で、平均は ruri-v3-310m が0.772、Qwen3-Embedding-8B が0.726でした。自作データでは、ruri-v3-310m が0.814、Qwen3-Embedding-8B が0.848で、差があるとは言えませんでした。公開データの結果がそのまま自社の文書に当てはまるとは限りません。
用途別の候補:根拠の数字と、向かない場面
用途別の候補:最初に試すのは ruri-v3-310m、CPU だけで速さを優先するなら ruri-v3-30m か bekko-embedding-v1-a25m
- 最初に試す:ruri-v3-310m。7データすべてで、最良か、最良と差があるとは言えなかった。† が無い5データでも、5データすべてで同じ結果だった。向かない場面:JaCWIR では最良より平均が0.022低く、検定の補正をかけなければ差ありになる、境目に近い結果だった。同じ JaCWIR で、BM25(0.925)よりも低い(0.883。BM25 が高い問いが149問、ruri-v3-310m が高い問いが66問)。CPU の8コアでは、1,000段落の埋め込みに77.2秒かかる。
- CPU だけで速さを優先する:ruri-v3-30m、bekko-embedding-v1-a25m。CPU の8コアで1,000段落の埋め込みが、ruri-v3-30m は4.5秒、bekko-embedding-v1-a25m は9.0秒(multilingual-e5-large は97.9秒)。bekko-embedding-v1-a25m は JaCWIR で最良で、NLP Journal(題→要旨)と自作データでも最良と差があるとは言えなかった。ruri-v3-30m が最良と差があるとは言えなかったのは、NLP Journal(題→要旨)だけだった。向かない場面:自作データでは、どちらも BM25(0.749)との差があるとは言えなかった(ruri-v3-30m は0.737で、ruri-v3-30m が高い問いが41問、BM25 が高い問いが42問。bekko-embedding-v1-a25m は0.798で、46問と30問)。ruri-v3-30m は、自作データ・JaCWIR・MIRACL で multilingual-e5-large を下回った。
- モデルの大きさ:同じ系列では大きいほうが高いデータが多いが、最大のモデルが最良とは限らない。Qwen3-Embedding-8B は Qwen3-Embedding-0.6B より6データで高く、残る1データは差があるとは言えなかった。multilingual-e5-large は multilingual-e5-small より4データ、ruri-v3-310m は ruri-v3-30m より5データで高かった(どの系列も、小さいほうが高いデータは無い)。一方、測った中で最大の Qwen3-Embedding-8B(約76億パラメータ)は、自作データと MIRACL(†)で最良だが、JQaRA・JaGovFaqs・NLP Journal の2つでは、最良より低かった。半精度で読み込むと、重みだけで約15GB になる(パラメータ数×2バイトの計算値)。
- 長い文書を分割せずに探す:BM25 も候補。NLP Journal(要旨→本文)の1データだけの結果で、BM25 が0.997、最良の埋め込みが0.954。埋め込みは本文の先頭512トークンだけを使う条件で測った。問いが同じ論文の要旨であることが BM25 に有利に働いた可能性があるが、確かめていない。文書を分割して埋め込む方式は測っていない。
- 検索結果を並べ替える:reranker を足す。BM25 の検索結果に足すと、6個とも7データ中4〜6データで上がった(japanese-reranker-xsmall-v2・ruri-v3-reranker-310m が6データ、bge-reranker-v2-m3・japanese-reranker-base-v2・Qwen3-Reranker-4B が5データ、Qwen3-Reranker-0.6B が4データ)。† と ‡ の組合せを除くと、bge-reranker-v2-m3 が7データ中5データ、japanese-reranker-xsmall-v2 が4データ中3データ、japanese-reranker-base-v2 が4データ中2データ、ruri-v3-reranker-310m が5データ中4データ、Qwen3-Reranker-0.6B が7データ中4データ、Qwen3-Reranker-4B が7データ中5データ。reranker どうしの優劣は検定していない。CPU で動かすなら、100候補の並べ替えが最も速いのは japanese-reranker-xsmall-v2(0.3秒。ruri-v3-reranker-310m は6.1秒、Qwen3-Reranker-0.6B は36.1秒)。向かない場面:NLP Journal(要旨→本文)では6個とも下げた(ruri-v3-reranker-310m は BM25 の1.000から0.886。200問のサンプル)。reranker の検索精度は1回の測定で、揺れは測っていない。
ライセンスは、配布元が記載している内容です。法的な判断ではありません。
公表されている BM25 の値との違いを開く
JQaRA の公表されている BM25 は、検索精度(nDCG@10)が0.458です。この記事の BM25 は0.504で、差は作り方にあります。公表されている BM25 は、問いごとの100候補だけで索引(単語の出現数の統計)を作っています(JQaRA のデータセットのページ、実装)。同じ作り方で測り直すと、JQaRA は0.4584で、公表の値と一致しました。JaCWIR は、公表の MAP@10(nDCG@10 とは別の指標。JaCWIR のページ)が0.8408、同じ作り方で測り直した値が0.8394でした。
この記事の BM25 は、候補全体(JQaRA で14.4万件の文書)で索引を作っています。公表の BM25 より強い基準線で、JQaRA は0.504、JaCWIR は nDCG@10 が0.925、公表と同じ指標の MAP@10 では0.907でした。MIRACL は、公表の作り方では測っていません。
測定の揺れと、結果を直した2点を開く
半精度(bf16)の揺れ:GPU では bf16 で計算しました。バッチ(一度に処理する段落の数)や段落の並びを変えると、3つのモデルで値が動きました。JQaRA の200問を設定を変えて測り直すと、16個のうち13個は全問で値が一致し、Qwen3-Embedding-8B・GLuCoSE-base-ja-v2・Qwen3-Embedding-0.6B の3個が一致しませんでした。JQaRA の全1,667問では、GLuCoSE-base-ja-v2 の平均が0.5916から0.5920(143問で変化)、Qwen3-Embedding-0.6B が0.43815から0.43809(400問で変化)でした。32ビットの浮動小数点(fp32)では、同じ256段落の差は2.4e-07以下に収まります。0.001未満の差は順位に使っていません。たとえば JQaRA の GLuCoSE-base-ja-v2(0.5916)と ruri-v3-30m(0.5913)は順位を付けていません。
候補の並びによる同点の有利さ:JQaRA・JaCWIR・MIRACL は、保存された候補の並びで正解が先頭に寄っています(正解が先頭の問いは、JaCWIR で全1,000問、JQaRA で61%)。点が同じ文書は並びが保たれるため、同点では正解が有利になります。そこで、問いごとに候補を固定の乱数(種は0)で混ぜてから順位を付けました。JaCWIR は、直す前より BM25 と埋め込み13個で0.0072〜0.0078下がりました(変わった問いは11〜13問)。下がらなかった3個(GLuCoSE-base-ja-v2・Qwen3-Embedding-0.6B・Qwen3-Embedding-8B)は、上の bf16 で値が動いた3個と同じです。平均が近いモデルどうしでは、平均の並びが入れ替わりました(multilingual-e5-large と Qwen3-Embedding-8B、multilingual-e5-small・snowflake-arctic-embed-l-v2.0 と GLuCoSE-base-ja-v2、ruri-v3-30m・ruri-v3-70m と Qwen3-Embedding-0.6B)。同点の原因は、正解と同じ文面の候補でした。JaCWIR の1,000問のうち19問で、正解と同じ文面の候補が不正解として入っています(うち4問は、100候補すべてが同じ文面です)。同じ文面には同じ値が付くため、候補を混ぜると正解の順位が下がります。同じ文面の候補の数から計算した低下の見込みは0.0077で、実測の0.0072〜0.0078と合いました。JQaRA と MIRACL には、正解と同じ文面の候補はありませんでした。
測定の条件の詳細を開く
測定したモデル:次の表のとおりです。重みは Hugging Face から取得し、版は取得したときの revision です。接頭辞・プーリング(段落全体を1つの数値の列にまとめる方法)・正規化は、各モデルのページの指定に従いました。
| モデル | 取得元(Hugging Face) | 版(revision の先頭10字) | ライセンス | パラメータ数 | 次元 | 接頭辞(問い/文書) |
|---|---|---|---|---|---|---|
| multilingual-e5-small | intfloat/multilingual-e5-small | 614241f622 | MIT | 118M | 384 | query: /passage: |
| multilingual-e5-base | intfloat/multilingual-e5-base | d128750597 | MIT | 278M | 768 | query: /passage: |
| multilingual-e5-large | intfloat/multilingual-e5-large | 3d7cfbdacd | MIT | 560M | 1024 | query: /passage: |
| bge-m3 | BAAI/bge-m3 | 5617a9f61b | MIT | 約567M | 1024 | なし/なし |
| ruri-v3-30m | cl-nagoya/ruri-v3-30m | 24899e5de3 | Apache-2.0 | 36.7M | 256 | 検索クエリ: /検索文書: |
| ruri-v3-70m | cl-nagoya/ruri-v3-70m | 07a8b0aba4 | Apache-2.0 | 70.0M | 384 | 検索クエリ: /検索文書: |
| ruri-v3-130m | cl-nagoya/ruri-v3-130m | e3114c6ee1 | Apache-2.0 | 132.1M | 512 | 検索クエリ: /検索文書: |
| ruri-v3-310m | cl-nagoya/ruri-v3-310m | 18b60fb8c2 | Apache-2.0 | 314.6M | 768 | 検索クエリ: /検索文書: |
| GLuCoSE-base-ja-v2 | pkshatech/GLuCoSE-base-ja-v2 | a6cbdf4d0b | Apache-2.0 | 133.1M | 768 | query: /passage: |
| snowflake-arctic-embed-l-v2.0 | Snowflake/snowflake-arctic-embed-l-v2.0 | ac6544c8a4 | Apache-2.0 | 567.8M | 1024 | query: /なし |
| Qwen3-Embedding-0.6B | Qwen/Qwen3-Embedding-0.6B | 97b0c614be | Apache-2.0 | 595.8M | 1024 | 指示文つき(下記)/なし |
| Qwen3-Embedding-8B | Qwen/Qwen3-Embedding-8B | 1d8ad4ca9b | Apache-2.0 | 7.57B | 4096 | 指示文つき(下記)/なし |
| granite-embedding-311m-multilingual-r2 | ibm-granite/granite-embedding-311m-multilingual-r2 | 4439955993 | Apache-2.0 | 311.7M | 768 | なし/なし |
| embeddinggemma-2 | google/embeddinggemma-2 | f9972ac22e | Apache-2.0 | 744M | 768 | task: search result | query: /title: none | text: |
| bekko-embedding-v1-a25m | hotchpotch/bekko-embedding-v1-a25m | 44f0b8af0f | MIT | 123.2M(稼働は24.9M) | 384 | なし/なし |
| static-embedding-japanese | hotchpotch/static-embedding-japanese | 95b3d9c80a | MIT | 約33.5M | 1024 | なし/なし |
| bge-reranker-v2-m3 | BAAI/bge-reranker-v2-m3 | 953dc6f6f8 | Apache-2.0 | 567.8M | — | なし |
| japanese-reranker-xsmall-v2 | hotchpotch/japanese-reranker-xsmall-v2 | de99fd2f16 | MIT | 36.8M | — | なし |
| japanese-reranker-base-v2 | hotchpotch/japanese-reranker-base-v2 | f21b54987a | MIT | 132.4M | — | なし |
| ruri-v3-reranker-310m | cl-nagoya/ruri-v3-reranker-310m | bb46934ee9 | Apache-2.0 | 315.2M | — | なし |
| Qwen3-Reranker-0.6B | Qwen/Qwen3-Reranker-0.6B | e61197ed45 | Apache-2.0 | 595.8M | — | 指示文つき(下記) |
| Qwen3-Reranker-4B | Qwen/Qwen3-Reranker-4B | 22e683669b | Apache-2.0 | 4.02B | — | 指示文つき(下記) |
Qwen3-Embedding の問いには、指示文「Instruct: Given a web search query, retrieve relevant passages that answer the query」と改行、「Query:」を付けました(文書には付けていません)。Qwen3-Reranker は、同じ指示文「Given a web search query, retrieve relevant passages that answer the query」をモデルのページの手順で入力しました。GLuCoSE-base-ja-v2 は、transformers 5.22.2 が配布の設定にある tokenizer(MLukeTokenizer)を含まないため、同じ配布元の SentencePiece のモデルを XLM-R の tokenizer で読み込みました。公表されている JQaRA・JaCWIR の値と照合しています。配布元のコードの実行(trust_remote_code)は、どのモデルでも使っていません。
データ:次の表のとおりです。JQaRA・JaCWIR・JaGovFaqs・NLP Journal・MIRACL は、JMTEB(sbintuitions/JMTEB、コミット 6064d6d00e3eccca0f9673621022b409f79d1a18)の test の部分です。JQaRA・JaCWIR・MIRACL は、問いごとの候補が決まっていて、モデルはその候補を並べ替えます(JQaRA と JaCWIR は100件、MIRACL は平均9.7件)。JaGovFaqs・NLP Journal・自作データは、全文書から探します。
| データ | 探すもの | 問い | 文書 | 512トークンを超えた文書の割合(ruri-v3-310m のトークナイザ) | ライセンス |
|---|---|---|---|---|---|
| JQaRA | クイズの問いに答えが載った Wikipedia の段落を、問いごとの100候補の中から探す | 1,667 | 144,372 | 0.0% | CC BY-SA 4.0(問いと答え)。文書は Wikipedia(CC BY-SA 4.0 または GFDL) |
| JaCWIR | ウェブ記事の題名と概要を、生成した問いから、問いごとの100候補の中から探す | 1,000 | 87,973 | 0.0% | 問いは OpenAI の事業向け利用規約、文書は各ウェブページの制作者に帰属 |
| JaGovFaqs-22k | 行政の FAQ の回答を、問いから全文書(2.3万件)の中から探す | 3,420 | 22,794 | 1.0% | CC BY 4.0 |
| NLP Journal(題→要旨) | 言語処理学会の論文誌で、論文の題から、その論文の要旨を探す | 510 | 637 | 0.3% | CC BY 4.0 |
| NLP Journal(要旨→本文) | 言語処理学会の論文誌で、論文の要旨から、その論文の本文(全文)を探す | 510 | 637 | 100.0% | CC BY 4.0 |
| MIRACL 日本語 | Wikipedia の短い問いに答えが載った段落を、問いごとに平均9.7件の候補の中から探す | 860 | 8,066 | 0.6% | Apache 2.0(文書は Wikipedia) |
| 自作データ | AIコンパスの2026年11月の記事から作った254段落を、LLM が書いた150問で探す | 150 | 254 | 0.0% | 自社の記事 |
JaCWIR は、test の4,000問から固定の乱数(種は0)で1,000問を抜き出しました。reranker は費用の都合で、各データから固定の乱数(種は0)で問いを抜き出して測りました(JQaRA 500、JaCWIR 500、JaGovFaqs 500、NLP Journal の2つは各200、MIRACL は全860、自作データは全150)。比べる埋め込みや BM25 の値も、同じ問いに切って対にしています。reranker に渡す候補は、JaGovFaqs・NLP Journal・自作データでは BM25 の上位100件です。JQaRA・JaCWIR・MIRACL では、データが持つ候補をそのまま渡しました(MIRACL は平均9.7件で、100件ではありません)。埋め込みの検索結果を渡す比較は、ruri-v3-310m で行いました。
自作データ:文書は、リポジトリのコミット 69e7673547b8e82570286d9ff0c70401b4b0afcd の _pages/*-benchmark.md 7本と _posts/2026-11-06-*.md 18本(計25本、いずれも公開済みの記事)です。見出しごとに、本文を300〜600字になるようにつなぎ、600字を超える段落は文末で分け、150字に満たない塊は捨てました。Liquid の記法・表の区切り・コードは除いています。こうして254段落になり、段落の字数の中央値は369字です。問い150個は Claude Sonnet 5.5 が書きました。指示文、1段落あたりの問いの数、除外の規則は記録していません。正解の段落は問いごとに1件(149問)か2件(1問)です。問いの文字を2字ずつ区切った組が正解の段落に含まれる割合の中央値は0.5(無関係な段落との中央値は0.087)でした。問い・正解の段落の id・段落の本文は、own_set.json にあります(段落はAIコンパスの公開済みの記事の文面です)。
設定:すべてのモデルで、文書と問いの最大長を512トークンにそろえました(カードの最大長は512〜32,768)。512トークンを超えた文書の割合は、上の表のとおりです。埋め込みは bf16 で GPU(NVIDIA H200 の1基)で計算し、sentence-transformers 6.2.0・transformers 5.22.2・PyTorch 2.15.0 で実行しました。BM25 は、fugashi 1.5.2 と unidic-lite 1.0.8 で分かち書きし(NFKC・小文字化、記号と空白は除く)、問いの語は重複を除いて数えます。k1=1.5・b=0.75、idf は log(1+(N−df+0.5)/(df+0.5)) です。ベクトルは半精度(fp16)で保存してから、類似度を計算しました。reranker は、文書を先頭4,000字で切ってから、問いと文書を512トークンで切って入力し、100件を並べ替えます。候補の並びは、問いごとに固定の乱数で混ぜてから順位を付けました(Python の random.Random に、文字列「0:問いの id」を種として渡します)。「自作データの比較」の埋め込み5つは、Qwen3-Embedding-8B・multilingual-e5-large・bge-m3・ruri-v3-310m・snowflake-arctic-embed-l-v2.0 です。
比べ方:検索精度は nDCG@10 で、正解の段落があれば順位の上位ほど大きくなる指標です。2つのモデルを問いごとの値の差で比べ、同点(差が0)の問いを除いて、符号検定(二項分布による正確検定、両側)をしました。補正(Holm 法)は、そのデータの中の比較の数で行っています。補正後の p が0.05以上を「差があるとは言えない」、0.05未満で、平均の差の95%区間(問いの再標本化1万回、乱数の種は0)が0を含まないものを「差あり」としました。区間が0を含む場合は、どちらとも書いていません(MIRACL の multilingual-e5-large が1件)。補正する比較の数は、最良との比較が16(ほかの埋め込み15個と BM25)、reranker が6、ruri-v3-30m の比較が2、自作データの上位5つと BM25 の間が15、同じ系列の大小の比較が7(データの数)です。自作データで ruri-v3-30m・bekko-embedding-v1-a25m を BM25 と比べた検定は、補正をしていません。
判定の境目に近い結果は3つあります。JaCWIR の ruri-v3-310m と最良の比較は、補正前の p が0.013、補正後が0.089です。補正をかけなければ、ruri-v3-310m が最良か最良と差があるとは言えないデータは6つになります。JaCWIR の BM25 と最良の埋め込みの比較は、補正後の p が0.041です。JaCWIR の bge-reranker-v2-m3 は、補正後の p が0.040です。「ruri-v3-310m は JaCWIR では BM25 より低い」は、この2つだけを比べた符号検定で、補正はしていません(p は1.5e-08)。
速さ:1,000段落は、JQaRA の文書から固定の乱数(種は0)で選んだ1,000件です。1,000段落の埋め込みは1回の測定、1問の検索は50問の中央値、100候補の並べ替えは5問の中央値です。繰り返しの揺れは測っていません。CPU のバッチは埋め込みが32、reranker が16で、スレッドは8です。GPU のバッチはモデルごとに違います(16〜512)。reranker の検索精度も1回の測定です。GPU メモリの最大の値は、前に測ったモデルの確保を含んだ可能性があるため、載せていません。GPU は H200 の1基、CPU は Intel Xeon Platinum 8558 の8コアに固定しました。
学習データとの重なり:† は、そのモデルの学習に、そのデータと同じ出どころのデータを使っているとモデルのページか論文で確認できた組合せです。‡ は、同じ出どころの可能性がある組合せ(GLuCoSE-base-ja-v2・japanese-reranker の2つの JaGovFaqs。学習に使った hpprc/emb に JaGovFaqs の設定がありますが、テストの問いが入っているかは確認できていません)です。印の無い組合せは、記載にそのデータを確認できなかった組合せで、記載がモデルのページにも論文にも無い組合せを含みます。† と ‡ の根拠は次の表のとおりです。
| モデル | データ | 印 | 根拠(原典) |
|---|---|---|---|
| ruri-v3-30m・ruri-v3-70m・ruri-v3-130m・ruri-v3-310m | JQaRA | † | ruri-v3 の学習データのカード。JQaRA(dev・unused の部分)と MIRACL の学習用の設定がある |
| ruri-v3-reranker-310m | JQaRA | † | ruri-v3 の reranker 用の学習データのカード。JQaRA(dev・unused の部分)と MIRACL がある |
| japanese-reranker-xsmall-v2・japanese-reranker-base-v2 | JQaRA | † | japanese-reranker-base-v2 のカード。学習データのタグ hpprc/emb に JQaRA と MIRACL の設定がある |
| static-embedding-japanese | JQaRA | † | static-embedding-japanese のカード。JQaRA の dev・unused の部分で学習した。MIRACL もタグにある |
| GLuCoSE-base-ja-v2 | JQaRA | † | GLuCoSE-base-ja-v2 のカード。2段階目の学習に JQaRA と MIRACL を使ったと書かれている |
| bge-m3 | MIRACL 日本語 | † | bge-m3 のカード。論文(arXiv 2402.03216)が学習データに MIRACL を挙げている |
| Qwen3-Embedding-0.6B・Qwen3-Embedding-8B | MIRACL 日本語 | † | Qwen3-Embedding のカード。論文(arXiv 2506.05176)が教師ありの学習データに MIRACL を挙げている |
| ruri-v3-30m・ruri-v3-70m・ruri-v3-130m・ruri-v3-310m | MIRACL 日本語 | † | ruri-v3 の学習データのカード。JQaRA(dev・unused の部分)と MIRACL の学習用の設定がある |
| ruri-v3-reranker-310m | MIRACL 日本語 | † | ruri-v3 の reranker 用の学習データのカード。JQaRA(dev・unused の部分)と MIRACL がある |
| bekko-embedding-v1-a25m | MIRACL 日本語 | † | bekko-embedding-v1-a25m のカード。教師なしの学習データ(bekko-embedding-v1-unsupervised)に MIRACL がある |
| japanese-reranker-xsmall-v2・japanese-reranker-base-v2 | MIRACL 日本語 | † | japanese-reranker-base-v2 のカード。学習データのタグ hpprc/emb に JQaRA と MIRACL の設定がある |
| static-embedding-japanese | MIRACL 日本語 | † | static-embedding-japanese のカード。JQaRA の dev・unused の部分で学習した。MIRACL もタグにある |
| multilingual-e5-small・multilingual-e5-base・multilingual-e5-large | MIRACL 日本語 | † | multilingual-e5 のカード。教師ありの追加学習の表に MIRACL(4万件)があり、学習用の部分だけを使ったと書かれている |
| GLuCoSE-base-ja-v2 | MIRACL 日本語 | † | GLuCoSE-base-ja-v2 のカード。2段階目の学習に JQaRA と MIRACL を使ったと書かれている |
| GLuCoSE-base-ja-v2・japanese-reranker-xsmall-v2・japanese-reranker-base-v2 | JaGovFaqs-22k | ‡ | hpprc/emb のカード。JaGovFaqs の設定がある。テストの問いが入っているかは確認できていない |
自作データの言葉の重なり:問いの文字を2字ずつ区切った組のうち、正解の段落にも出てくる割合です。
測定の環境:Python 3.12.3、NVIDIA H200(ドライバー 580.178.04)、Intel Xeon Platinum 8558。
測っていないモデル・方式と理由
- 非商用ライセンスのモデル:Sarashina(sarashina-embedding-v1-1b・v2-1b。非商用の Sarashina Model NonCommercial License Agreement)、jina-embeddings(v3・v5。CC BY-NC 4.0)。商用の媒体で結果を載せてよいか判断できないため、測っていません。
- 配布元の独自のコードの実行が必要なモデル(Hugging Face の API で、設定に独自コード(auto_map)があることを2026年11月11日に確認しました):jina-embeddings-v4、gte-multilingual-base、snowflake-arctic-embed-m-v2.0、nomic-embed-text-v2-moe、plamo-embedding-1b、RoSEtta-base-ja、LFM2.5-Embedding-350M、jina-reranker v2・v3、gte-multilingual-reranker-base。編集部の実行環境の方針で、配布元のコードを実行していません。
- 利用にログインが必要なモデル:embeddinggemma-300m(第2版の embeddinggemma-2 は測りました)。
- 有料の API:OpenAI・Cohere・Google Gemini の埋め込み。
- RAG の製品:Dify など。
- 文書の分割の長さ、量子化、BM25 と埋め込みを混ぜる検索:今回の条件にありません。
この表で分からないこと
- 自社の文書での結果:公開データ6つと、同じ媒体の記事から作った自作データの1つで測りました。自作データの問いは LLM が書いたもので、人が書いた問いとは違う可能性があります。
- 正解の数え方:自作データの正解は、問いの元にした段落(1〜2件)だけです。他の記事に同じ内容があっても、不正解として数えました。冒頭の図の2問目は、不正解とした1件目の段落に同じ答えが書かれている問いを除いて選んでいます。
- 学習データとの重なり:† と ‡ の組合せは、学習に同じ出どころのデータを使っている(可能性がある)ため、順位を言う根拠にしていません。reranker の件数と、ruri-v3-30m と multilingual-e5-large の比較では、含めた数と除いた数を併記しました。印の無い組合せには、記載を確認できなかった組合せを含みます。7データの平均は、検定で裏づけていません。
- 長い文書:全モデルで512トークンに切りました。論文の本文のように長い文書の埋め込みと reranker で値が下がった理由は、切る長さを変えて確かめていません。
- 候補を集める検索の違い:reranker に渡す候補を BM25 で集めるか、ruri-v3-310m で集めるかで結果は変わりますが、向きがデータによって違います。JaGovFaqs では ruri-v3-310m で集めたほうが高かった reranker が4個、NLP Journal(要旨→本文)では BM25 で集めたほうが高かった reranker が4個で、NLP Journal(題→要旨)と自作データでは6個とも差があるとは言えませんでした。
- 速さ:1台のサーバーで測りました。一般のパソコンの CPU や家庭用の GPU では測っていません。Qwen3-Embedding-8B と Qwen3-Reranker-4B は CPU で測っていません。
- 日本語以外:測ったのは日本語のデータだけです。
よくある質問
RAG の埋め込みモデルは、何を選べばよいですか。
編集部の測定(2026年11月)では、7データすべてで、最良か、最良と差があるとは言えない結果だった埋め込みは、ruri-v3-310m だけでした。次に多い ruri-v3-130m は4データです。平均が最も高い埋め込み(最良)は、ruri-v3-310m(JQaRA・JaGovFaqs)、bekko-embedding-v1-a25m(JaCWIR)、ruri-v3-130m(NLP Journal の2つ)、Qwen3-Embedding-8B(MIRACL・自作データ)の4つに分かれました。JQaRA と MIRACL は ruri-v3-310m が同じ出どころのデータで学習している組合せ(†)で、この2つを除く5データでも、5データすべてで同じ結果でした。JaCWIR は最良の bekko-embedding-v1-a25m より平均が0.022低く、問いごとでは81問対117問です。公開データの順位が自社の文書に当てはまるとは限らないため、候補を絞ったうえで、自社の文書から正解つきの問いを作って測ることを勧めます。
無料で使えますか。商用利用はできますか。
測った16個の埋め込みモデルと6個の reranker は、配布元のライセンス表記が MIT または Apache 2.0 で、重みを無料でダウンロードして使えます。ライセンスは配布元の記載をそのまま写したもので、法的な判断ではありません。商用で使う前に、各モデルのページで条件を確認してください。サーバーや GPU の費用は別にかかります。非商用ライセンスのモデル(Sarashina、jina-embeddings v3・v5 など)と、有料の API は測っていません。
reranker は必要ですか。
必要かどうかはデータによります。BM25 の検索結果に reranker を足すと、42通り(7データ×reranker 6個)のうち31通りで検索精度(nDCG@10。正解の段落が上位10件の上のほうに出るほど高く、満点は1)が上がり、5通りは差があるとは言えず、6通りは下がりました。学習データと同じ出どころの組合せ(† と ‡)の8通りを除くと、34通りのうち23通りで上がり、5通りは差があるとは言えず、6通りは下がりました。下がった6通りはすべて、論文の要旨から本文を探す NLP Journal(要旨→本文)です。JQaRA では、bge-reranker-v2-m3 と Qwen3-Reranker-0.6B が、ruri-v3-310m の検索結果より良くなりませんでした。時間は、100候補の並べ替えで GPU が0.09〜2.4秒、CPU の8コアが0.3〜36秒です。
GPU が無くても動きますか。
動きます。サーバー用の CPU を8コアに限って測ると、段落1,000件の埋め込みは ruri-v3-30m が4.5秒、multilingual-e5-large が97.9秒、bge-m3 が92.3秒でした。reranker は、100候補の並べ替えが japanese-reranker-xsmall-v2 で0.3秒、Qwen3-Reranker-0.6B で36.1秒でした。Qwen3-Embedding-8B と Qwen3-Reranker-4B は CPU では測っていません。一般のパソコンの CPU でも測っていません。
BM25(キーワード検索)だけで足りますか。
データによります。BM25 は、論文の要旨から本文を探す NLP Journal(要旨→本文)と JaCWIR で最良の埋め込みより高く、JQaRA・JaGovFaqs・MIRACL・自作データでは低くなりました。論文の題から要旨を探す NLP Journal(題→要旨)は、差があるとは言えませんでした。自作データの150問では、埋め込み5つのうち3つ(Qwen3-Embedding-8B・multilingual-e5-large・bge-m3)が BM25 より高いと言えました。BM25 と埋め込みを混ぜる検索(ハイブリッド)は測っていません。