中級 14 分Embeddings

最適な埋め込みモデル FR

端的な回答

フランス語用途では、BGE-M3が最も堅実な出発点です。多言語に対応し、コンテキストは8,192トークン、ライセンスはMITで、Ollamaでも利用できます。Qwen3-EmbeddingとEmbeddingGemmaは、試す価値のある比較的新しい代替候補です。英語中心のモデル(nomic-embed-text、mxbai-embed-large、all-MiniLM)は、フランス語用途では避けてください。最終的な選択は、ご自身の文書で検証してください。

エンベディングモデルは、各テキストをベクトルに変換します。「CDD」と「有期雇用契約」が近い意味を持つと判断するのは、このモデルです。フランス語については、MTEB-French ベンチマークで BGE-M3 と all-MiniLM-L12-v2 の検索スコアに 22 ポイントの差が測定されています。このページでは、ローカルで使えるオープンモデルを順位付けし、公表された測定結果とその限界を示したうえで、本番運用でコストがかかる項目、つまりプレフィックス、切り詰め、次元数、ストレージ、再インデックス化を取り上げます。

著者 Mohamed Meguedmi·更新 2026-09-29·Windows・macOS・Linuxでテスト済み

#埋め込みモデルとは何か、フランス語ではなぜ扱いが難しくなるのか

埋め込みモデルとは、テキスト(文、段落、チャンク)を数値のベクトルに変換するニューラルネットワークです。次元数はモデルによって384から4,096まで異なります。意味が近い2つのテキストからは近いベクトルが得られ、その近さは通常、コサイン類似度で測定します。これにより、ユーザーが「CDD」と入力したときに、共通する単語がなくても、RAG は「有期雇用契約」に関する一節を見つけられます。Ollama のドキュメントでも説明されているように、質問とドキュメントは同じモデルでエンコードする必要があります。そのため、モデルを変更した場合は、コーパス全体のインデックスを作成し直す必要があります。選ぶ際には、3つの点を確認すれば十分です。フランス語で学習されているか、コンテキストの長さが使用するチャンクを収められるか、ライセンスが予定する利用を認めているかです。

フランス語には、アクセント記号、母音の脱落(「l'employeur」)、法律分野の略語、文中に混ざる英語由来の技術用語など、特有の難しさがあります。モデル間の差は明確です。MTEB-Frenchベンチマークでは、検索スコアがall-MiniLM-L12-v2の0.43からBGE-M3の0.65まで開き、同じ質問セットで22ポイントの差があります。

i
次元数 ≠ 品質
ベクトルが長いからといって、それだけで精度が高いわけではありません。MTEBの多言語ランキングでは、EmbeddingGemmaのベクトルを768次元から512次元に減らすと、スコアは61.15から60.71に下がります。Googleは256次元と128次元のサイズも示しています。保存容量の削減幅は次元数の削減に比例しますが、品質の低下幅は比例しません。

#モデルを本当に区別する5つの基準

ローカルRAGキット

あなたのドキュメント、あなたのAI:あなたのPDF、メモ、メールを扱う信頼性の高いローカルRAG。何もクラウドに送信しません。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 生涯アップデート
訓練言語
BGE-M3とQwen3-Embeddingは100以上の言語への対応をうたっており、multilingual-e5-largeは94言語への対応をうたっています。Ollamaで多くダウンロードされているnomic-embed-text-v1.5とmxbai-embed-large-v1のモデルカードには、Englishというラベルが付いています。
最大コンテキスト長
上限は、multilingual-e5-large、Solon、mxbai-embed-largeでは512トークン、EmbeddingGemmaでは2,048トークン、BGE-M3では8,192トークン、Qwen3-EmbeddingとGranite R2では32,000トークンです。それを超える長さのチャンクは拒否されず、切り詰められます。
次元数とストレージ
384から4,096の次元まであり、各次元および各ベクトルに対してfloat32で4バイトを使用します(詳細な計算は下記参照)。
ライセンス
BGE-M3、multilingual-e5-largeおよびSolonについてはMITライセンス、Qwen3-Embedding、Granite R2、nomicおよびmxbaiについてはApache 2.0ライセンス、EmbeddingGemmaについてはGemmaの条件、jina-clip-v2についてはCC BY-NC 4.0(非商用)ライセンスです。
プレフィックスと指示
一部のモデルでは、各テキストの前にプレフィックスが必要です(E5では、フランス語でも「query:」と「passage:」を使います)。付け忘れると、エラーが出ないまま検索品質が低下します。

#2026年のフランス語対応ランキング:9つのモデル比較

このランキングは編集的なものであり、自社テストではありません。フランス語のカバー範囲、公開されたベンチマーク、ローカルでの利用可能性を組み合わせています。モデルがOllamaのライブラリに含まれる場合、その重みはそのライブラリから取得され、含まれない場合はMTEB-Frenchの研究によって推定されたfloat32から取得されます。

フランス語向けの埋め込みモデル:開発元が公開している特性
モデル次元 / コンテキストライセンスモデル容量フランス語に関するソースの情報
BGE-M3 (BAAI)1 024 / 8 192MIT1.2 GB (Ollama)MTEB-Frenchの検索スコアは0.65。密ベクトル、疎ベクトル、マルチベクトル。最初に試すモデルとして推奨。
Qwen3-Embedding 0.6B / 4B / 8B1 024 / 2 560 / 4 096 ; 32 000Apache 2.0639 MB / 2.5 GB / 4.7 GB (Ollama)100を超える言語に対応しています。Qwenによる多言語MTEBのスコア:64.33 / 69.45 / 70.58。
EmbeddingGemma 300M (Google)768 (512, 256, 128) / 2 048Gemma622MB (Ollama)100を超える言語。Googleによると、MTEB多言語版v2のスコアは61.15です。
multilingual-e5-large1 024 / 512MIT2.24 GB (float32)Retrieval MTEB-French 0.59。必須プレフィックス。
Solon-embeddings-large-0.11 024 / 512MIT2.24 GB (float32)Ordalie Technologies が公開したフランス語モデル。Retrieval MTEB-French 0.63
Granite Embedding 311M Multilingual R2 (IBM)768 / 32 768Apache 2.0311Mパラメータフランス語は、強化された52言語に含まれます。IBMによると、多言語MTEBの検索評価で65.2。フランス語についての独立した測定結果は参照していません。
nomic-embed-text v1.5768 / 8,192(Ollamaでは2,048)Apache 2.0274 MB (Ollama)。モデルの紹介ページでは英語と記載されています。英語のコーパスに限って使用してください。
mxbai-embed-large-v1コンテキスト 512Apache 2.0670 MB (Ollama)モデルの紹介ページでは英語と記載されています。英語のコーパスに限って使用してください。
all-MiniLM-L12-v2384Apache 2.033M パラメータMTEB-Frenchの検索スコア:0.43。CPU専用のプロトタイプ。

BGE-M3 はまだ最良の選択肢です:そのフランス語のリトリーブ機能が公開されており、8,192トークンのコンテキストにより多くの強制的な切断を回避し、ハイブリッド検索に必要な語彙重みも提供します。GPUが利用可能な場合、Qwen3-Embeddingが候補となります:その8Bバージョンは2025年6月5日にMTEB多言語評価でトップを獲得しました(Qwenによる)、しかし4,096次元の次元数はストレージに負担をかけます。EmbeddingGemmaは低スペックのマシン向けです。

Solon は、法律・行政分野のフランス語に特化したモデルとしてよく紹介されますが、MTEB-French の研究で使われた3つの検索評価用データセットのいずれでも勝っていません。Syntec 労働協約では BGE-M3 と同等ですが、法律条文(BSARD)と学校教育に関する質問(Alloprof)では劣っています。

#フランス語のベンチマークから分かること、分からないこと

公表されている参照ベンチマークはMTEB-French(Cianconeほか、2024年5月)で、18のデータセット、8つのタスクカテゴリ、51のモデルを比較しています。著者らは、文の類似度を用いて事前学習した大規模多言語モデルが非常に優れた性能を示すと結論づけています。以下に、フランス語の法律条文(BSARD)、Syntec労働協約、Alloprofの学校教育に関する質問という3つのデータセットでの検索性能(NDCG@10)を示します。

MTEB-French:データセット別の検索性能(NDCG@10)、2024年の研究
モデル検索スコアの平均法律(BSARD)Syntec労働協約Alloprof
text-embedding-3-large (OpenAI API)0,730,730,870,60
mistral-embed (API Mistral)0,680,680,790,57
BGE-M30,650,600,850,49
Solon-embeddings-large-0.10,630,580,850,47
multilingual-e5-large0,590,590,810,38
multilingual-e5-small0,520,520,760,27
paraphrase-multilingual-MiniLM-L12-v20,440,380,660,27
all-MiniLM-L12-v20,430,340,610,33

三つの限界があるため、これを決定版のランキングとすることはできません。この研究は2024年のもので、Qwen3-Embedding(2025年6月)、EmbeddingGemma(2025年9月)、Granite R2は含まれていません。また、このページでは、これらのモデルについて比較可能なフランス語での測定結果を参照していません。コーパス(法律の条文、労働協約、学校の問題)は、ご自身のコーパスと必ずしも似ているとは限りません。さらに、モデルの提供元が公表する多言語スコアは自己申告で、すべての言語の結果が混在しています。

!
これらの数値は、いずれもご自身の環境で得られたものではありません
これらの表は公開された研究およびベンダーの仕様書に基づいており、自社でのテストによるものではありません。これらはどこを確認すべきかを示すものであり、あなたの環境でどのモデルが優位に立つかを決定するものではありません。類似の2つのモデル間で判断を下すには、最終セクションの方法論を使用してご自身のデータを活用してください。

#どのモデルがどの用途に適するか:判断表

フランス語用のエンベディングモデルを選択
あなたの状況最初にテストすべきモデルなぜ注意点
フランス語、またはフランス語+英語のコーパスで、マシンの性能はそこそこBGE-M3フランス語の検索スコアは 0.65 で、この研究で最も優れたオープンモデルと同水準Ollama では 1.2 GB で、プレフィックスは一切ありません
法務・事務・人事まずBGE-M3を試し、次にSolonと比較BGE-M3は、本調査の3つのフランス語データセットにおいて、Solonに匹敵するかそれを上回ります。法務分野の社内テストセットで検証していないモデルを使うのは、依然として賭けです
低スペックのマシンまたはCPUのみEmbeddingGemma 300M、または multilingual-e5-smallOllamaでのサイズは622 MB。GoogleがノートPCやモバイル端末向けに設計2,048トークンのコンテキスト:短いチャンク
グラフィックスカードがあり、最高品質を求める場合Qwen3-Embedding-4B または 8B32,000トークン、調整可能な次元数、100を超える言語に対応2560次元と4096次元:ストレージとインデックスの制限
長いチャンク、構造化されたドキュメントBGE-M3、Qwen3-EmbeddingまたはGranite R28,192から32,768トークンのコンテキスト非常に長いチャンクは意味を薄めます
商用利用、ライセンス監査BGE-M3、multilingual-e5-large、Solon、Qwen3-Embedding、Granite R2MITまたはApache 2.0Gemmaの利用条件を再確認する;jina-clip-v2は非商用

#企業向けにカスタマイズした埋め込み:オープンモデル、ファインチューニング、またはAPI

「用途に合わせる」とは、最初から独自のモデルを学習させることではありません。時間を無駄にしないための順序は、まず汎用のオープンモデル、丁寧なチャンク分割、ハイブリッド検索、リランカーを用意すること。次に、実際の質問でリコール(再現率)を測定すること。そして、それでも失敗が続き、その原因が業務用語(内部参照、社内独自の略語)にある場合に限って、ファインチューニングを行うことです。

Philipp Schmid は 2024 年 6 月、金融文書から抽出した 6,300 組の質問-パッセージペアを用いて bge-base-en-v1.5 モデルをファインチューニングしました。テストセットでの検索スコアは約 7.4% 向上し、トレーニング時間は一般消費者向けグラフィックカードで 3 分でした。これは英語のケースであり、単一のコーパス、LLM によって生成されたペアに基づくものです。したがって、これは目安であり、保証ではありません。BAAI はまた、BGE-M3 のファインチューニングについても文書化しています。

企業に適したエンベディングを取得する3つの方法
オプション選ぶべき場面制限
ローカルで動かす汎用オープンモデル(BGE-M3、Qwen3-Embedding)まず試す標準的な選択肢。テキストはご自身のネットワーク内にとどまります。ライセンスはMITまたはApache。業務用語は未学習。手元の文書で評価する必要あり
オープンモデルのファインチューニングハイブリッド検索とリランカーを使っても再現率が頭打ちで、質問とパッセージのペアが数千組ある場合コーパスの再エンコード;モデルをソフトウェアのようにバージョン管理;過適合のリスク
埋め込みAPI (Mistral, OpenAI)GPUなし、処理量は中程度。2024年のMTEB-French研究では、text-embedding-3-largeとmistral-embedが上位に位置しています。テキストはお客様のネットワークを離れ、モデルは提供元側で変更される可能性があります。継続的なコストが発生します。
→
ファインチューニングを行う前に実施すべき適切なテスト
適切なパッセージが上位20件の結果に含まれていても、上位5件に含まれていない場合は、リランカーの使用ケースです。BAAIは、ハイブリッド検索の後にリランキングを行うことを推奨しています。エンベディングのファインチューニングは、結果に決して現れないパッセージを対象としています。

#マルチモーダル埋め込み:画像やドキュメントページ内での検索

マルチモーダル埋め込みモデルは、テキストと画像を同じベクトル空間に配置します。これにより、文章をもとに写真を検索したり、OCRを使わずにスキャンされたPDFのページを検索したりできます。このページのために確認したOllamaライブラリのモデル(BGE-M3、Qwen3-Embedding、EmbeddingGemma、nomic-embed-text、mxbai-embed-large)は、テキストのみを受け付けます。以下のマルチモーダルモデルは、Hugging Face(Sentence-TransformersまたはTransformers)を通じて使用します。

オープンなマルチモーダル埋め込みモデル
モデル入力ライセンス知っておくべきこと
Qwen3-VL-Embedding 2B / 8Bテキスト、画像、スクリーンショット、動画Apache 2.032,000トークン;2,048および4,096次元;調整可能な次元
jina-clip-v2テキストと画像;94言語CC BY-NC 4.0非商用:提供元の許可がない限り、有料の製品やサービスには使用しないこと
ColPali v1.3画像化された文書ページ、マルチベクトルMIT(参照ページ)英語でラベル付けされた参照;各ページに複数のベクトルが存在する場合、ストレージ方式が変更されます

マルチモーダルモデルは、純粋なテキストでは優れているわけではありません。Qwenが公開した表では、Qwen3-VL-Embedding-2BはMTEB多言語で63.87を獲得していますが、3倍以上小さいテキストモデルであるQwen3-Embedding-0.6Bは64.33です。有用なコンテンツがテキストであるPDFについては、クリーンなテキストに変換し(DoclingまたはOCR)、テキスト埋め込みを使用してください。マルチモーダルは、図面、平面図、スクリーンショット、スライドなどの視覚コーパスに限定してください。

#エンベディングの管理:プレフィックス、切り詰め、保存、再インデックス化

RAGの性能は、モデルの選択よりも、こうした細部によって低下することがよくあります。まず、モデルのファミリーごとに、質問と文書それぞれに求められる入力形式が異なります。

モデルごとに指定するプレフィックス(質問と文書)
モデル質問の前に付けるもの文書の先頭に付けるもの
BGE-M3なしなし
multilingual-e5-largequery: passage:(フランス語の場合でも必須)
Solon-embeddings-large-0.1query : なし
nomic-embed-text v1.5search_query: search_document:
mxbai-embed-large-v1関連する文書を検索するためのこの文の表現: なし
Qwen3-EmbeddingInstruct: {タスクを一文で}、改行、Query: {質問}なし
EmbeddingGemmatask: 検索結果 | クエリ: {question}title: {titre ou none} | text: {contenu}

Ollamaでは、mxbai-embed-largeの公式例は送信するテキストにプレフィックスを直接含めています。自分のコードでプレフィックスを追加してください。Qwenは、通常、指示を加えることで性能が1〜5%向上すると説明し、多言語コーパスの場合でも指示を英語で書くことを推奨しています。

#Ollama の落とし穴:通知なしの切り詰め

Ollamaの/api/embedエンドポイントにはtruncateパラメータがあり、デフォルト値はtrueです。モデルのコンテキストウィンドウを超える入力は、エラーを出さずに切り詰められます。mxbai-embed-large(Ollamaでは512トークン)の場合、700トークンのチャンクは末尾が欠けたままインデックス化され、誰もそれに気づきません。Ollamaでのコンテキスト長は、元のモデルの仕様と異なる場合もあります。nomic-embed-textでは2Kで、Nomicが公表する8,192トークンとは異なります。テスト中はtruncateをfalseに設定してください。テキストが切り詰められるより、エラーが出るほうがよいからです。

#次元、ストレージ、インデックスの制限

ストレージ容量は単純に計算できます:チャンク数 × 次元数 × float32 の 4 バイト(インデックスを除く)。100 万チャンクの場合、ベクトルのみで占める容量は以下の通りです:

float32の100万チャンク、ベクトルのみ(計算用)
次元数モデルの例ストレージ
256次元数を削減したEmbeddingGemmaまたはQwen3(Matryoshka)1.0 GB
384all-MiniLM-L12-v21.5 GB
768EmbeddingGemma、Granite R2、nomic3.1GB
1 024BGE-M3、multilingual-e5-large、Qwen3-0.6B4.1GB
2 560Qwen3-Embedding-4B10.2 GB
4 096Qwen3-Embedding-8B16.4 GB

データベースにも上限があります。pgvector のインデックスで扱えるベクトルは最大 2,000 次元、半精度(halfvec)では 4,000 次元です。Qwen3-Embedding-8B の 4,096 次元は、この上限さえ超えています。対策は、ベクトルの次元を切り詰めてから再正規化することです。Matryoshka 方式で学習したモデル(Qwen3-Embedding、EmbeddingGemma、nomic v1.5)なら切り詰めが可能で、Google も EmbeddingGemma について再正規化を行うよう明記しています。Ollama の /api/embed API は dimensions パラメータを受け付けますが、使用はこれらのモデルに限定してください。

#バージョン管理と再インデックス

保存すべきメタデータ
モデルの正確な名前、リビジョン、次元数、プレフィックスのテンプレート、チャンク分割のパラメータ、インデックス作成日。これらがなければ、検索結果がなぜ変わったのか誰にも分かりません。
モデルの変更
コーパス全体を新しいコレクションに再エンコードし、評価してから切り替えてください。2つのモデルを同じコレクションに混ぜることは絶対に避けてください。
正規化
OllamaはL2正規化されたベクトルを返します。どこでも同じ類似度指標(コサイン類似度または内積)を使用してください。

#モデルを実際に使い、自分の文書でテストする

Ollama : BGE-M3をダウンロードし、エンベディングを生成
ollama pull bge-m3

curl http://localhost:11434/api/embed -d '{
  "model": "bge-m3",
  "input": "Le contrat débute le 1er mai."
}'
PythonでOllamaを使う:意味の近い2つのテキストと、意味の離れた1つのテキスト
import numpy as np
import ollama

textes = [
    "Le contrat débute le 1er mai.",
    "Date de début : 01/05.",
    "La voiture est rouge.",
]
vecteurs = np.array(ollama.embed(model="bge-m3", input=textes)["embeddings"])

# Les vecteurs d'Ollama sont normalisés : le produit scalaire vaut le cosinus
print(vecteurs[0] @ vecteurs[1])
print(vecteurs[0] @ vecteurs[2])

2つのスコアの順序だけ覚えておいてください。最初のスコアは2番目のスコアを明確に上回っている必要があります。2つか3つの候補を真剣に比較するには、以下の手順が公開されているすべてのランキングに代わります。

  1. 01
    実際のテストデータセットを構築する
    実際のユーザーから寄せられた質問(サポートへの問い合わせ、チケット、よくある質問)を50〜100件集め、それぞれについて回答が含まれるチャンクを記録してください。LLMが作り出した質問を使うと、評価結果が実際より良く見えてしまいます。
  2. 02
    各候補モデルでエンコードします
    プレフィックスの一覧表に従って、まずチャンクを、次に質問をエンコードしてください。すべての候補で、チャンクの長さと保存するベクトルの次元数を同じにしてください。
  3. 03
    recall@5を測定する
    各質問について、正しいチャンクが上位5件の結果に含まれているか確認してください。以下のスクリプトはこの計算を行います。
  4. 04
    コスト基準で判断する
    recall@5 が最良の結果から1〜2ポイント以内の最も軽量なモデルを選択してください。8倍大きいモデルは、再インデックス作成のたびにストレージと時間のコストがかかります。
Sentence-Transformers:ご自身のデータで測定する recall@5
import numpy as np
from sentence_transformers import SentenceTransformer

modele = SentenceTransformer("BAAI/bge-m3")

chunks = [...]      # vos chunks (liste de textes)
questions = [...]   # 50 à 100 vraies questions
cible = [...]       # pour chaque question, l'index du bon chunk

C = modele.encode(chunks, normalize_embeddings=True)
Q = modele.encode(questions, normalize_embeddings=True)

top5 = np.argsort(-(Q @ C.T), axis=1)[:, :5]
recall5 = np.mean([cible[i] in top5[i] for i in range(len(questions))])
print(f"recall@5 = {recall5:.0%}")
→
ベクトルを永続化してください
初歩的なRAGでは、起動するたびにコーパス全体を再エンコードする処理が最も時間のかかる部分です。ベクトルをデータベース(Chroma、Qdrant、pgvector、FAISS)に保存し、新しいチャンクだけを再エンコードしてください。
FAQ
フランス語に最適なエンベッディングモデルはどれですか?+
BGE-M3は最適な出発点です。フランス語の検索性能が公開されており(MTEB-Frenchで0.65)、8,192トークンを処理でき、ライセンスはMITで、Ollamaでも提供されています。Qwen3-EmbeddingとEmbeddingGemmaはより新しく、この研究には含まれていません。決定前に、コーパスから50問の質問でテストしてください。
nomic-embed-textまたはmxbai-embed-largeをフランス語で使用できますか?+
これらのモデルの Hugging Face のモデルカードには対応言語として英語が記載されており、MTEB-French の研究には含まれていません。技術的にはフランス語にも使えますが、品質を保証する根拠はありません。Ollama では、nomic-embed-text が利用できるコンテキストは 2,048 トークンのみで、Nomic が公表している 8,192 トークンより少なくなっています。両者を比べると、nomic のほうがコンテキストが長く、Ollama では 2,048 トークンに対応するのに対して、mxbai は 512 トークンです。一方、mxbai がプレフィックスを必要とするのはクエリだけです。BGE-M3 を選ぶことをおすすめします。
bge-m4 モデルは存在しますか?+
公式のFlagEmbeddingリポジトリにはbge-m4の記載はありません。このファミリーの多言語モデルはBGE-M3と呼ばれ、M3は三つの特性を表します。多機能(密ベクトル、疎ベクトル、複数ベクトル)、多言語(100を超える言語)、複数の粒度への対応(最大8,192トークン)です。bge-m4を提供しているサイトがある場合は、ダウンロード前にその提供元を確認してください。
エンベディングモデルを変更した場合、再インデックスが必要ですか?+
はい、すべて再インデックスする必要があります。2つのモデルのベクトルは異なる空間にあり、次元数すら異なることがよくあります。新しいコレクションを作成し、新しいモデルとそのプレフィックステンプレートを使ってすべてのチャンクを再エンコードし、再現率を測定してから切り替えてください。同じコレクション内で2つのモデルを混在させてはいけません。
マルチモーダル埋め込みモデルはテキストモデルを置き換えることができますか?+
いいえ、コンテンツが視覚的なものである場合を除きます。Qwenの表では、テキストのみの場合、Qwen3-VL-Embedding-2B(63.87)はQwen3-Embedding-0.6B(64.33)を下回っています。テキスト主体のPDFはテキストに変換し、テキスト用の埋め込みモデルを引き続き使ってください。マルチモーダルは図解、スクリーンショット、スライドに役立ちます。ただし、jina-clip-v2は非商用利用に限られる点に注意してください。
企業向けにカスタマイズした埋め込みモデルは必要ですか?+
最初から必要になることはまれです。汎用のオープンモデル、丁寧なチャンク分割、ハイブリッド検索、リランカーで、ほとんどの場合は対応できます。業務固有の用語が原因で再現率が頭打ちになっており、質問と文書の該当箇所のペアを数千件持っている場合には、ファインチューニングを行う理由があります。その後、インデックス全体を再構築する必要があります。
このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。