ナレッジベースのテストと確認

ナレッジベースを本番環境へ適用する前に、検索の精度を検証し、適切な回答生成が行われるようチューニングを行います。Difyに組み込まれている「ヒットテスト(Retrieval Test)」機能を活用して確認します。

1. テストの目的

RAG(検索拡張生成)において、回答の質は「適切なドキュメントチャンクを取得できているか」に大きく依存します。テストでは以下を確認します。

  • 網羅性: ユーザーの質問に対して、必要な情報が含まれているか。

  • ノイズ除去: 関係のない情報が含まれていないか。

  • ランク順位: 最も重要な情報が上位(TopK内)に来ているか。

2. 検索設定の種類と推奨設定

検索モードの比較

モード
特徴
向いているケース
苦手なケース

ベクトル検索

意味的な類似度で検索

表記揺れ(「料金」「価格」)や抽象的な質問

型番、固有名詞の完全一致

全文検索

キーワードの一致度で検索

固有名称、品番、専門用語の検索

類義語、文脈の理解

ハイブリッド検索

上記両方を実行し結果を統合

(推奨) 一般的な質問と専門用語が混在するケース

設定がやや複雑

推奨設定(デジタルヒューマン向け)

  • 検索モード: ハイブリッド検索

  • 並べ替え (Rerank): 可能であれば、Rerankモデルの使用を推奨(※別途モデル設定が必要)します。利用できない場合はウェイト設定を使用します。

  • TopK (取得数): 46 コンテキストウィンドウ(LLMが一度に読める量)と精度のバランスが良い値です。

  • スコア閾値: 0.5前後 ノイズを排除するため設定を推奨。テストしながら微調整してください。

3. テスト実施手順

確認ポイント

  • 期待する情報が上位に表示されるか?

  • 無関係なチャンクが混入していないか?

  • 同義語や言い換えでも正しく検索できるか?

  • スコアが0.5以上のチャンクが十分にあるか?

テストケースの例

  • 基本的な質問: 「料金はいくらですか?」「営業時間を教えて」

  • 言い換え: 「価格」「コスト」「費用」など同じ意味の別の表現

  • 複雑な質問: 「初めて利用する場合の手順を教えて」

  • 存在しない情報: ドキュメントにない質問に対する動作

問題があった場合の対処

  • 精度が低い: チャンクサイズやオーバーラップを調整

  • 無関係な情報が多い: スコアしきい値を上げる

  • 情報が取得できない: TopKを増やす、検索方法を見直す

  1. Dify管理画面へアクセス

    対象のナレッジベースを開き、左側メニューまたは設定内の「検索テスト(Retrieval Test)」を選択します。 ソーステキスト入力エリアの下部に記録セクションが表示されます。過去に実行した検索クエリの履歴(クエリ内容・ソース・実行時間)を一覧で確認できます。

  2. テストクエリの入力

    1. 「ソーステキスト」欄に想定されるユーザーの質問を入力します。 例: 「サービスの料金体系を教えて」「エラーコード E001 の対処法は?」

    2. 検索方法(ベクトル検索/全文検索/ハイブリッド検索)を選択

      検索設定の変更方法

      検索方法の横にあるドロップダウンをクリックすると、検索設定ダイアログが開きます。

      検索方法
      特徴
      Pros and Cons

      ベクトル検索

      クエリの埋め込み(エンベディング)を生成し、意味的に類似したテキストチャンクを検索

      同義語や言い換えに強い(例:「料金」と「価格」を同じ意味として認識)

      固有名詞や技術用語の完全一致が必要な場合は苦手

      全文検索

      ドキュメント内のすべての用語をインデックス化し、キーワードマッチングで検索

      固有名詞、製品名、技術用語などの完全一致に強い

      同義語や言い換えには対応できない

      ハイブリッド検索(推奨)

      ベクトル検索と全文検索を同時に実行し、結果を統合

      両方の強みを活かし、弱みを補完できる

      デジタルヒューマン用途ではこの方法を推奨

    3. 「テスト」ボタンをクリックして検索を実行

    4. 右側に検索結果(取得したチャンク)が表示される

  3. 検索結果の確認

    結果リストに表示される各チャンクについて以下を確認します。

    • Status (Hit): 意図したドキュメントがヒットしているか。

    • Score: 質問文との関連度スコアが高いか(Rerankモデル使用時は信頼性が高い)。

      スコアの目安

      • 0.5以上: 良好な関連性

      • 0.30.5: ある程度の関連性

      • 0.3未満: 関連性が低い(ノイズの可能性)

    • Content: 回答生成に必要な情報がテキストに含まれているか。

    • チャンク番号(Chunk-01, Chunk-02, ...): 取得されたテキストの順番

    • 文字数: 各チャンクのテキスト長

    • テキスト内容: 実際に取得されたチャンクの内容

    • ソースファイル: チャンクの元になったドキュメント名

4. 精度が低い場合のチューニング指針

意図したドキュメントがヒットしない場合

検索モードの変更

キーワード検索が必要なら「全文検索」または「ハイブリッド」の比重を見直す。

セマンティクス(意味)とキーワードの重みをスライダーで調整

デフォルト: セマンティクス0.7、キーワード0.3

メリット: 追加のレイテンシなし、高速

デメリット: 精度はRerankより劣る場合がある

チャンク設定の見直し

分割サイズが小さすぎて文脈が切れている、または大きすぎてノイズが多い可能性があります。セグメント設定(区切り文字やサイズ)を調整し、再インデックスを行ってください。

関係ないドキュメントが上位に来る場合

閾値 (Score Threshold) の調整

閾値を上げて(例: 0.50.6)、低スコアのチャンクを足切りする。

TopK: 取得するチャンク数(推奨: 36

閾値: 最低関連度スコア(推奨: 0.50.7

Rerankモデルの導入

ベクトル検索だけでは順位付けが甘い場合、Rerankモデルを導入して再ランク付けを行うと劇的に改善することがあります。

knowledge_test_04_hybrid_search.png

メリット: AIが検索結果を再順位付けして検索精度を向上

デメリット: 100~300msの追加レイテンシ

推奨モデル: Cohere rerank-multilingual-v3.0(日本語対応)

5. 参考リソース

Dify公式ドキュメント: https://docs.dify.ai/ja-jp/guides/knowledge-base/retrieval-test-and-citationarrow-up-right

circle-exclamation

最終更新