1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2025年完全版】Embeddingモデル徹底比較ガイド:Roo Code/Cursor対応、日本語・コード検索に最適なモデルはこれだ!

1
Posted at

はじめに

Roo Code、Cline、その他のAIコーディングアシスタントで「Codebase Indexing」機能を使ったことはありますか?

この機能を使うと、自然言語で「認証処理どこ?」と聞くだけで、関連するコードを瞬時に見つけ出せます。従来のgrep検索では「login」「auth」「認証」など複数の単語で検索する必要がありましたが、セマンティック検索なら一発です。

この魔法を実現するのがEmbeddingモデルベクトルデータベース(Qdrant) の組み合わせです。

本記事では、日本語とコードの両方を扱う開発者向けに、最適なEmbeddingモデルを徹底比較します。


目次

  1. Embeddingとは何か?仕組みを図解で理解
  2. Qdrantの役割とアーキテクチャ
  3. Embeddingモデル完全比較表
  4. プロバイダー別おすすめモデル
  5. 日本語対応モデルの選び方
  6. コード検索に特化したモデル
  7. ローカルモデル(Ollama)の選択肢
  8. Roo Code での設定方法
  9. まとめ:用途別おすすめモデル

Embeddingとは何か?仕組みを図解で理解

テキストをベクトルに変換する

Embeddingとは、テキストを**数値の配列(ベクトル)**に変換する技術です。

┌─────────────────────────────────────────────────────────────────────┐
│                    テキスト → ベクトル変換                             │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  「犬が走る」                                                        │
│       ↓                                                             │
│  [0.23, -0.45, 0.89, 0.12, -0.67, 0.34, ...]  ← 1536〜3072次元      │
│                                                                     │
│  「猫が歩く」                                                        │
│       ↓                                                             │
│  [0.21, -0.42, 0.85, 0.15, -0.63, 0.31, ...]  ← 似た意味=似た数値    │
│                                                                     │
│  「経済政策」                                                        │
│       ↓                                                             │
│  [-0.78, 0.56, -0.23, 0.91, 0.44, -0.12, ...] ← 違う意味=違う数値    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

重要なポイント: 意味が似ているテキストは、似たベクトル(数値配列)に変換されます。

ベクトル空間のイメージ

実際には1536〜3072次元ですが、2次元に簡略化すると:

                    ↑ 次元2
                    │
                    │    ★「猫が寝る」
                    │  ★「犬が走る」
                    │
    ────────────────┼──────────────────→ 次元1
                    │
                    │
         ★「経済政策」
                    │
                    
  ※ 近い位置にあるテキスト = 意味が似ている

Qdrantの役割とアーキテクチャ

Qdrantとは?

Qdrantはベクトルデータベースです。通常のデータベースが「完全一致検索」をするのに対し、Qdrantは「類似度検索」ができます。

┌─────────────────────────────────────────────────────────────────────┐
│                     通常のDB vs ベクトルDB                            │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   通常のDB(MySQL等)          Qdrant(ベクトルDB)                   │
│   ┌─────────────────┐         ┌─────────────────┐                  │
│   │ ID │ 名前 │ 年齢 │         │ ID │ ベクトル      │                │
│   ├────┼──────┼─────┤         ├────┼──────────────┤                │
│   │ 1  │ 田中 │ 25  │         │ 1  │ [0.2, -0.5, │                │
│   │ 2  │ 山田 │ 30  │         │    │  0.8, ...]   │                │
│   └─────────────────┘         └─────────────────┘                  │
│                                                                     │
│   検索: WHERE 名前='田中'      検索: このベクトルに近いものは?          │
│   → 完全一致のみ              → 意味的に似たものを発見!               │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Codebase Indexing の全体フロー

┌─────────────────────────────────────────────────────────────────────┐
│              Roo Code Codebase Indexing 全体フロー                    │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  【Phase 1: インデックス作成(初回のみ)】                              │
│                                                                     │
│   ソースコード                                                       │
│   src/                                                              │
│   ├── auth.ts        ─┐                                            │
│   ├── api.ts          │  Tree-sitter で                            │
│   ├── utils.ts        ├─ 関数・クラス単位に分割                       │
│   └── components/    ─┘  (チャンク化)                               │
│          │                                                          │
│          ▼                                                          │
│   ┌──────────────────────────────────────────┐                     │
│   │ チャンク1: function login() { ... }      │                     │
│   │ チャンク2: class UserService { ... }     │                     │
│   │ チャンク3: async function fetchAPI() ... │                     │
│   └──────────────────────────────────────────┘                     │
│          │                                                          │
│          ▼  Embedding API                                          │
│   ┌──────────────────────────────────────────┐                     │
│   │ ベクトル1: [0.23, -0.45, ...]            │                     │
│   │ ベクトル2: [-0.12, 0.78, ...]            │                     │
│   │ ベクトル3: [0.56, 0.34, ...]             │                     │
│   └──────────────────────────────────────────┘                     │
│          │                                                          │
│          ▼  Qdrant に保存                                           │
│   ┌──────────────────────────────────────────┐                     │
│   │           Qdrant (Vector DB)             │                     │
│   │  ベクトル + メタデータ(ファイル名、行番号)  │                     │
│   └──────────────────────────────────────────┘                     │
│                                                                     │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  【Phase 2: 検索(日常的に使用)】                                     │
│                                                                     │
│   ユーザー: 「認証処理どうなってる?」                                  │
│          │                                                          │
│          ▼  Embedding API                                          │
│   クエリベクトル: [0.21, -0.43, ...]                                 │
│          │                                                          │
│          ▼  Qdrant で類似検索(コサイン類似度)                        │
│   ┌──────────────────────────────────────────┐                     │
│   │ 類似度スコア順:                           │                     │
│   │ 1. auth.ts (0.92) → login()関数          │                     │
│   │ 2. middleware.ts (0.85) → authCheck()    │                     │
│   │ 3. user.ts (0.78) → validateToken()      │                     │
│   └──────────────────────────────────────────┘                     │
│          │                                                          │
│          ▼  Roo Code が関連コードを取得・回答                         │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Embeddingモデル完全比較表

クラウドAPI モデル

プロバイダー モデル名 次元数 MTEB MIRACL コード特化 日本語 価格 (1M tokens)
OpenAI text-embedding-3-large 3072 64.6% 54.9% ✅ 良好 $0.13
OpenAI text-embedding-3-small 1536 62.3% 44.0% $0.02
Mistral Codestral Embed 1024 - - ⭐ 最強 $0.05
Mistral mistral-embed 1024 77.8% - $0.10
Voyage voyage-code-3 1024 - - ⭐ 優秀 $0.06
Voyage voyage-3 1024 67.3% - $0.06
Voyage voyage-multilingual-2 1024 - 66.1% ✅ 優秀 $0.12
Cohere embed-v4.0 1024 66.3% - ✅ 良好 $0.10
Google text-embedding-004 768 ~63% ~45% 無料
Jina jina-embeddings-v3 1024 65.5% - ✅ 優秀 $0.02
Jina jina-embeddings-v4 1024 66.2% - ✅ 優秀 $0.02

ローカルモデル(Ollama)

モデル名 次元数 MTEB メモリ 速度 日本語
mxbai-embed-large-v1 1024 64.68% 1.2GB 高速
nomic-embed-text 768 53.01% 0.5GB 超高速
bge-large-en-v1.5 1024 63.98% 1.4GB 中速
Qwen3-Embedding-8B 4096 ~65% 8GB 中速 ✅ 優秀
nomic-embed-code 768 - 0.5GB 超高速

プロバイダー別おすすめモデル

1. OpenAI(バランス型・おすすめ)

┌─────────────────────────────────────────────────────────────────────┐
│                    OpenAI Embedding モデル                           │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ⭐ text-embedding-3-large(おすすめ)                               │
│  ├── 次元数: 3072(最大)                                           │
│  ├── MTEB: 64.6%                                                   │
│  ├── MIRACL: 54.9%(日本語含む多言語で大幅改善)                      │
│  ├── 価格: $0.13 / 1M tokens                                       │
│  └── 特徴: 汎用性最高、日本語+コード両対応                            │
│                                                                     │
│  text-embedding-3-small(コスト重視)                                │
│  ├── 次元数: 1536                                                  │
│  ├── MTEB: 62.3%                                                   │
│  ├── MIRACL: 44.0%                                                 │
│  ├── 価格: $0.02 / 1M tokens(6.5倍安い)                           │
│  └── 特徴: コスト重視だが性能も十分                                  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

選び方:

  • 日本語コメント多め → text-embedding-3-large
  • コスト最優先 → text-embedding-3-small

2. Mistral(コード特化で最強)

┌─────────────────────────────────────────────────────────────────────┐
│                    Mistral Embedding モデル                          │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ⭐ Codestral Embed(コード検索最強)                                │
│  ├── 次元数: 1024                                                  │
│  ├── コード検索: OpenAI, Voyage, Cohereを上回る                      │
│  ├── 価格: $0.05 / 1M tokens                                       │
│  └── 特徴: コード検索に特化、実世界タスクで最高性能                    │
│                                                                     │
│  mistral-embed(汎用高精度)                                         │
│  ├── 次元数: 1024                                                  │
│  ├── 精度: 77.8%(汎用モデルで最高クラス)                           │
│  ├── 価格: $0.10 / 1M tokens                                       │
│  └── 特徴: 汎用タスクで最高精度                                      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

選び方:

  • コード検索重視 → Codestral Embed(2025年5月リリース、最新)
  • 日本語コメントは少ない → Codestral Embed で十分

3. Voyage AI(コード+多言語の両立)

┌─────────────────────────────────────────────────────────────────────┐
│                    Voyage AI Embedding モデル                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  voyage-code-3(コード特化)                                         │
│  ├── 次元数: 1024                                                  │
│  ├── 価格: $0.06 / 1M tokens                                       │
│  └── 特徴: コード検索に特化(Codestralに次ぐ性能)                    │
│                                                                     │
│  ⭐ voyage-multilingual-2(多言語特化)                              │
│  ├── 次元数: 1024                                                  │
│  ├── MIRACL: 66.1%(多言語で最高クラス)                             │
│  ├── 価格: $0.12 / 1M tokens                                       │
│  └── 特徴: 日本語コメント+多言語ドキュメント向け                       │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

選び方:

  • 英語コードのみ → voyage-code-3
  • 日本語ドキュメント多め → voyage-multilingual-2

4. Google Gemini(無料で始めるなら)

┌─────────────────────────────────────────────────────────────────────┐
│                    Google Embedding モデル                           │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ⭐ text-embedding-004(無料!)                                     │
│  ├── 次元数: 768                                                   │
│  ├── MTEB: ~63%                                                    │
│  ├── 価格: 無料(Google AI Studio)                                 │
│  └── 特徴: 無料で十分な性能、入門に最適                              │
│                                                                     │
│  注意点:                                                            │
│  - 無料枠はデータが学習に使用される可能性あり                         │
│  - 商用利用は有料プラン推奨                                          │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5. Jina AI(コスパ最強+多言語)

┌─────────────────────────────────────────────────────────────────────┐
│                    Jina AI Embedding モデル                          │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ⭐ jina-embeddings-v3(おすすめ)                                   │
│  ├── 次元数: 1024(可変)                                           │
│  ├── コンテキスト: 8192トークン(長文対応)                           │
│  ├── 言語: 94言語対応(日本語優秀)                                  │
│  ├── 価格: $0.02 / 1M tokens(最安クラス)                          │
│  └── 特徴: OpenAI、Cohereを上回る性能でコスト1/6                     │
│                                                                     │
│  jina-embeddings-v4(最新・マルチモーダル)                           │
│  ├── 次元数: 1024                                                  │
│  ├── 特徴: テキスト+画像のマルチモーダル対応                          │
│  └── 用途: ドキュメント検索、画像検索の統合                           │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

6. Cohere(エンタープライズ向け)

┌─────────────────────────────────────────────────────────────────────┐
│                    Cohere Embedding モデル                           │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  embed-v4.0                                                         │
│  ├── 次元数: 1024                                                  │
│  ├── MTEB: 66.3%                                                   │
│  ├── 多言語: 100+言語対応                                           │
│  ├── 価格: $0.10 / 1M tokens                                       │
│  └── 特徴: ノイズデータに強い、エンタープライズ向け                    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

日本語対応モデルの選び方

MIRACLベンチマーク(多言語検索)での比較

┌─────────────────────────────────────────────────────────────────────┐
│                  MIRACL ベンチマーク(日本語含む18言語)                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  voyage-multilingual-2                                              │
│  █████████████████████████████████████████████████  66.1% ← 最強   │
│                                                                     │
│  text-embedding-3-large (OpenAI)                                    │
│  ███████████████████████████████████████░░░░░░░░░░  54.9%          │
│                                                                     │
│  text-embedding-3-small (OpenAI)                                    │
│  ████████████████████████████░░░░░░░░░░░░░░░░░░░░░  44.0%          │
│                                                                     │
│  text-embedding-004 (Google)                                        │
│  ██████████████████████████░░░░░░░░░░░░░░░░░░░░░░░  ~45%           │
│                                                                     │
│  text-embedding-ada-002 (OpenAI旧)                                  │
│  ████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  31.4%          │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

日本語特化モデル

モデル 特徴 用途
Ruri (るり) 日本語に特化した学術モデル 日本語ドキュメント検索
Qwen3-Embedding 中国語・日本語で強い ローカル運用可能
multilingual-e5-large オープンソースで多言語 無料で日本語対応

コード検索に特化したモデル

コード検索ベンチマーク(2025年最新)

┌─────────────────────────────────────────────────────────────────────┐
│                コード検索性能ランキング(2025年)                      │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  1位: Codestral Embed (Mistral) ⭐⭐⭐⭐⭐                            │
│  └── 実世界のコード検索タスクで最高性能                               │
│                                                                     │
│  2位: voyage-code-3 (Voyage) ⭐⭐⭐⭐                                 │
│  └── コード特化で安定した性能                                        │
│                                                                     │
│  3位: Cohere embed-v4.0 ⭐⭐⭐⭐                                      │
│  └── コードにも対応した汎用モデル                                     │
│                                                                     │
│  4位: text-embedding-3-large (OpenAI) ⭐⭐⭐                         │
│  └── 汎用性高いがコード特化ではない                                   │
│                                                                     │
│  5位: nomic-embed-code (ローカル) ⭐⭐⭐                              │
│  └── 無料・ローカルでコード特化                                      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

ローカルモデル(Ollama)の選択肢

プライバシー重視・オフライン環境向け

# Ollama でEmbeddingモデルをインストール
ollama pull nomic-embed-text      # 軽量・高速
ollama pull mxbai-embed-large     # 高精度
ollama pull qwen3-embedding       # 日本語対応

Ollamaモデル比較

モデル メモリ 速度 精度 日本語 おすすめ用途
nomic-embed-text 0.5GB ⚡超高速 軽量・入門
mxbai-embed-large 1.2GB ⚡高速 バランス型
bge-large-en 1.4GB ○ 中速 英語特化
Qwen3-Embedding-8B 8GB ○ 中速 日本語重視

ローカル運用のメリット・デメリット

┌─────────────────────────────────────────────────────────────────────┐
│                    ローカル vs クラウド                               │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ローカル(Ollama)                クラウド(OpenAI等)              │
│  ✅ 完全無料                       ✅ 高精度                        │
│  ✅ プライバシー保護                ✅ 設定簡単                      │
│  ✅ オフライン動作                  ✅ メンテ不要                    │
│  ❌ GPUメモリ必要                   ❌ 有料                         │
│  ❌ 精度はやや劣る                  ❌ データ送信必要                │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Roo Codeでの設定方法

Step 1: Qdrantのセットアップ

ローカルDocker(推奨・無料):

docker run -d \
  --name qdrant \
  --restart unless-stopped \
  -p 6333:6333 \
  -v qdrant_data:/qdrant/storage \
  qdrant/qdrant

Qdrant Cloud:

  1. https://cloud.qdrant.io/ でアカウント作成
  2. クラスター作成
  3. URL と API Key を取得

Step 2: Roo Code設定

  1. Roo Code パネルを開く
  2. チャット入力欄右下のデータベースアイコンをクリック
  3. 以下を設定:
項目 設定値
Embedder Provider 選択したプロバイダー
API Key 取得したAPIキー
Model 選択したモデル
Qdrant URL http://localhost:6333 または Cloud URL
Qdrant API Key ローカルは空欄 / Cloudは取得したキー
  1. Save and Start Indexing をクリック

ステータス確認

  • 🟢 緑: インデックス完了
  • 🟡 黄: インデックス中
  • 🔴 赤: エラー
  • ⚪ 灰: 未設定

まとめ:用途別おすすめモデル

最終推奨表

用途 第1候補 第2候補 理由
日本語+コード(バランス) text-embedding-3-large jina-embeddings-v3 MIRACL 54.9%で日本語強い
コード検索特化 Codestral Embed voyage-code-3 コード検索ベンチマーク最強
日本語ドキュメント重視 voyage-multilingual-2 jina-embeddings-v3 MIRACL 66.1%で多言語最強
無料で始める text-embedding-004 nomic-embed-text 完全無料
ローカル運用 mxbai-embed-large Qwen3-Embedding プライバシー保護
コスパ重視 jina-embeddings-v3 text-embedding-3-small $0.02/1M tokens

筆者の選択

私は text-embedding-3-large を使用しています。

理由:

  1. 日本語コメント・ドキュメントが多い(MIRACL 54.9%)
  2. コードも十分に検索できる
  3. OpenAI APIは安定・高速
  4. 3072次元で詳細なセマンティック表現
  5. データが学習に使用されない(有料API)

参考リンク


この記事は2025年12月時点の情報です。Embeddingモデルは日々進化しているため、最新のベンチマークを確認することをおすすめします。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?