BGE-M3(ビージーイーエムスリー)
BAAI(北京智源人工知能研究院)が開発した多言語・多粒度・多機能の埋め込みモデル。Dense・Sparse・ColBERT の3種類のベクトルを同時生成し、100言語以上に対応する2024年公開のオープンソース Embedding モデル。
BGE-M3とは
BGE-M3は、中国の北京智源人工知能研究院(BAAI)が2024年1月に公開したオープンソースのテキスト埋め込みモデルである。名称の「M3」は Multi-linguality(多言語)、Multi-functionality(多機能)、Multi-granularity(多粒度)の3つの「M」に由来する。1つのモデルで Dense・Sparse・ColBERT の3種類のベクトル表現を同時生成でき、100言語以上・最大8,192トークンの入力に対応する。
主な特徴
- Multi-linguality(多言語): 100言語以上をサポート。英語・中国語・日本語・韓国語はもちろん、アラビア語・ヒンディー語・スワヒリ語等の低リソース言語でも高品質な埋め込みを生成
- Multi-functionality(多機能): 1モデルで3種類の検索方式を同時サポート
- Dense retrieval: 1024次元の密ベクトルによるセマンティック検索
- Sparse retrieval(Lexical): 学習済みの疎ベクトルでBM25相当のキーワードマッチングを実現
- Multi-vector(ColBERT): トークンレベルの細粒度マッチングで高精度なリランキング
- Multi-granularity(多粒度): 短文(クエリ)から長文(最大8,192トークン)まで対応。文・段落・文書レベルの検索に使える
- パラメータ数: 568M(XLM-RoBERTa-largeベース)
- ライセンス: MIT(商用利用可)
- 学習データ: RetroMAE前訓練 → 対照学習 → Self-Knowledge Distillation の3段階で訓練
Dense・Sparse・ColBERT の違い
| 方式 | ベクトル形状 | 得意な場面 | 速度 |
|---|---|---|---|
| Dense | 1024次元の1ベクトル | セマンティック類似検索 | 高速 |
| Sparse | 語彙サイズの疎ベクトル | キーワード完全一致・専門用語 | 高速 |
| ColBERT | トークン数×1024の行列 | 高精度リランキング | 低速 |
実用的には Dense + Sparse のハイブリッド検索でリコール率を最大化し、ColBERT でリランキングする3段階パイプラインが推奨される。
ベンチマーク性能
| ベンチマーク | BGE-M3 | E5-Mistral | Voyage-3 |
|---|---|---|---|
| MIRACL(多言語検索) | 71.8 nDCG@10 | 64.2 | — |
| MTEB Retrieval(英語) | 58.4 nDCG@10 | 56.9 | 67.3 |
| BEIR(英語14タスク平均) | 51.8 nDCG@10 | 50.1 | — |
| 最大入力長 | 8,192 tokens | 4,096 tokens | 16,000 tokens |
多言語検索(MIRACL)では圧倒的な強さを見せるが、英語単一ではVoyage-3等のクローズドモデルに劣る場面もある。
利用方法
from FlagEmbedding import BGEM3FlagModel
model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True)
sentences = ["BGE-M3は多言語埋め込みモデルです", "RAGパイプラインで使用されます"]
embeddings = model.encode(sentences, return_dense=True, return_sparse=True, return_colbert_vecs=True)
# Dense vector: embeddings['dense_vecs'] → shape (2, 1024)
# Sparse vector: embeddings['lexical_weights'] → list of dict
# ColBERT vector: embeddings['colbert_vecs'] → list of (seq_len, 1024)
Sentence Transformers・LlamaIndex・LangChain等の主要フレームワークでも対応済み。
RAGでの活用パターン
- インデックス構築: ドキュメントを BGE-M3 で Dense + Sparse ベクトル化し、Qdrant・Milvus・Weaviate に格納
- ハイブリッド検索: クエリの Dense ベクトルと Sparse ベクトルを同時検索し、RRF(Reciprocal Rank Fusion)でスコア統合
- ColBERT リランキング: 上位候補を ColBERT のトークンレベルマッチングで再順位付け
- LLM 入力: リランキング後の上位文書をコンテキストとして LLM に渡す
関連モデルとの違い
BGE-M3の独自性は「1モデル3方式」のマルチ機能性にある。E5-MistralはLLMベースの高品質Dense埋め込み、Voyage-3はAPIサービスとしての利便性、GTE-Qwen2はQwen2ベースの軽量高性能、Jina Embeddings v3はタスク別LoRAアダプタでそれぞれ差別化する。多言語RAGではBGE-M3が第一選択。
よくある質問(FAQ)
Q1: BGE-M3はGPU必須? A: 推論はCPUでも可能だが、568Mパラメータのため実用的にはGPU推奨。FP16で約1.1GB VRAM消費。バッチ推論ではRTX 3060以上で快適に動作する。
Q2: OpenAI text-embedding-3-smallと比べてどう? A: OpenAIはAPI経由で手軽だが多言語性能でBGE-M3に劣る(特に日本語・中国語)。Sparse/ColBERT非対応のため検索精度の上限もBGE-M3が上。ただしOpenAIの方がインフラ管理不要。
Q3: LM StudioやOllamaで動かせる?
A: BGE-M3はLM Studioで対応済み(GGUF形式)。Ollamaでも ollama pull bge-m3 でローカル実行可能。量子化版(Q4_K_M等)ならVRAM 600MB程度で動作。
まとめ
- BGE-M3はDense・Sparse・ColBERTの3方式を1モデルで提供する多言語埋め込みモデル
- 100言語以上対応・最大8,192トークン入力で多言語RAGの第一選択
- MITライセンスで商用利用可能、主要フレームワーク対応済み
- ハイブリッド検索+ColBERTリランキングで検索精度を最大化できる