AI・機械学習
上級

BGE-M3(ビージーイーエムスリー)

BAAI(北京人工知能研究院)が開発した多言語・多機能・多粒度テキスト埋め込みモデル。密ベクトル・疎ベクトル・ColBERTを一括サポートする。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
embedding
multilingual
rag
dense-retrieval
sparse-retrieval
colbert
baai
bge

BGE-M3 とは

BGE-M3は北京人工知能研究院(BAAI)が2024年1月に公開したテキスト埋め込みモデルで、その名称の「M3」は次の3つの特性に由来する。

  • Multi-Functionality(多機能性) — 密ベクトル(Dense)・疎ベクトル(Sparse/SPLADE系)・ColBERTレイテントトークン表現を単一モデルで出力できる
  • Multi-Linguality(多言語性) — 100言語以上に対応し、英語・中国語・日本語を含む幅広い言語での横断検索が可能
  • Multi-Granularity(多粒度性) — 最大8192トークンの長文を処理でき、短い検索クエリから長い文書全体まで同一モデルで扱える

アーキテクチャ

ベースモデルはXLM-RoBERTaを基盤とし、パラメータ規模は約568M。入力テキストを複数の表現形式に変換する独自のデコーダヘッドを持つ。

Dense出力はCLSトークンベクトル(1024次元)で、コサイン類似度によるAnNNS検索に使用する。Sparse出力はterm weighting方式でSPLADE相当の疎表現を生成し、BM25を置き換えるキーワード検索に活用できる。ColBERT出力は各トークンにベクトルを付与し、MaxSimによる多粒度マッチングを実現する。

ベンチマーク性能

MTEB(Massive Text Embedding Benchmark)における評価では、公開当初から多言語リーダーボードのトップクラスに位置し続けている。特に多言語検索タスクおよびリランキングタスクで高いスコアを示す。

タスクBGE-M3比較モデル
Retrieval (avg)74.9E5-large: 70.2
Reranking60.6Cohere v3: 59.8
Multilingual MTEB65.0+mE5-large: 61.5

ハイブリッド検索

BGE-M3の最大の強みは、Dense・Sparse・ColBERTを組み合わせたハイブリッド検索にある。単一モデルで3種類のスコアを生成し、RRF(Reciprocal Rank Fusion)でマージすることで、キーワードベースと意味ベースの両方の検索精度を実現する。

from FlagEmbedding import BGEM3FlagModel

model = BGEM3FlagModel("BAAI/bge-m3", use_fp16=True)

# Dense + Sparse + ColBERT を一括出力
output = model.encode(
    ["自作PCのCPU選びのポイントは?"],
    return_dense=True,
    return_sparse=True,
    return_colbert_vecs=True
)

dense_vecs = output["dense_vecs"]        # shape: (1, 1024)
sparse_weights = output["lexical_weights"] # dict of token weights
colbert_vecs = output["colbert_vecs"]    # shape: (1, seq_len, 1024)

ローカル推論

BGE-M3はHugging Face経由で公開されており、量子化版(GGUF形式)を使えばCPUのみのローカルマシンでも動作する。LM StudioやOllamaでの実行も対応しており、クラウドAPIなしでプライベートRAGシステムを構築できる。

# Ollama で BGE-M3 を使用
ollama pull bge-m3

# curl でエンベディング生成
curl http://localhost:11434/api/embeddings \
  -d '{"model": "bge-m3", "prompt": "自作PCの楽しさ"}'

実用上の注意

  • VRAM要件: FP16で約2GBのVRAM。CPUオフロードも可
  • バッチサイズ: 長文(4096トークン超)の場合はバッチサイズを下げてOOMを防ぐ
  • 正規化: Dense出力は必ずL2正規化してからコサイン類似度を計算する
  • Qdrant連携: qdrant-clientではbge-m3のスパースベクトルをSparseVectorとして扱える

jisaku.comでの活用例

BGE-M3はjisaku.comの用語集・記事ベクトル検索バックエンド(Qdrant)でQwen3-Embedding-8Bと並ぶ選択肢として評価されている。特に日本語・英語混在コンテンツでの多言語検索と、ColBERT多段再ランキングの組み合わせがPC自作ガイドの精度向上に寄与する。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7