ナレッジベースを作成し、ドキュメントをアップロードする手順は大まかに以下の通りです:

  1. Difyチーム内でナレッジベースを作成し、ローカルからアップロードするドキュメントを選びます。
  2. 段落を分割し、クリーニングモードを選択します。そして、プレビューを確認します。
  3. インデックス方法と検索設定を構成します。
  4. 段落の埋め込みが完了するのを待ちます。
  5. アップロードが完了したら、アプリ内で関連付けて使用します 🎉

ナレッジベースを作成し、文書をアップロードする手順は、以下のように大きく分けることができます:

1. ナレッジベースの作成

Difyのメインナビゲーションバーから「ナレッジベース」をクリックし、チーム内のナレッジベースを確認します。次に、「ナレッジベースを作成」をクリックしてウィザードを開始します。

  • アップロードしたいファイルをドラッグアンドドロップするか、直接選択してアップロードします。一度にアップロードできるファイルの数は、サブスクリプションプランに依存します。
  • 文書が準備できていない場合には、空のナレッジベースを作成することも可能です。
  • 外部データソース(Notionやウェブサイトとの同期)を利用してナレッジベースを作成する際には、ナレッジベースの種類を変更することはできません。これは、単一のナレッジベースに複数のデータソースが存在すると管理上の問題が生じるためです。複数のデータソースを使用する必要がある場合は、複数のナレッジベースを作成し、リランクモードを使って同一アプリ内で複数のナレッジベースを参照することを推奨します。

ファイルのアップロードには以下の制限があります:

  • 1つのドキュメントのアップロードサイズは最大15MBです。

ナレッジベースを作成


2. セクショニングとクリーニング戦略の選択

ナレッジベースにコンテンツをアップロードした後、コンテンツのセクショニングとデータクリーニングを行う必要があります。この段階では、コンテンツの前処理と構造化が重要です。

以下の2つの戦略がサポートされています:

  • 自動セクショニングとクリーニング
  • カスタム

自動セクショニングとクリーニング

自動モードは、セクショニングや前処理に関する知識があまりない初心者ユーザーに適しています。このモードでは、Difyがコンテンツファイルを自動的にセクション分割し、クリーニングを行います。

自動セクショニングとクリーニング

3 インデックス方法

コンテンツの前処理方法(セグメンテーションとクリーニング)を指定した後、次に構造化コンテンツのインデックス方法を指定する必要があります。インデックス方法は、LLMがナレッジベースのコンテンツを検索する効率と回答の正確性に直接影響を与えます。

システムは以下の3つのインデックス方法を提供しており、各方法内の検索設定を調整することができます:

  • 高品質
  • コスト効率

高品質モードでは、セグメンテーションされたテキストを数値ベクトルに変換する埋め込みモデル(切り替え可能)を最初に呼び出し、開発者が大量のテキスト情報を効果的に圧縮および保存するのを支援します。また、ユーザーとLLMの対話時により高い精度を提供することも可能です。 高品質インデックス方法には、ベクトル検索、全文検索、ハイブリッド検索の3つの検索設定が提供されています。詳細な検索設定については、検索設定をご覧ください。

高品質モード


4 検索設定

高品質インデックス方法の下で、Difyは次の3つの検索オプションを提供しています:

  • ベクトル検索
  • 全文検索
  • ハイブリッド検索

定義: ユーザーの入力した質問をベクトル化し、クエリベクトルとナレッジベース内の対応するテキストベクトルの距離を比較し、最も近いセグメントコンテンツを見つけます。

ベクトル検索

ベクトル検索設定:

Rerankモデル: ベクトル検索の再呼び出し後、第三者のRerankモデルを使用してセグメントを再度意味的に並べ替え、結果を最適化します。RerankモデルのAPIキーを「モデルプロバイダー」ページで構成した後、検索設定で「Rerankモデル」をオンにします。

TopK: ユーザーの質問と最も類似したテキストセグメントを選択するために使用されます。システムは同時に選択したモデルのコンテキストウィンドウサイズに基づいてセグメントの数を動的に調整します。デフォルト値は3であり、数値が高いほど、予想されるテキストセグメントの数も多くなります。

スコア閾値: テキストセグメントの選択に使用する類似度の閾値を設定し、設定スコアを超えるテキストセグメントのみを返します。デフォルト値は0.5であり、数値が高いほど、テキストと質問の類似度が高く、返されるテキストの数も少なくなります。

TopKとスコア設定はRerankステップでのみ有効であり、これらの設定を適用するにはRerankモデルを追加してオンにする必要があります。


経済インデックス方式では、Difyは1つの検索設定のみを提供しています:

転置インデックス

転置インデックスは、文書内のキーワードを迅速に検索するための索引構造であり、その基本原理は文書中のキーワードを含む文書リストにマッピングすることで、検索効率を向上させることです。詳細な原理については、転置インデックスを参照してください。

TopK: ユーザーの質問に最も類似したテキスト断片を選択するために使用されます。システムは、選択されたモデルのコンテキストウィンドウサイズに基づいて、断片の数を動的に調整します。システムのデフォルト値は3です。数値が高いほど、期待されるテキスト断片の数が多く取得されます。

転置インデックス

検索設定を指定した後、リコールテスト/引用の帰属を参照して、キーワードとコンテンツブロックの一致状況を確認できます。

5 アップロードを完了する

上記の設定を行った後、「保存して処理」をタップするとナレッジベースの作成が完了します。 アプリケーション内でナレッジ ベースを統合する を参照して、ナレッジ ベースに基づいて Q&A を実行できる LLM アプリケーションを構築できます。


参考読書

ETL

RAGの生産環境においては、より良いデータ取得の効果を得るために、複数のソースからのデータを前処理およびクリーンアップする必要があります。これはETL(extract, transform, load)のことを指します。非構造化および半構造化データの前処理能力を強化するために、DifyはオプションのETLソリューションを提供しています:Dify ETLUnstructured ETLです。

Unstructuredは、効率よくデータを抽出し変換し、次のステップで使用できるクリーンなデータを提供します。Difyの各バージョンのETLソリューションの選択肢:

ファイル解析のサポート形式の違い:

DIFY ETLUnstructured ETL
txt、markdown、md、pdf、html、htm、xlsx、xls、docx、csvtxt、markdown、md、pdf、html、htm、xlsx、xls、docx、csv、eml、msg、pptx、ppt、xml、epub
異なるETLソリューションは、ファイルの抽出効果においても差異があります。Unstructured ETLのデータ処理方法について詳しく知りたい場合は、公式ドキュメントをご覧ください。

Embedding モデル

Embedding技術は、離散的な変数(単語、文、または全文書など)を連続的なベクトル表現に変換する技術です。これにより、高次元データ(単語、フレーズ、または画像など)を低次元空間にマッピングし、コンパクトで効果的な表現を提供します。この表現はデータの次元を減少させるだけでなく、重要な意味情報を保持し、後続のコンテンツ検索をより効率的に行えるようにします。

Embeddingモデルは、テキストをベクトル化するために特化した大規模言語モデルであり、文を密な数値ベクトルに変換し、意味情報を効果的に捉えることが得意です。