AI・機械学習
中級

LLM埋め込みモデル(エルエルエムウメコミモデル)

LLM埋め込みモデル(Embedding Model)とは、テキストや画像などのデータを固定長の高次元ベクトルに変換し、意味的な類似度を数値的に計算可能にするニューラルネットワークモデルである。RAG(検索拡張生成)やセマンティック検索、クラスタリング、分類など幅広いNLPタスクの基盤技術として利用される。

0 回閲覧
0 いいね

LLM埋め込みモデルとは

LLM埋め込みモデルは、テキストを高次元の密ベクトル(dense vector)に変換する技術である。従来のBag-of-Words(BoW)やTF-IDFといった疎ベクトル表現と異なり、単語や文の意味的な関係性を連続的な数値空間上に写像することで、「意味の近さ」をコサイン類似度やユークリッド距離で定量的に評価できる。

2024年以降、OpenAI text-embedding-3-large(3,072次元)やBAAI BGE-M3(最大8,192トークン)など、大規模言語モデルのアーキテクチャを活用した埋め込みモデルが急速に進化している。これらのモデルはRAGパイプラインのリトリーバル精度を直接左右するため、LLMアプリケーション構築において極めて重要な選択肢となっている。

埋め込みモデルのアーキテクチャ

Encoder-onlyアーキテクチャ

BERTやRoBERTaに代表されるEncoder-only構造は、双方向の文脈理解により高品質な文表現を生成する。Sentence-BERT(SBERT)はBERTにSiameseネットワーク構造を適用し、文ペアの類似度計算を効率化した先駆的モデルである。

Decoder-basedアーキテクチャ

Mistral 7BやLlama 2をベースにしたE5-MistralやGTE-Qwen2は、LLMのデコーダアーキテクチャを埋め込みタスクに転用する。大規模な事前学習知識を活用できる反面、推論コストが高い傾向がある。

ハイブリッドアーキテクチャ

BGE-M3のように、Dense・Sparse・ColBERTの3つの検索手法を単一モデルで統合するアプローチも登場している。

アーキテクチャ代表モデル次元数最大トークン特徴
Encoder-onlySBERT, E5-base384-1,024512高速・軽量
Decoder-basedE5-Mistral, GTE-Qwen2-7B4,09632,768高精度・高コスト
ハイブリッドBGE-M31,0248,192多手法統合
API提供text-embedding-3-large256-3,0728,191次元削減可能

学習手法と損失関数

対照学習(Contrastive Learning)

正例ペア(意味的に近い文のペア)と負例ペアを区別するよう学習する。InfoNCE損失やMultiple Negatives Ranking Loss(MNRL)が代表的で、バッチ内の他サンプルをハード負例として活用するIn-batch Negatives手法が広く採用されている。

指示付き埋め込み(Instruction-tuned Embedding)

E5やVoyageでは、入力テキストの前にタスク指示(例: query: や passage: )を付与することで、検索・分類・クラスタリングなど異なるタスクに対して最適化されたベクトルを生成する。INSTRUCTOR(Hkunlp)はこの手法の先駆者であり、タスク指示を明示的にモデルに渡すことで汎用性を確保している。

Matryoshka Representation Learning(MRL)

OpenAI text-embedding-3シリーズで採用された手法で、ベクトルの先頭N次元を切り取っても高い性能を維持できるよう学習する。3,072次元のモデルを256次元に削減しても、MTEBベンチマークで従来の1,536次元モデルを上回る性能を示す。ストレージコストと検索速度のトレードオフを柔軟に調整できる。

主要な埋め込みモデル比較

モデル提供元次元数MTEB平均多言語コスト ($/1Mトークン)
text-embedding-3-largeOpenAI3,07264.6限定的$0.13
text-embedding-3-smallOpenAI1,53662.3限定的$0.02
BGE-M3BAAI1,02466.1100+言語無料(OSS)
Voyage-3Voyage AI1,02467.3対応$0.06
E5-Mistral-7BMicrosoft4,09666.6対応無料(OSS)
GTE-Qwen2-7BAlibaba3,58467.2対応無料(OSS)
Cohere embed-v3Cohere1,02464.5100+言語$0.10
Jina-embeddings-v3Jina AI1,02465.589言語$0.02

実装とベクトルデータベース

埋め込みモデルで生成されたベクトルは、効率的な類似検索のためにベクトルデータベースに格納される。主要な選択肢は以下の通りである。

専用ベクトルDB: Pinecone、Milvus、Qdrant、Weaviate、Chroma。ANN(Approximate Nearest Neighbor)インデックスにより大規模データでも高速検索が可能。

既存DBの拡張: PostgreSQL + pgvector、Elasticsearch knn_search、Redis Vector Search。既存インフラに統合できる利点がある。pgvectorはHNSW(Hierarchical Navigable Small World)インデックスをサポートし、100万ベクトル規模でも実用的な検索速度を実現する。

# pgvectorでの埋め込みベクトル検索例
from sentence_transformers import SentenceTransformer
import psycopg2

model = SentenceTransformer('BAAI/bge-m3')
query_vector = model.encode('LLMの推論最適化手法')

conn = psycopg2.connect(dsn)
cur = conn.cursor()
cur.execute("""
    SELECT id, title, 1 - (embedding <=> %s::vector) AS similarity
    FROM documents
    ORDER BY embedding <=> %s::vector
    LIMIT 10
""", (query_vector.tolist(), query_vector.tolist()))

FAQ

Q1: 埋め込みモデルの次元数は多いほど良いのか?

次元数が多いほど情報の表現力は高まるが、ストレージコスト・検索速度・メモリ使用量も増加する。Matryoshka表現学習により、高次元モデルの先頭部分を切り取って低次元で利用する手法が実用的である。OpenAI text-embedding-3-largeは3,072次元だが、256次元に削減しても多くのタスクで実用的な精度を維持する。用途とインフラ制約に応じて最適な次元数を選択すべきである。

Q2: RAGパイプラインでの埋め込みモデル選択基準は?

主要な選択基準は以下の4点である。(1) 対象言語の対応状況(日本語を含む場合はBGE-M3やmultilingual-e5-largeが有力)、(2) MTEBベンチマークのRetrieval部門スコア、(3) 最大入力トークン数(長文ドキュメントにはBGE-M3の8,192トークンが有利)、(4) 推論コストとレイテンシ。本番環境では、自社ドメインのデータで評価し、ベンチマーク結果だけに依存しないことが重要である。

Q3: 埋め込みモデルのファインチューニングは必要か?

汎用埋め込みモデルは多くのタスクで高い性能を示すが、専門ドメイン(医療・法律・金融など)では、ドメイン固有のペアデータでファインチューニングすることで5-15%の精度向上が見込める。Sentence Transformersライブラリはファインチューニング用のTrainerクラスを提供しており、数千ペアのデータから効率的に学習できる。ただしデータ収集コストとの費用対効果を事前に評価すべきである。

Q4: Dense EmbeddingとSparse Embeddingの違いは?

Dense Embeddingは全次元に非ゼロ値を持つ連続ベクトルで、意味的類似度の捕捉に優れる。Sparse Embedding(BM25やSPLADE)はほとんどの次元がゼロの疎ベクトルで、キーワード一致に強い。BGE-M3のようなハイブリッドモデルは両方を統合し、意味検索とキーワード検索の長所を組み合わせている。