RAGエンベディング完全ガイド|最新モデル・コスト削減・実践技術【2025年版】
この記事を読むとRAGの「エンジン」であるエンベディング技術の実践的な仕組みがわかり、最新モデルの選定からコスト削減、精度向上の手法までを自信を持って選択・実装できるようになります。
- 要点1:最新モデルはOpenAI超え(Voyage-3)。精度、コスト、多言語で選定する。
- 要点2:コスト削減は「Matryoshka(メモリ75%減)」と「Binary Quantization(96%減)」が鍵。
- 要点3:精度向上は「Late Chunking(文脈保持)」と「Reranker」の併用がベストプラクティス。
→ 実装手順は「第6章:RAG実装のベストプラクティス」へ、最新モデル比較は「第4章」へ。
第1章:エンベディングの基礎理論(ベクトル空間と探索)
要約:エンベディングは、テキスト等のデータをAIが「意味」で比較できる多次元の「数値ベクトル」に変換する技術です。RAGではこのベクトルを使い、質問と「意味が近い」文書を検索します。
ベクトル空間へのマッピング
エンベディングは、単語や文章などのデータを多次元ベクトル空間にマッピングする技術です。このプロセスにより、データ間の意味的関係や類似性を数学的に表現できるようになります。
例えば、「王」「女王」「王子」といった単語は、ベクトル空間内で互いに近い位置に配置されます。このマッピングにより、以下のような利点が生まれます:
- 意味的類似性の数値化: コサイン類似度などの指標を用いて、データ間の関係性を定量的に評価できます。
- 効率的な検索: ベクトル空間内での近傍探索により、関連情報を高速に抽出できます。
- 機械学習モデルへの入力: 数値ベクトルとして表現されたデータは、様々な機械学習アルゴリズムで直接利用可能です。
RAGシステムでは、この性質を利用し、ユーザーの質問文をベクトル化し、事前にベクトル化しておいた文書データベースから「意味が近い」文書ベクトルを瞬時に探し出します。
コサイン類似度の基礎
コサイン類似度は、2つのベクトル間の類似性を測る指標で、-1から1の範囲で表されます。1に近いほど類似性が高く、-1に近いほど類似性が低い(逆方向を向いている)ことを示します。
この指標は、ベクトルの大きさ(文書の長さなど)ではなく「方向性(意味)」に注目するため、テキスト分析やRAGの検索において最も広く使用されています。
👨🏫 コサイン類似度の特徴
- ベクトル間の「角度(cos θ)」を利用して類似性を計算する。
- 文書の長さに影響されずに「内容」の類似度を評価可能。
- 数式:$cos(\theta) = \frac{A \cdot B}{\|A\| \|B\|}$ (AとBは比較するベクトル)
RAGでは、質問ベクトルと文書ベクトルのコサイン類似度を計算し、スコアが最も高い(最も角度が近い)文書を「関連性が高い」と判断します。
ベクトル空間内の近傍探索
ベクトル空間内での近傍探索は、高次元データの類似性を効率的に見つけるための重要な技術です。数百万、数億を超えるベクトルすべてとコサイン類似度を計算する(全件探索)のは非現実的なため、より高速な手法が用いられます。
k-d木 (k-dimensional tree)
空間を再帰的に分割する階層的なデータ構造です。各ノードで特定の次元に基づいて空間を二分割し、探索時には不要な領域を効率的に除外できます。しかし、次元数が100を超えるような高次元(エンベディングは通常768次元以上)になると効率が著しく低下する「次元の呪い」の影響を受けやすい欠点があります。
ANN(近似最近傍探索)
厳密な最近傍(100%の正解)ではなく、「十分に近い(例:99%の精度で)正解」を高速に見つける手法群です。RAGやベクトルDBでは、ほぼ全てのケースでANNが採用されます。
- LSH (Locality-Sensitive Hashing): 類似したデータポイントを同じバケット(カゴ)にハッシュ化することで、検索対象を絞り込みます。
- HNSW (Hierarchical Navigable Small World): 2025年現在、最も主流なアルゴリズム。グラフ構造を階層的に持つことで(詳細は別記事「ベクトルDB完全比較」を参照)、超高速かつ高精度な検索を実現します。
第2章:RAG精度向上の鍵「Late Chunking」技術
要約:従来のチャンキング(文書分割)は、分割時に文脈が失われる弱点がありました。「Late Chunking」は、文書全体をエンベディングした後に分割することで、この問題を解決する最新技術です。
RAGの精度は、エンベディングモデル以前に「どうやって文書を分割(チャンキング)するか」に大きく左右されます。
従来のチャンキング(Naive Chunking)の問題点
従来の手法では、まず文書を固定サイズ(例:512トークン)に機械的に分割し、その後、分割された各チャンクを個別にエンベディング(ベクトル化)していました。
これには重大な欠点があります。それは、チャンクの境界で「文脈」が失われることです。
🤔 従来チャンキングの問題例
元の文:
「ベルリンはドイツの首都です。その都市は385万人以上の人口を持ち、ヨーロッパでも有数の文化の中心地です。」
従来型チャンキング(境界が悪い場合):
- チャンク1: 「ベルリンはドイツの首都です。」
- チャンク2: 「その都市は385万人以上の人口を持ち、ヨーロッパでも有数の文化の中心地です。」
発生する問題:
検索クエリ(質問)が「ベルリンの人口は?」だった場合、AIはこの質問のベクトル(「ベルリン」+「人口」の意味)と近いチャンクを探します。
しかし、チャンク1(ベルリンは首都...)は、「ベルリン」とは近いですが「人口」の意味がありません。
チャンク2(その都市は人口...)は、「人口」とは近いですが、「その都市」が「ベルリン」であるという文脈が失われています。
その結果、AIはどちらのチャンクも「質問との関連性が低い」と判断してしまい、正解(チャンク2)を見つけられないか、関連性の低いチャンク1を返してしまう可能性が高くなります。これが従来型チャンキングの「文脈の喪失(Context Loss)」問題です。
Late Chunkingによる文脈の保持
Late Chunking(レイトチャンキング)は、この問題を解決するために、**「エンベディング」と「分割」の順序を逆転**させます。
- 従来のチャンキング:
文書 → [分割] → チャンク1, チャンク2 → [個別エンベディング] → ベクトル1, ベクトル2(文脈喪失) - Late Chunking:
文書 → [全体エンベディング] → トークンごとの文脈付きベクトル → [分割] → ベクトル1, ベクトル2(文脈保持)
具体的には、Jina AIの`jina-embeddings-v2`のような長文コンテキスト(8192トークン)対応モデルを使用し、まず文書全体をTransformerモデルで処理します。これにより、各トークン(単語)が文書全体の文脈を理解した状態のベクトルを持ちます。その後、トークンレベルのベクトルを指定のチャンクサイズで分割し、平均プーリング(平均化)などで各チャンクの最終的なベクトルを生成します。
この手法により、チャンク2の「その都市」というベクトルにも「ベルリン」の文脈が色濃く反映されるため、検索精度が劇的に向上します。追加のLLM(AnthropicのContextual Retrievalなど)を必要とせず、エンベディングモデルのみで完結するため、コスト効率にも優れています。
第3章:エンベディングモデルの進化 (Word2Vec, BERT, Transformer)
要約:エンベディング技術は、単純な単語ベクトル(Word2Vec)から、文脈を理解する双方向モデル(BERT)へと進化しました。このBERTの核となるのが「注意機構(Attention)」です。
2025年現在の高性能モデルを理解するため、その基礎となったWord2VecとBERTの概念を解説します。
Word2Vec (CBOW / Skip-gram)
Word2Vecは、一昔前のエンベディング技術の代表格です。単語の「周辺情報(同時に使われる単語)」を利用して、単語そのものをベクトル化します。「王様 – 男性 + 女性 ≈ 女王」のような、単語間の意味的な関係性を計算できることで有名になりました。
Word2Vecには、学習方法の違いによってCBOWとSkip-gramの2つのモデルがあります。
| 項目 | CBOW (Continuous Bag-of-Words) | Skip-gram |
|---|---|---|
| 予測方向 | 文脈 → 中心語 (例:「…wins next world…」から「cup」を予測) |
中心語 → 文脈 (例:「world」から「…wins, next, cup…」を予測) |
| 学習速度 | 高速 | 低速(1単語あたり複数回予測するため) |
| データ要件 | 少なめのデータでも可 | 大規模データで性能を発揮 |
| 得意分野 | 頻出語、統語関係(文法) | 稀少語、意味関係(単語のニュアンス) |
| 選択基準 | 小規模データ・高速化優先の場合 | 大規模データ・精度(意味)優先の場合 |
Word2Vecの限界は、あくまで「単語」単位であり、同じ「バンク」でも「川のバンク(土手)」と「銀行のバンク」を区別できない点でした。この「文脈理解」の問題を解決したのがBERTです。
BERTとTransformerの「注意機構(Attention)」
BERTは、Transformerアーキテクチャを用いた双方向の文脈理解モデルです。BERTがWord2Vecと決定的に違うのは、単語をベクトル化する際に、その単語が置かれた「文脈」全体を考慮する点です。
この文脈理解の核となるのが、注意機構(Attention Mechanism)です。
注意機構とは、文中のある単語を処理する際に、文中の「他のどの単語に注目すべきか」の重み(重要度)を動的に計算する仕組みです。
👨🏫 AI専門家が解説:注意機構(Attention)
【具体例】
文: 「犬が床に座り、それはとてもお腹が空いていた。」
BERTの処理: BERTが「それ」という単語のベクトルを計算する際、注意機構が働きます。文中の全単語(「犬」「床」「座り」…)との関連性を計算し、結果として「それ」は「床」(関連度10%)よりも「犬」(関連度90%)に強く「注意」を払うべきだと判断します。これにより、「それ」のベクトルには「犬」の意味が強く組み込まれます。
BERTは、この注意機構を双方向(単語の前後両方)で適用するため、Word2Vecでは不可能だった文脈に応じた豊かな意味表現を獲得できます。2025年現在のエンベディングモデル(Voyage, OpenAI, Cohere)も、すべてこのTransformerアーキテクチャを基礎としています。
第4章:2025年最新エンベディングモデル徹底比較
要約:2025年現在、精度ではVoyage-3-largeがOpenAIを凌駕。コスト重視ならGemini無料枠、多言語ならCohere、エコシステム重視ならOpenAIと、目的別に選択する時代です。
Word2VecやBERTは基礎理論となり、2025年10月現在、RAGの実践現場では以下の商用・OSSモデルがSOTA(State-of-the-Art)として利用されています。
① Voyage-3-large (Voyage AI)
- 最大の特徴: 2025年1月にリリースされ、現在、多くの汎用ベンチマークで最高性能を誇るエンベディングモデル。
- 性能: ベンチマーク(MTEB)において、OpenAIの`text-embedding-3-large`を平均9.74%、Cohereの`embed-v3`を20.71%上回ると報告されています。
- コンテキスト長: 32,000トークン。OpenAI(8,191)やCohere(512)を圧倒しており、Late Chunkingや長文検索に極めて有利です。
- 専門分野: 法律(voyage-law-2)や金融(voyage-finance-2)など、ドメイン特化版モデルも提供。
- 価格($ / 100万トークン):
voyage-3-large(4096次元): $0.18voyage-3.5-lite(1024次元): $0.02
② OpenAI text-embedding-3-large / small
- 最大の特徴: ChatGPTやGPT-4など、OpenAIのエコシステムと完全に統合されており、導入が最も容易。
- 性能: `large` (3072次元)は依然としてトップクラスの汎用性能を持ちます。
- 価格($ / 100万トークン):
text-embedding-3-large(3072次元): $0.13text-embedding-3-small(1536次元): $0.02
③ Cohere embed-v3
- 最大の特徴: RAGの「検索(Retrieval)」タスクに特化して設計されており、100以上の言語に対応する強力な多言語モデル。
- 性能: 特に多言語環境での検索精度に優れており、グローバル展開するサービスに最適です。
- 価格($ / 100万トークン):
embed-v3(1024次元): $0.10 (入力タイプにより変動)
選択基準(2025年)
どのモデルを選ぶべきかは、プロジェクトの要件によって明確に分かれます。
| 要件 | 推奨モデル |
|---|---|
| 純粋な精度(性能)重視 | Voyage-3-large(特に長文コンテキストが必要な場合) |
| コスト重視 / PoC | voyage-3.5-lite または OpenAI text-embedding-3-small ($0.02ライン) ※Google Gemini text-embedding-004には無料枠(2025/10時点)があり、PoCに最適。 |
| グローバル(多言語)対応 | Cohere embed-v3(100言語以上に対応) |
| 既存システム(OpenAI) との統合 |
OpenAI text-embeddingシリーズ(エコシステムが充実) |
第5章:コスト削減技術 (Matryoshka & Binary Quantization)
要約:高次元ベクトルは高コストですが、「Matryoshka」でメモリを75%、「Binary Quantization」で96%削減可能です。これらは2025年のRAG運用に必須の技術です。
Voyage-3 (4096次元) や OpenAI-large (3072次元) のような高次元ベクトルは高性能ですが、ベクトルDBのメモリ使用量とストレージコスト、検索速度に悪影響を与えます。このコストとパフォーマンスの問題を解決するのが「圧縮」技術です。
Matryoshka Embeddings(マトリョーシカ埋め込み)
Matryoshka(マトリョーシカ)は、ロシアの入れ子人形のように、**1つのベクトルに複数の解像度の情報を格納する**技術です。
通常、1024次元のベクトルは、1024次元すべてを使わなければ意味を成しません。しかしMatryoshka対応モデル(Voyage-3など)は、ベクトルの重要な情報を意図的に「前半」に集約するように学習されています。
- 仕組み: 4096次元のベクトルとして生成するが、最初の1024次元だけでも十分な精度を持ち、512次元だけでも機能し、256次元だけでもPoCレベルの精度を持つ。
- 実測効果:
- 1024次元のベクトルを256次元に削減しても精度99.5%を維持(※タスクによる)
- ベクトル計算時間(埋め込み)が高速化(例:0.55秒→0.30秒)
- DBのメモリ・ストレージサイズが75%削減(例:2,266KB→566KB)
- 用途: RAGの本番環境で、精度をほぼ落とさずにDBコストを1/4に削減する。
Binary Quantization(バイナリ量子化)
Binary Quantization(2値量子化)は、さらにアグレッシブな圧縮技術です。各ベクトルの値(例:-0.08, 0.25)を「0」か「1」の1ビットに圧縮します。
- 仕組み: ベクトルの各次元の値を「0より大きいか、小さいか」だけで判断(例:`float32` → `1 bit`)。
- `[-0.1, 0.5, 0.0, -0.9]` → `[0, 1, 1, 0]` (※0を1とする場合もある)
- 実測効果:
- メモリ使用量: 96%以上削減(32ビット→1ビット)。100万ベクトルで900MB必要だったDBが、128MB程度で済む計算。
- 検索速度: 最大40倍高速化。数値計算(コサイン類似度)が、超高速なブール演算(ハミング距離)に置き換わるため。
注意点: バイナリ化は情報損失が大きいため、単体で使うと精度が大きく劣化します(特に768次元未満)。
💡 推奨戦略(2段階検索)
2025年の大規模RAGでは、Binary Quantizationとフル精度ベクトルを組み合わせるのが最適解です。
- 第1段階(検索): バイナリベクトルを使い、超高速(40倍速)・低コスト(96%減)で、関連する可能性のある候補を100件「過剰に」抽出する。
- 第2段階(再評価): 抽出した100件に対してのみ、フル精度のベクトル(またはMatryoshkaの256次元ベクトル)を使って高精度な「リスコアリング(再ランキング)」を行い、最終的なトップ5件を決定する。
この手法により、システム全体として「高精度・高速・低コスト」を両立できます。
第6章:RAG実装のベストプラクティス(2025年)
要約:2025年のRAG推奨スタックは「Late Chunking」+「Voyage-3 (Matryoshka 256次元)」+「Cohere Reranker」の組み合わせ。評価は「Recall@k」と「MRR」で行います。
これまでの技術を踏まえ、2025年10月時点でのRAG実装の推奨スタック(組み合わせ)と評価指標を解説します。
① チャンキング戦略
- セマンティックチャンキング: トピックの境界(例:章、節)で分割。法律文書や医療文書など、構造が明確な場合に高精度。
- 固定サイズ + オーバーラップ: 512トークン、128トークンオーバーラップ(重複)。あらゆる文書に対応できる汎用的な手法。
- Late Chunking(推奨): 長文(数千トークン)のPDFやWebページを扱う場合。文脈保持能力が最も高く、検索精度が向上します。(第2章参照)
② エンベディングモデル選択
- 精度重視:
Voyage-3-largeをMatryoshkaで 512次元 or 1024次元に圧縮して使用。 - コスト重視:
voyage-3.5-liteをMatryoshkaで 256次元に圧縮、またはOpenAI text-embedding-3-smallを使用。 - 多言語対応:
Cohere embed-v3を使用。
③ リランキング(再順位付け)
エンベディングによる検索(第1段階)は、完璧ではありません。ノイズ(無関係な文書)が混入します。そのため、検索結果(例:上位20件)を、より高精度な「リランカー(Reranker)」モデル(例:Cohere Rerank)で再評価(第2段階)し、本当に重要なトップ3件に絞り込む手法が事実上の標準(デファクトスタンダード)です。
(※Binary Quantization(第5章)は、この第1段階を高速化する技術です)
④ 評価指標
RAGの検索性能は、以下の指標で評価します。
- Recall@k (再現率@k): 上位k件(例:k=5)の検索結果に、正解の文書が含まれている割合。RAGでは最も重要な指標の一つ(例:Recall@5が95%以上を目指す)。
- MRR (Mean Reciprocal Rank): 正解の文書が、検索結果の「何番目」に来たかの逆数平均。順位が早いほどスコアが高く(1位なら1.0、2位なら0.5)、検索の「質」を測れます。
- NDCG (Normalized Discounted Cumulative Gain): 順位を考慮した精度評価。1位の正解は10位の正解より価値が高い、という重み付けを行います。
第7章:(補遺)カテゴリデータの基礎と前処理
要約:(補足)RAGのメタデータとしても利用される「カテゴリデータ」は、「名義尺度」と「順序尺度」に分類され、機械学習で扱うには前処理(エンコーディング)が必要です。
※本章は、RAGのエンベディングとは異なりますが、機械学習におけるデータ表現の基礎として補足します。RAGシステムにおいては、これらのカテゴリ情報が「メタデータ」としてベクトルDBに格納され、検索時のフィルタリング(例:「カテゴリ=人事」の文書のみ検索)に利用されます。
カテゴリデータの基礎
カテゴリデータは、項目やラベルを区別するために使用される離散的なデータの一種です。主に以下の2つのタイプがあります。
- 名義尺度: 順序や大小関係のない分類データ。例えば、血液型(A型、B型、O型、AB型)や性別(男性、女性)などが該当します。
- 順序尺度: カテゴリ間に順序関係がある分類データ。例えば、学歴(小学校、中学校、高校、大学)や満足度(不満、やや不満、普通、やや満足、満足)などが該当します。
カテゴリデータは数値データとは異なり、算術演算(加減乗除)を適用することはできません。そのため、統計分析や機械学習モデルで使用する際には、適切な前処理や特殊な分析手法が必要となります。
カテゴリデータの前処理について
カテゴリデータを機械学習モデルで使用するには、適切な前処理(数値化)が不可欠です。
- ラベルエンコーディング: カテゴリを整数値に変換します。例えば、「赤、青、黄」を「0、1、2」に置き換えます。決定木系のモデルに適しています。
- ワンホットエンコーディング: 各カテゴリを二進数のベクトルに変換します。例えば、「赤、青、黄」を「 [ 1, 0, 0 ]、[ 0, 1 ,0 ]、[ 0, 0, 1 ] 」に変換します。カテゴリ数が少ない場合や線形モデルに有効です。
- カウントエンコーディング: 各カテゴリの出現回数で置き換えます。例えば、「赤」が3回、「青」が5回、「黄」が2回出現する場合、それぞれ「3、5、2」に変換します。
- ターゲットエンコーディング: 各カテゴリを目標変数の期待値に置き換えます。例えば、「赤」の購買率が0.3、「青」が0.5、「黄」が0.2の場合、それぞれの値に置き換えます。
これらの手法は、データの特性や使用するモデルに応じて選択します。
まとめ
RAGシステムにおけるエンベディング技術は、単なる「ベクトル化」から、「コスト」「速度」「精度」を極限まで最適化するフェーズに移行しています。2025年現在、基礎理論の理解だけでは十分ではなく、最新技術の動向を把握することが不可欠です。
- 理論: ベクトル空間、コサイン類似度、ANN(HNSW)が基礎となります。
- モデル: 2025年は、Voyage-3-largeがOpenAIを凌駕する性能を示しています。
- 精度: Late Chunking(文脈保持)とReranker(再評価)の組み合わせが必須です。
- コスト: Matryoshka(75%減)とBinary Quantization(96%減)の圧縮技術が、大規模運用の鍵となります。
これらの最新技術を適切に選択・組み合わせることが、RAGシステムの性能を最大化し、AIプロジェクトを成功に導くための最も重要なステップです。
Key Takeaways(持ち帰りポイント)
- RAGの精度は「チャンキング」で決まる。文脈を失う従来型を避け、「Late Chunking」を検討する。
- モデルはVoyage-3が最高性能。ただしコストと精度のバランスでOpenAI, Cohereも有力な選択肢。
- コスト爆発は「Matryoshka」と「Binary Quantization」で防ぐ。メモリを最大96%削減し、高速化も可能。
専門用語まとめ
- Late Chunking
- 文書を分割(チャンク化)する前に、文書全体でエンベディング処理を行い、文脈を保持したままベクトルを生成する技術。
- Matryoshka Embeddings
- ロシアの入れ子人形のように、1つのベクトルに複数の解像度(次元)の情報を格納する技術。精度を維持したままベクトルを短縮し、コストを削減できる。
- Binary Quantization
- ベクトル値をfloat32(32ビット)から1ビット(0 or 1)に圧縮する技術。メモリを96%以上削減し、検索を高速化する。
- Attention Mechanism(注意機構)
- Transformerモデルの核となる技術。文中のある単語を処理する際、他のどの単語に「注意」すべきかの重みを計算し、文脈を理解する。
- Reranker(リランカー)
- RAGの第1段階(検索)で取得した候補を、より高精度なモデルで再評価し、順位を付け替える第2段階の処理。
よくある質問(FAQ)
Q1. Word2VecやBERTはもう古いのですか?
A1. RAGのエンベディングモデルとしては、より高性能なVoyage-3やOpenAI-3が主流です。しかし、BERTの基盤であるTransformer(注意機構)は、これら最新モデルの基礎となっており、理論の理解は依然として重要です。
Q2. Late Chunkingはどのモデルでも使えますか?
A2. いいえ。Jina AIの`jina-embeddings-v2`や`Voyage-3`(32kトークン)など、数千トークン以上の「長文コンテキスト」を一度に処理できるエンベディングモデルが必要です。
Q3. チャンキングサイズはどれくらいが良いですか?
A3. 決まった正解はありませんが、一般的には512トークン前後(+128トークンのオーバーラップ)から始めるのが標準的です。ただし、精度を追求するならLate Chunkingの導入を推奨します。
Q4. Matryoshka Embeddingsはどのモデルで使えますか?
A4. 2025年10月現在、Voyage-3シリーズや一部のCohere、Jina AIモデルが対応しています。モデル自体がMatryoshkaを意図して学習されている必要があります。
Q5. Binary Quantizationで精度が落ちませんか?
A5. 単体で使うと精度は落ちます。そのため、第1段階の「高速な候補絞り込み」にのみ使用し、第2段階で「フル精度のベクトル(またはMatryoshkaベクトル)」で再評価(リスコアリング)する併用戦略が必須です。
主な参考サイト
- Voyage AI Blog (Voyage-3 Launch)(2025)
- Jina AI Blog (Late Chunking)(2024)
- Matryoshka Representation Learning (arXiv)(2022)
- Cohere Rerank Official Page(2025)
- OpenAI Embedding Models Blog(2024)
合わせて読みたい
- RAGとは?仕組み・重要性を図解で徹底解説(2025年版)(総論)
- RAGの精度を上げるチャンク分割最適化(技術特化 Chunk)
- ベクトルDB完全比較とRAG最新活用(技術特化 DB)
- RAGデータパイプライン構築ガイド|ETLと前処理(技術特化 ETL)
- RAG用語集(重要概念と図解)(用語リファレンス)
更新履歴
- 初版公開
- 最新情報にアップデート、読者支援機能の強化(最新エンベディングモデル(Voyage-3)、コスト削減技術(Matryoshka/Binary Quantization)、Late Chunking技術を追加)