Difyの埋め込みモデルとは?RAGの仕組みから理解する

室谷今回はDifyの埋め込みモデルをテーマに話しましょう。これ、.AI(ドットエーアイ)コミュニティでも「設定が難しい」「どれを選べばいいかわからない」という声が多いんですよね。
テキトー教師そうなんです。ナレッジベースの作成画面まではたどり着けるんですけど、「埋め込みモデルって何を選べばいいの?」という質問が本当に多くて。
エラーが出て止まってしまう方も結構いますね。
エラーが出て止まってしまう方も結構いますね。
室谷まず基本から整理しましょう。Difyで「埋め込みモデル(Embedding Model)」というのは、テキストをベクトル(数値のリスト)に変換するためのモデルです。
RAGの仕組みの核心部分ですね。
RAGの仕組みの核心部分ですね。
テキトー教師RAGを簡単に説明すると、「ユーザーの質問に関連する情報をナレッジベースから探してきて、それをLLMの回答に使う」という仕組みです。この「関連する情報を探す」部分で埋め込みモデルが使われます。
室谷具体的に言うと、ドキュメントを登録するときに「このテキストは数学的にはこういう意味を持つ」という形でベクトル化して保存しておく。質問が来たら質問もベクトル化して、似たベクトルのテキストを引っ張ってくる・・・という流れです。
テキトー教師つまり、埋め込みモデルの精度が上がれば、関連情報の検索精度も上がる。「なぜか的外れな回答が返ってくる」という問題は、LLMではなく埋め込みモデルの選択に原因があることも多いんです。
室谷そこ、めちゃくちゃ重要なポイントですね。RAGの精度を上げようとしてLLMをグレードアップしても効果が薄いことがあって、埋め込みモデルを変えたら一気に改善したという事例がMYUUUのプロジェクトでもあります。
テキトー教師講座でよく言うのが「LLMは喋るための頭、埋め込みモデルは探すための目」という表現です。目がぼんやりしていたら、どんなに頭が良くても正確な情報を使えない。
室谷なるほど、わかりやすい。前回はDifyのナレッジベース全体の使い方を解説しましたが、今回は埋め込みモデルに特化して深掘りしていきます。
Difyで使える埋め込みモデルの種類と特徴

室谷では、実際にDifyで使える埋め込みモデルの種類を整理しましょう。大きく分けると「APIベース(クラウド)」と「ローカル」の2種類です。
テキトー教師コミュニティのメンバーさんから「無料で使える埋め込みモデルはありますか?」という質問がよく来るので、その観点でも整理しておきたいですね。
室谷Difyの設定画面を開くと、「モデルプロバイダー」の中にEmbeddingのセクションがあります。そこで選べる主要なプロバイダーをまとめると、こうなります。
| プロバイダー | 代表モデル | 費用 | 特徴 |
|---|---|---|---|
| OpenAI | text-embedding-3-small / large | 有料($0.02/1M tokens程度) | 精度が高く安定している |
| Cohere | embed-multilingual-v3.0 | 有料・無料枠あり | 多言語対応が強い |
| Google(Gemini) | text-embedding-004 | 有料・無料枠あり | Gemini API経由で利用 |
| Ollama | nomic-embed-text等 | 無料(ローカル実行) | 完全無料・データが外に出ない |
| Azure OpenAI | text-embedding-ada-002等 | 有料 | 企業向けセキュリティ対応 |
テキトー教師この表を見て受講生さんがよく言うのが「Ollamaが無料なら全部Ollamaでいいのでは?」なんですが・・・
室谷ローカルなのでPCのスペックに依存するんですよね。日本語の精度もAPIベースのモデルと比較すると差が出る場合があります。
とはいえ、プライベートなデータを扱う場合やコスト最優先の場合はOllamaが有力な選択肢になります。
とはいえ、プライベートなデータを扱う場合やコスト最優先の場合はOllamaが有力な選択肢になります。
テキトー教師日本語のRAGを作る場合、Cohereの
embed-multilingual-v3.0か、OpenAIのtext-embedding-3-smallが使いやすいと感じています。Cohereは特に多言語性能をうたっているので、日本語コンテンツを扱うなら試す価値がありますね。
室谷MYUUUでは用途によって使い分けています。コスト重視のプロジェクトにはOllama、精度重視のエンタープライズ案件にはOpenAIかAzure OpenAI、という感じで。
無料で使える埋め込みモデルの選び方
テキトー教師「dify 埋め込みモデル 無料」という検索が多いので、ここは丁寧に解説しておきます。
室谷完全無料で動かすなら、OllamaでローカルのEmbeddingモデルを動かす方法が一番です。後ほど設定手順を詳しく解説しますが、コストゼロでRAGを構築できます。
テキトー教師APIベースで無料枠を使うなら、Google Gemini APIが現時点で比較的使いやすいです。Gemini APIの無料枠を使えば、小規模なナレッジベースなら費用をかけずに試せます。
ただし無料枠には制限があるので、本番運用になってきたら有料プランへの移行を検討する必要があります。
ただし無料枠には制限があるので、本番運用になってきたら有料プランへの移行を検討する必要があります。
室谷Dify Cloudのサンドボックス(無料)プランの場合、システムが提供する埋め込みモデルを使うことができます。ただしトークン数に制限があるので、大きなナレッジベースを作ろうとすると上限に当たります。
埋め込みモデルの設定手順:ナレッジベース作成時の流れ
室谷実際の設定手順を見ていきましょう。Difyでナレッジベースを作成するとき、埋め込みモデルはどこで指定するんでしょう?
テキトー教師ナレッジベース作成の途中に「インデックス方式と検索設定を指定」というステップがあります。そこで埋め込みモデルを選びます。
室谷具体的な手順はこうです。
- Difyの左メニューで「ナレッジ」をクリック
- 「ナレッジを作成」ボタンをクリック
- ファイルをアップロード(PDF、テキスト、CSVなど)
- チャンク設定を確認・調整
- 「インデックス方式」の設定画面で「高品質」を選択すると埋め込みモデルの指定ができる
- 「埋め込みモデル」のドロップダウンから使いたいモデルを選択
テキトー教師ここで注意が必要なのが、「高品質」モードと「エコノミー」モードの違いです。エコノミーモードだと埋め込みモデルを使わず、キーワードマッチ(BM25)で検索するので、精度は下がりますがコストゼロです。
室谷エコノミーモードはフルテキスト検索に近いイメージですね。「このドキュメントの中から"価格"というキーワードが含まれる部分を探す」という感じ。
高品質モードだと「価格に近い意味を持つテキストを探す」という意味ベースの検索ができます。
高品質モードだと「価格に近い意味を持つテキストを探す」という意味ベースの検索ができます。
テキトー教師「料金」と聞かれたときに「価格」「費用」「コスト」という表現のテキストも引っかかってくる。これが埋め込みモデルを使った意味検索の強みです。
室谷ナレッジ設定を後から変更することもできます。ナレッジベースの「設定」から埋め込みモデルを変更できますが・・・一点注意があって。
テキトー教師埋め込みモデルを変更すると、既存のドキュメントが新しいモデルで再インデックスされます。ドキュメント数が多いと時間もコストもかかるので、最初から使うモデルをしっかり決めておくのがおすすめです。
室谷後から変えるのが結構大変なんですよね。ここ、最初の設計が肝心です。
埋め込みモデルの設定でよくあるエラーと対処法
テキトー教師設定手順の中で詰まるポイントも整理しておきます。コミュニティのメンバーさんからよく来るのが「埋め込みモデルの欄にモデルが表示されない」というエラーです。
室谷これは、そもそもモデルプロバイダーの設定が済んでいない場合が多いですね。OpenAIの埋め込みモデルを使いたいなら、先にDifyの設定画面でOpenAIのAPIキーを入力しておく必要があります。
テキトー教師手順で言うと「設定 → モデルプロバイダー → OpenAI(または使いたいプロバイダー)→ APIキーを入力して保存」を先にやっておく必要があります。これをやっていないと、ナレッジ作成時に選択肢が出てきません。
室谷もうひとつ多いのが「ナレッジ処理中にエラーが出て止まる」パターンです。
テキトー教師これはAPIキーのクレジット不足か、ドキュメントのサイズが大きすぎる場合が多いです。特に大きなPDFをまとめて登録しようとして途中でエラーになるケースがあります。
分割してアップロードすると解決することが多いですね。
分割してアップロードすると解決することが多いですね。
OllamaでローカルのEmbeddingモデルをDifyに設定する
室谷では、無料でローカルに埋め込みモデルを動かす方法を見ていきましょう。Ollamaを使った設定です。
データを外部に出したくない場合や、コストをゼロにしたい場合に有効です。
データを外部に出したくない場合や、コストをゼロにしたい場合に有効です。
テキトー教師Ollamaは一度設定してしまえばかなり使いやすいです。ローカルで完結するので、セルフホスト版Difyと組み合わせるとデータが完全にオンプレミスになります。
Ollamaの埋め込みモデルをインストールする
室谷まずOllamaを起動している状態で、埋め込み専用のモデルをダウンロードします。LLMとは別に、Embedding専用のモデルが必要です。
テキトー教師代表的な埋め込みモデルとして
nomic-embed-textがあります。日本語の精度も比較的良いと評判です。# Ollamaで埋め込みモデルをインストール
ollama pull nomic-embed-text
# 確認
ollama list
室谷OllamaはデフォルトでAPIサーバーをlocalhost:11434で起動します。このエンドポイントをDifyから呼び出す形です。
DifyにOllama埋め込みモデルを登録する
テキトー教師Difyの管理画面での設定手順はこうです。
- Difyの右上の「設定」→「モデルプロバイダー」を開く
- 「Ollama」を見つけてクリック
- 「モデルを追加」をクリック
- 設定項目を入力する:
- モデル名:
nomic-embed-text(Ollamaにインストールしたモデル名) - ベースURL:
http://localhost:11434(DockerのDifyの場合はhttp://host.docker.internal:11434) - モデルタイプ: Text Embedding(ここが重要!)
- 最大チャンクサイズ: 8192(nomic-embed-textの場合)
- モデル名:
- 「保存」をクリック
室谷モデルタイプを「Text Embedding」に設定するのがポイントです。LLMとして追加しようとしている方が多いんですよね。
テキトー教師Docker経由でDifyを動かしている場合は、
localhostではなくDockerのホストIPやホスト名を指定する必要があります。http://192.168.1.x:11434かhttp://host.docker.internal:11434で接続できます。
室谷セルフホスト版ではこのあたりの設定が少し複雑になりますが、一度動かせてしまえばあとは安定して使えます。MYUUUでも社内データを扱うプロジェクトではOllamaを使っています。
OllamaのRAG精度とAPIベースモデルの比較
テキトー教師「Ollamaの埋め込みモデルはAPIと比べてどう違うの?」という質問も多いので触れておきます。
室谷正直に言うと、日本語のRAG精度は今のところAPIベース(特にOpenAIかCohere)の方が高いことが多いです。nomic-embed-textは英語に最適化されています。
テキトー教師ただ、最近は日本語向けのOllamaモデルも増えてきていて、
コストゼロで試せるので、まずローカルで動かしてみて、精度が不十分なら有料APIに切り替えるという進め方が合理的です。
mxbai-embed-largeなども試す価値があります。プロジェクトの要件次第ですね。コストゼロで試せるので、まずローカルで動かしてみて、精度が不十分なら有料APIに切り替えるという進め方が合理的です。
DifyをWebサイトに埋め込む:iframeとScriptタグの使い方

室谷ここからは「dify チャットボット 埋め込み」「dify web 埋め込み」という別の意味での「埋め込み」について話しましょう。作ったDifyアプリをWebサイトに表示する方法です。
テキトー教師ここ、同じ「埋め込み」という言葉なのに意味が違うので混乱している方が多いんですよね。前半はEmbeddingモデルの話、ここからはWebへの埋め込みの話です。
室谷Difyのアプリを公開すると「Webアプリ」としてURLが発行されます。そのURLをそのまま共有してもいいですし、自分のWebサイトに埋め込むこともできます。
DifyアプリをWebサイトに埋め込む2つの方法
テキトー教師埋め込み方法は主に2種類あります。
室谷1つ目がiframeを使う方法。ページの中にDifyのWebアプリをそのまま表示できます。
シンプルですが、サイドバーやページ内の特定エリアにチャットUIを表示したい場合に向いています。
シンプルですが、サイドバーやページ内の特定エリアにチャットUIを表示したい場合に向いています。
<iframe
src="https://udify.app/chatbot/YOUR_APP_TOKEN"
width="100%"
height="600"
frameborder="0">
</iframe>
テキトー教師2つ目がScriptタグを使うチャットバブル方式です。右下にフローティングのボタンが出て、クリックするとチャット画面が開くやつです。
<script>
window.difyChatbotConfig = {
token: 'YOUR_APP_TOKEN'
}
</script>
<script src="https://udify.app/embed.js" defer></script>
室谷フローティングボタン方式はサイトの邪魔にならないのが強みですね。訪問者が必要なときだけクリックして使う。
ECサイトやサポートページに多い形式です。
ECサイトやサポートページに多い形式です。
チャットバブルのカスタマイズ
テキトー教師このチャットバブル、結構カスタマイズできるんですよね。位置や色を変えられるので、サイトのデザインに合わせられます。
室谷difyChatbotConfigにオプションを追加することで、ボタンの位置・色・サイズを調整できます。<script>
window.difyChatbotConfig = {
token: 'YOUR_APP_TOKEN',
draggable: true, // ドラッグ移動を許可
containerProps: {
style: {
right: '30px',
bottom: '30px'
}
}
}
</script>
テキトー教師CSSでボタンのスタイルを変えることもできます。背景色をサイトのブランドカラーに合わせたい場合はこれが有効です。
#dify-chatbot-bubble-button {
--dify-chatbot-bubble-button-bg-color: #04cbb7;
--dify-chatbot-bubble-button-width: 60px;
--dify-chatbot-bubble-button-height: 60px;
}
埋め込み時の注意点
室谷Webサイトに埋め込む際によくあるトラブルを整理しておきます。
テキトー教師一番多いのが「iframeが表示されない」というものです。これはサイトのCSP(コンテンツセキュリティポリシー)でiframeが制限されている場合があります。
サーバーの設定で
サーバーの設定で
frame-ancestorsを許可する必要があります。
室谷あとは「HTTPSのサイトにHTTPのDifyを埋め込もうとしてブロックされる」というケースも。DifyアプリとWebサイトは両方HTTPSである必要があります。
テキトー教師埋め込む前に、まずDifyアプリ側で「公開」→「埋め込む」の設定を確認しておきましょう。トークンが表示される場所です。
WordPressへのDify埋め込み
室谷WordPressに埋め込む場合は、「dify wordpress 埋め込み」で検索している方が多いですね。
テキトー教師WordPressへの埋め込みは特別なプラグインは不要です。テーマのフッターエリアかHTMLブロックにScriptタグを貼り付けるだけで動きます。
室谷具体的な手順はこうです。
- WordPressの管理画面で「外観」→「テーマファイルエディター」を開く
footer.phpを選択して編集(または外観→カスタマイズからフッタースクリプト追加)- Difyのチャットバブル用Scriptタグを
</body>の直前に追加 - 保存して動作確認
テキトー教師テーマの直接編集が不安な場合は、「Insert Headers and Footers」のようなWordPressプラグインを使うと安全です。管理画面からスクリプトを追加できるので、テーマファイルを触らずに済みます。
室谷Elementorのようなページビルダーを使っている場合は、HTMLウィジェットにそのままScriptタグを貼り付けられます。特定のページだけに埋め込みたい場合に便利ですね。
Microsoft TeamsへのDify埋め込み
室谷「dify teams 埋め込み」という検索も多いです。社内のTeamsにDifyのチャットボットを埋め込みたいというニーズですね。
テキトー教師Teams連携はWebサイトへの埋め込みと少し仕組みが違います。Microsoft TeamsにDifyを組み込む方法は主に2つあります。
室谷一つ目はTeamsのタブ(タブアプリ)として追加する方法です。チームチャネルの上部にタブを追加して、そこにDifyのWebアプリURLをiframeで表示します。
テキトー教師手順は:
- Teamsのチャネルやグループチャットでタブを追加
- 「Webサイト」タブを選択
- DifyのWebアプリURLを入力
室谷ただ、TeamsのWebサイトタブはiframeで表示するので、DifyのWebアプリがX-Frame-Optionsを制限していないことが前提です。Dify Cloudのデフォルト設定では埋め込みが許可されているはずです。
テキトー教師もう一つの方法は、Teams Botとして開発してDify APIと接続する方法です。こちらはより本格的な統合になりますが、Teams上でネイティブなボット体験ができます。
室谷社内利用の場合は、Teams Botの開発は少しハードルが高いので、まずタブとして追加する方法を試してみるのが現実的ですね。
HTMLページへのDify埋め込みとWordPress以外のCMS
室谷「dify html 埋め込み」「dify hp 埋め込み」という検索も多いですね。WordPress以外のサイトやランディングページへの組み込みです。
テキトー教師基本的にどんなHTMLベースのサイトでも同じです。
Wix、Squarespace、Shopify、STUDIOなどでも同様の方法で埋め込めます。
</body>の直前にScriptタグを貼るだけです。Wix、Squarespace、Shopify、STUDIOなどでも同様の方法で埋め込めます。
室谷Notionで公開しているページに埋め込む「dify notion 埋め込み」というニーズもありますね。ただNotionはiframeへの対応が限定的なので、Notionのページ上にDifyを直接埋め込むのは現時点では難しいです。
テキトー教師Notionの場合は、「DifyのWebアプリURLをNotionページにリンクとして貼る」という形が現実的です。ページ内に直接埋め込むよりは体験が落ちますが、動作は確実です。
DifyとRAGの埋め込みモデルを使いこなすための実践Tips
室谷ここからは、実際に運用して気づいたTipsを共有しましょう。埋め込みモデルの設定は「入れたら終わり」ではなくて、チューニングが大事なんですよね。
テキトー教師そうなんです。「ナレッジを登録したのに関係ない回答が返ってくる」という相談が後を絶たなくて。
そこを深掘りしていきたいです。
そこを深掘りしていきたいです。
RAGの精度を上げる埋め込みモデルの設定ポイント
室谷まず基本として、ドキュメントの言語と埋め込みモデルの言語対応を合わせることが重要です。日本語のPDFをRAGに使うなら、日本語に強いモデルを選ぶ。
これだけで精度が大幅に変わります。
これだけで精度が大幅に変わります。
テキトー教師日本語コンテンツには、CohereのEmbed multilingual v3かOpenAIのtext-embedding-3-smallがおすすめです。OpenAIの場合、
text-embedding-3-smallはコストが低くて精度も良いので、まずはこれから始めるのが現実的です。
室谷もう一つ重要なのがチャンクサイズです。ドキュメントを分割するサイズと埋め込みモデルが扱えるトークン数のバランスが大事で、チャンクが大きすぎると検索精度が下がります。
テキトー教師ナレッジベース作成時の「チャンク設定」で調整できます。一般的なドキュメントなら500〜1000トークン程度が良いとされています。
ドキュメントの性質に合わせて試してみる必要はありますが。
ドキュメントの性質に合わせて試してみる必要はありますが。
室谷ハイブリッド検索(キーワード検索 + 意味検索の組み合わせ)を使うと、単純な埋め込みモデルの検索よりも精度が上がるケースが多いです。Difyではこのハイブリッド検索もサポートしています。
テキトー教師リランキング(Rerank)モデルと組み合わせると、検索した候補をさらに絞り込んで精度を上げられます。Cohereのリランキングモデルが使いやすいですね。
室谷のツイートでも話題になったDifyのRAG活用
テキトー教師室谷さんがDifyのナレッジ活用について投稿されていたツイートを見て、「マイクロナレッジ」という考え方が面白いと思ったんですが。
室谷Difyのおかげでナレッジ(RAG)の開発コストが劇的に下がったので、大きなナレッジを1個作るよりも、用途に特化した小さなナレッジをたくさん作る方向に変わってきているんですよね。
テキトー教師「医療、美容という大カテゴリではなく、風邪、インフルエンザ、ファンデーションレベルの小カテゴリでRAGを構築できる」という視点ですね。これは実践的な示唆だと思います。
室谷埋め込みモデルのコストが下がったことで、こういう細かい粒度のナレッジも現実的になってきた。前は1つのナレッジに大量のドキュメントを詰め込まざるを得なかったんですが、今はテーマ別に分けて管理する方がRAGの精度もメンテナンス性も上がります。
FAQ:Difyの埋め込みモデルについてよくある質問
テキトー教師コミュニティで繰り返し出てくる質問をまとめます。
Q. 埋め込みモデルを後から変更できますか?
室谷変更自体は可能です。ナレッジベースの「設定」から埋め込みモデルを変更できます。
ただし変更すると既存ドキュメントが新しいモデルで再インデックスされるので、時間とコストがかかります。ドキュメント数が多い本番環境では慎重に行いましょう。
ただし変更すると既存ドキュメントが新しいモデルで再インデックスされるので、時間とコストがかかります。ドキュメント数が多い本番環境では慎重に行いましょう。
Q. 埋め込みモデルとLLM(チャットモデル)は同じでいいですか?
テキトー教師別々に設定できますし、別のプロバイダーを使うことも問題ありません。たとえば「埋め込みはOpenAI、LLMはAnthropic Claude」という組み合わせも可能です。
用途ごとに最適なモデルを選べるのがDifyの強みのひとつです。
用途ごとに最適なモデルを選べるのがDifyの強みのひとつです。
Q. セルフホスト版DifyでOllama埋め込みモデルが接続できません
室谷Docker Composeでセルフホストしている場合、コンテナからlocalhost:11434に接続できないことがあります。その場合はOllamaのベースURLを
http://host.docker.internal:11434(Docker Desktop)か、ホストのIPアドレスを直接指定してください。
テキトー教師Ollamaの起動時に
OLLAMA_HOST=0.0.0.0を設定して全IPからの接続を許可する必要があることもあります。セキュリティには注意してください。Q. DifyのWebサイト埋め込みにログインは必要ですか?
室谷DifyのWebアプリを「パブリック」公開設定にすれば、Difyアカウントなしで誰でも使えます。ただし利用者のアカウント管理が必要な場合はアクセスコントロールの設定が必要です。
Q. GeminiのEmbeddingはDifyで使えますか?
テキトー教師使えます。DifyのモデルプロバイダーにGoogle(Gemini)のAPIキーを設定すれば、
Gemini APIの無料枠を活用してコストを抑えることができます。
text-embedding-004などが選択肢に現れます。Gemini APIの無料枠を活用してコストを抑えることができます。
まとめ:Difyの埋め込みモデルと埋め込み機能を整理する
室谷今回は「埋め込み」という言葉が2つの意味で使われているので、まとめておきましょう。
テキトー教師そうですね。整理するとこうなります。
| 意味 | 用途 | キーワード |
|---|---|---|
| Embedding(埋め込みモデル) | RAG・ナレッジベースのベクトル変換 | dify 埋め込みモデル、dify rag 埋め込み |
| Web埋め込み | DifyアプリをWebサイトに表示 | dify web 埋め込み、dify チャットボット 埋め込み |
室谷埋め込みモデル(Embedding Model)の選び方まとめとしては、日本語RAGならOpenAIかCohere、コストゼロならOllama+nomic-embed-text、Gemini APIを使っているならtext-embedding-004が使いやすいという感じです。
テキトー教師Web埋め込みの方は、チャットバブル(フローティングボタン)かiframeのどちらかを選べばほぼどんなサイトにも組み込めます。WordPressもTeamsも、基本的にはScriptタグかiframeで対応できます。
室谷RAGの精度に悩んでいる方は、まず埋め込みモデルを見直すのが効果的です。LLMをグレードアップするより先に、検索の土台である埋め込みモデルを見直してみてください・・・案外そこで解決することが多いので。
テキトー教師Dify全体の設定方法については、過去の記事「」や「」も参照してみてください。
