🔍
DifyのRAG精度チューニングガイド
チャンキング戦略・埋め込みモデル選定・ハイブリッド検索・リランキング・メタデータフィルタリングまで、Difyのナレッジ検索精度を上げる実践テクニック。
RAG 精度が低いときの典型的な原因
RAG が「使えない」と感じる原因のほぼすべては以下に集約される:
① チャンキングが文書の構造を無視している
→ 条文・段落・Q&A がブツ切りになり、文脈が失われる
② 検索にヒットしているが、正しいチャンクが上位に来ない
→ 埋め込みモデルやリランキングの問題
③ 正しい情報がナレッジにあるのに検索されない
→ ユーザーの語彙とドキュメントの語彙が違う(語彙ギャップ)
④ 無関係な情報が検索にヒットする
→ Top K が多すぎる、類似度閾値がゆるすぎる
チャンキング戦略: 文書種別ごとに最適化する
チャンキングモードの選択
Dify が提供するチャンキングモード:
Automatic(自動):
デフォルト設定で動くが精度は最低限。
プロトタイプ確認用と割り切る。
Custom(カスタム):
チャンクサイズ・オーバーラップ・区切り文字を指定。
本番運用ではこちらを使う。
Q&A(Q&Aモード):
LLM が文書からQ&Aペアを自動生成してインデックス化。
FAQや手続き案内に最適。精度が高い。
文書種別ごとの推奨設定
FAQ・手続き案内文書:
モード: Q&A
理由: 質問→回答のペアとして検索されるため意味的に一致しやすい
契約書・法律文書:
モード: カスタム
チャンクサイズ: 条文単位(200〜400トークン)
区切り文字: 「第○条」「■」等の条番号パターン
オーバーラップ: 50〜100トークン(前後の条文文脈を保持)
技術マニュアル・手順書:
モード: カスタム
チャンクサイズ: 500〜800トークン
区切り文字: 見出し(##・■・1.)
オーバーラップ: 100トークン
製品カタログ・商品説明:
モード: カスタム
チャンクサイズ: 1商品 = 1チャンク
区切り文字: 商品区切り記号
メタデータ: 商品カテゴリ・価格帯を付与
長文レポート・論文:
モード: カスタム
チャンクサイズ: 1,000〜1,500トークン(大きめ)
区切り文字: 章・節の見出し
Parent-Child チャンキングを検討(後述)
Parent-Child チャンキング(高精度テクニック)
問題:
大きなチャンクは文脈が豊富だが、検索ヒット精度が下がる
小さなチャンクは検索には強いが、文脈が不足する
解決策: Parent-Child チャンキング
Parent チャンク(大): 1,000トークン → LLM に渡すコンテキスト用
Child チャンク(小): 200トークン → ベクトル検索用のインデックス
処理フロー:
1. Child チャンクでベクトル検索してヒット
2. ヒットした Child の Parent チャンクを取得
3. Parent(文脈の豊富な大チャンク)を LLM に渡す
Dify での実装:
Knowledge Retrieval ノードの設定で
「Parent-child retrieval」を有効にする
埋め込みモデルの選定
埋め込みモデルが検索精度に大きく影響する。
推奨モデル(日本語コンテンツの場合):
text-embedding-3-large(OpenAI):
精度: ★★★★★(最高水準)
コスト: ★★★☆☆(中程度)
1M トークンあたり $0.13
→ 精度最優先の本番環境に最適
text-embedding-3-small(OpenAI):
精度: ★★★★☆
コスト: ★★★★★(最安)
1M トークンあたり $0.02
→ コスト重視の場合の標準選択肢
multilingual-e5-large(ローカル):
精度: ★★★★☆
コスト: 無料(Ollama でローカル実行)
→ セルフホスト + コスト無料が条件なら有力候補
注意:
埋め込みモデルを後から変更すると
ナレッジベース全体の再インデックスが必要になる。
本番前にモデルを確定させること。
検索設定のチューニング
検索モードの選択
Dify の検索モード:
Vector Search(ベクトル検索):
仕組み: 意味的な類似度でチャンクを検索する
得意: 言い換え・同義語への対応
苦手: 固有名詞・製品番号・コード等の完全一致
Full-text Search(全文検索):
仕組み: キーワードの完全一致・部分一致で検索する
得意: 製品番号・法令番号・人名の正確な一致
苦手: 表現が違う同義語への対応
Hybrid Search(ハイブリッド):
仕組み: ベクトル + 全文検索の両方を組み合わせる
→ RRF(Reciprocal Rank Fusion)で結果をマージ
ほぼすべてのケースで最高精度を出す。本番は基本これ。
Top K と類似度閾値の調整
Top K(取得するチャンク数):
K を大きくする(5〜10):
→ 答えが含まれるチャンクを取りこぼしにくくなる
→ LLM に渡すコンテキストが増えてコスト・レイテンシが上がる
→ 無関係な情報が混入するリスクが高まる
K を小さくする(1〜3):
→ 精度の高いチャンクのみを使う
→ 回答できる質問の範囲が狭まる
推奨設定:
FAQ ボット(回答が1箇所に集中): K=3
複数文書をまたいだ質問(規程集等): K=5〜8
「わからない」と答えてほしいケースが多い: K=2 + 閾値を高く
類似度スコア閾値:
0.5 以下: 緩すぎ(無関係な回答が混入する)
0.6〜0.7: 標準的(バランスが取れる)
0.8 以上: 厳しめ(精度は高いが回答できないケースが増える)
チューニング手順:
1. 類似度スコアのログを収集する(Dify のログ確認)
2. 「正しい回答が得られた」ケースのスコア分布を確認
3. 分布の下限付近に閾値を設定する
リランキングの活用
問題:
ベクトル検索で上位に来たチャンクが
実際の質問に対して最も関連性が高いとは限らない
解決策: Reranker モデルで再順位付けする
仕組み:
1. ベクトル検索で K=20 のチャンクを取得
2. Reranker が「質問 ↔ 各チャンク」のペアを精密に評価
3. スコア順に並べ替え、上位3〜5件のみ LLM に渡す
使えるリランキングモデル:
Cohere Rerank → 最も手軽。Dify から設定するだけ
BGE Reranker → ローカル実行可能。日本語対応
Jina Reranker → 高精度。API 利用
Dify での設定:
Knowledge Retrieval ノード
→ 「Rerank」セクションを有効にする
→ モデルプロバイダーで Cohere API キーを設定する
効果:
リランキングを追加するだけで
回答精度が 10〜20% 向上するケースがある
メタデータフィルタリング
問題:
「2026年度版の規程」を聞いているのに
「2024年度版の規程」が検索される
解決策:
文書にメタデータを付与して、検索前にフィルタリングする
メタデータの設定:
ファイル登録時に以下のメタデータを付与できる:
- document_type: "規程集" / "マニュアル" / "FAQ"
- fiscal_year: "2026"
- department: "人事部" / "財務部"
- last_updated: "2026-04-01"
Dify でのフィルタリング設定:
Knowledge Retrieval ノードの
「Metadata Filtering」で条件を設定する
例:
fiscal_year = {{current_year}} ← 会話変数と組み合わせる
document_type = "規程集"
活用例:
複数年度の文書が混在するナレッジで
「最新年度のみを検索対象にする」
RAG 精度の評価方法
精度指標:
Hit Rate(ヒット率):
テストクエリ N 件のうち、正しいチャンクが
Top K 以内に含まれた割合
→ 目標: 80% 以上
MRR(Mean Reciprocal Rank):
正しいチャンクが何位に来たかの平均逆数ランク
→ MRR = 1.0: 常に1位で正解(理想)
→ MRR < 0.5: 精度要改善
評価の実施手順:
1. 代表的な質問20〜50件と、正解チャンクのペアを作る
2. Dify ログでヒットしたチャンク ID を確認
3. 正解チャンクが Top K 以内に含まれているかを集計
4. チャンキング設定・埋め込みモデルを変えて比較する
Dify の評価機能:
アプリ設定 → 「アノテーション」機能で
回答に対して 👍/👎 を記録できる
→ 改善前後での比較指標として活用
チューニングのロードマップ
Step 1: 文書のチャンキングを見直す(最もインパクトが大きい)
→ 文書種別ごとにチャンクサイズ・区切り文字を設定
Step 2: 検索モードをハイブリッドに変更する
→ ほぼすべてのケースでベクトル単体より精度向上
Step 3: Top K と類似度閾値を調整する
→ ログを見ながら実際のスコア分布に合わせる
Step 4: リランキングを追加する
→ Cohere Rerank が最も手軽。精度 10〜20% 向上が見込める
Step 5: メタデータフィルタリングを導入する
→ 複数バージョン・部署別の文書が混在する場合
Step 6: 埋め込みモデルをアップグレードする(最後に検討)
→ 再インデックスが必要なため、最後に実施
参考:関連ドキュメント
- ナレッジベース・RAGパイプライン — RAG の仕組み・基本設計
- ハルシネーション対策ガイド — 検索結果の信頼性向上
- Difyアンチパターン集 — AP-8〜10: RAG 層の失敗例
- RAGチャットボット構築 — 実践的なボット構築例
- 1. ⚠️Difyアンチパターン集(設計・プロンプト・RAG・運用の落とし穴)
- 2. ✅Dify本番リリース前チェックリスト&運用設計ガイド
- 3. ✍️Difyプロンプトエンジニアリング実践ガイド
- 4. 🔍DifyのRAG精度チューニングガイド
- 5. 🛡️Difyハルシネーション対策ガイド
- 6. 🔗Dify×n8n連携ガイド(AIと外部サービスをつなぐオーケストレーション)
- 7. 🖥️Difyセルフホスト本番構成ガイド(Docker・セキュリティ・スケーリング)
- 8. 🏢Dify Enterprise機能ガイド(SSO・RBAC・監査ログ・マルチワークスペース)
- 9. 👨💻エンジニア向けDifyガイド(API統合・CI/CD・テスト自動化)
- 10. 💼ビジネスパーソン向けDifyガイド(ノーコードで始めるAI活用)
- 11. 🚀スタートアップ向けDifyガイド(最小コストでAI機能を最速でリリース)
出典: Dify公式ドキュメント / RAGチューニングガイド