# 埋め込みモデルの選択

## 埋め込みモデルとは

![](/files/FnKdRBb9R6SPLr61WigY)

埋め込みモデル（Embedding Model）は、テキストを固定長の数値ベクトル（埋め込みベクトル）に変換するAIモデルです。ベクトル同士の距離（コサイン類似度など）を計算することで、テキスト間の**意味的な近さ**を定量的に比較できます。

### 埋め込みのイメージ

埋め込みとは、テキストの意味を捉えた高次元（数百〜数千次元）の数値ベクトルです。

例えば、

* 「犬」と「猫」→ どちらもペット・動物なので、ベクトル空間上で**近い位置**に配置
* 「犬」と「自動車」→ 意味的に関連が薄いため、**遠い位置**に配置

このベクトル化により、単純なキーワード一致だけでなく、\*\*意味的に類似した文書の検索（セマンティック検索）\*\*が可能になります。

## 主な用途

* **RAG（検索拡張生成）**：生成AIが回答するための関連文書検索
* **セマンティック検索**：表記揺れや同義語に対応した情報検索
* **分類・クラスタリング**：文書の自動分類やグルーピング
* **レコメンデーション**：類似記事や類似商品の提案

## 代表的な埋め込みモデルの候補

現在主流のモデルは以下の通りです。用途とコストに合わせて選定してください。

### 1. OpenAI (text-embedding-3 シリーズ)

業界標準として広く利用されています。前世代（ada-002）と比較して性能が向上し、コストが低下しています。

* **text-embedding-3-small**
  * 特徴: 高速かつ非常に低コスト、一般的な用途には十分な性能
  * 次元数: 1536
* **text-embedding-3-large**
  * 特徴: 高精度、多言語や複雑なタスクでより良い性能発揮、smallより高価
  * 次元数: 3072

### 2. Cohere (Embed v3 シリーズ)

検索品質（Rerank等との組み合わせ）や多言語対応に強みを持ちます。

* **embed-multilingual-v3.0**
  * 特徴: 100以上の言語対応、日本語の精度高、検索用途に特化した学習
  * 次元数: 1024

### 3. Google (Vertex AI text-embedding シリーズ)

Google Cloud環境を利用している場合に親和性が高いモデルです。

* **text-embedding-004** (Gecko系)
  * 特徴: 多言語対応（日本語含む）、タスクタイプ（検索クエリ、文書、分類など）を指定して埋め込みを生成できる機能搭載
  * 次元数: 768

### 4. オープンソース / ローカルモデル

Hugging Face等で公開されているモデルを自社サーバーで運用する場合です。

* **代表例**: E5 (multilingual-e5)、BGE (BAAI General Embedding) シリーズ
* **メリット**: データが外部に出ない、ランニングコストが計算リソースのみ
* **デメリット**: インフラ構築・保守の手間が発生

## モデル選定のポイント

### 1. 言語対応能力

日本語特有の文脈理解が必要な場合、多言語モデル（Multilingual）の性能評価（MTEBリーダーボードの日本語スコアなど）を確認するか、実データで検証することが推奨されます。

### 2. 精度・速度・コストのバランス

高精度なモデル（次元数が大きいモデル）は、ベクトルDBのストレージ容量と検索計算コストを増加させます。大規模なナレッジベース（数百万件以上）の場合、保存コストとレイテンシへの影響が大きくなるため、smallモデルや量子化技術の検討が必要です。

### 3. ベクトルDBとの適合性

利用するベクトルデータベースが推奨する次元数や距離関数（コサイン類似度、ドット積など）を確認してください。OpenAIの新しいモデルなどは次元数を短縮（短縮しても性能劣化が少ない）する機能を持つものもあります。

## 導入・運用上の注意

### 一度選定したモデルは変更が困難

埋め込みモデルを変更する場合、データベース内の\*\*全ドキュメントを新しいモデルで再度ベクトル化（Re-indexing）\*\*する必要があります。運用途中での変更はコストと時間がかかるため、初期の選定と小規模なPoC（概念実証）が重要です。

### ハイブリッド検索の推奨

ベクトル検索だけでは「品番」や「固有名詞」の完全一致検索に弱い場合があります。実運用では、\*\*ベクトル検索（意味）＋キーワード検索（語句）\*\*を組み合わせたハイブリッド検索の実装を強く推奨します。

## 設定手順（一般的な流れ）

1. **モデル選定**: 要件（精度・コスト・言語）に基づきモデルを決定
2. **チャンク化**: 文書を適切な長さ（例: 500\~1000文字）に分割
3. **埋め込み生成**: API等を通じてベクトルデータを取得
4. **DB保存**: ベクトルDBにメタデータと共に保存
5. **検索テスト**: 想定される質問で検索精度を確認し、必要に応じてチャンクサイズや検索パラメータ（TopK, 閾値）を調整

## 埋め込みモデルの設定

### 設定手順

![CleanShot 2025-12-24 at 14.03.43.png](/files/3YGSXdvBlwUrsd9E4IGM)

1. ナレッジベース作成時に埋め込みモデルを選択
2. またはドキュメント追加時に選択

### 注意事項

* 一度設定した埋め込みモデルは後から変更不可
* 変更する場合はナレッジベースの再作成が必要

> ※DHKK 環境では設定画面にドロップダウン形式でモデルが表示されますが、ナレッジベース作成後は変更できません。初期設定時に慎重に選択してください。変更が必要な場合はナレッジベースを再作成する必要があります。

* 同じアプリ内で異なる埋め込みモデルのナレッジを混在可能


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalhumans.jp/dify-guide/knowledge-base/dify-docs-choose-embedding-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
