# アプリ内での知識ベースの統合 ### 1 知識ベースアプリの作成 知識ベースは、大言語モデルに対して外部知識を提供し、ユーザーの質問に正確に回答するために使用されます。Difyの[すべてのアプリタイプ](../application_orchestrate/#application_type)内で作成された知識ベースを関連付けることができます。 チャットアシスタントを例にすると、以下の手順で進めます: 1. **スタジオ -- アプリを作成 -- チャットアシスタントを作成**に進む 2. **コンテキスト設定**に進み、**追加**をクリックし、作成済みの知識ベースを選択 3. **コンテキスト設定 -- パラメータ設定**内で**召回策略**を設定 4. **機能追加**内で**引用と帰属**をオンにする 5. **デバッグとプレビュー**内で知識ベース関連のユーザー質問を入力してデバッグ 6. デバッグが完了したら、**保存して公開**し、AI知識ベースQ&Aアプリケーションとして公開 アプリ内での知識ベースの関連付け *** ### 2 召回模式 **コンテキスト -- パラメータ設定 -- 召回設定**に進み、知識ベースの召回模式を選択できます。 **N 選 1 召回**は、ユーザーの意図と知識ベースの説明に基づいて、LLMが最も適切な単一の知識ベースを選択して関連するテキストを照会します。 **多路召回**は、ユーザーの意図に基づいてすべての知識ベースを同時に照合し、多路知識ベースから関連するテキストフラグメントを照会し、再ランキングのステップを経て、最適な結果を選択します。このモードでは、RerankモデルAPIの設定が必要です。 **召回模式の選び方** N 選 1 召回は、Function Call/ReActによって駆動され、各関連付けられた知識ベースがツール関数として機能し、LLMがユーザーの質問に最も適した知識ベースを自主的に選択して照会します。**推理の根拠は、ユーザーの質問と知識ベースの説明のセマンティックな一致性です**。 したがって、N 選 1 モードの召回効果は主に以下の3つの要素に依存します: * **システム推理モデルの能力**:一部のモデルはFunction Call/ReActの指令に対する遵守度が不安定です * **知識ベースの説明の明確さ**:説明内容がLLMの推理に影響を与えます * **知識ベースの数**:知識ベースが多すぎると、LLMの推理精度に影響を与え、推論モデルのコンテキストウィンドウの長さを超える可能性があります **N 選 1 モードの推奨設定方法**:効果の良いシステム推理モデルを選択し、関連付ける知識ベースをできるだけ少なくし、正確な知識ベースの説明を提供します。 ユーザーが知識ベースをアップロードすると、システム推理モデルは自動的に知識ベースの概要説明を生成します。このモードで最適な召回効果を得るために、「知識ベース->設定->知識ベースの説明」に進み、システムがデフォルトで作成した概要説明を確認し、その内容が知識ベースの内容を明確に概説しているかをチェックしてください。 以下はN 選 1 召回模式の技術フローチャートです: {% hint style="info" %} N 選 1 召回はモデルの推理能力に依存しており、使用制限が多いため、この模式の召回策略を2024年第3四半期に調整する予定です。 {% endhint %} #### 多路召回模式(推奨) 多路召回模式では、リトリーバーがアプリに関連付けられたすべての知識ベースからユーザーの質問に関連するテキスト内容を検索し、多路召回の関連ドキュメント結果を統合し、後置の重排序(Rerank)ステップを通じて検索召回のドキュメントをセマンティックに再ランキングします。 以下は多路召回模式の技術フローチャートです: {% hint style="info" %} 多路召回模式ではRerankモデルの設定が必要です。 {% endhint %} 多路召回模式はモデルの推理能力や知識ベースの説明に依存しないため、この模式で多知識ベース検索時により高品質の召回効果を得ることができます。そのため、**召回模式を多路召回に設定することを推奨**します。 *** ### 3 重排序(Rerank) 重排序モデルは、候補ドキュメントリストとユーザーの質問のセマンティックな一致度を再ランキングすることで、セマンティックなランキングの結果を改良します。その原理は、ユーザーの質問と各候補ドキュメントとの関連性スコアを計算し、関連性の高い順にランキングされたドキュメントリストを返すことです。 混合検索+重排序 {% hint style="info" %} Rerankに関する詳細は、拡張読書[重排序](integrate_knowledge_within_application.md#zhong-pai-xu-rerank)を参照してください。 {% endhint %} #### Rerankモデルの設定方法 Difyは現在、Cohere Rerankモデルをサポートしています。「モデルプロバイダー -> Cohere」ページに進み、RerankモデルのAPIキーを入力してください: モデルプロバイダー内でCohere Rerankモデルを設定 Cohere Rerankモデルの取得方法 ログイン:[https://cohere.com/rerank](https://cohere.com/rerank)、ページ内で登録し、Rerankモデルの使用資格を申請し、APIキーを取得します。 {% hint style="info" %} Cohere Rerank APIをサポートするほか、OllamaやXinferenceなどのローカル推論フレームワークを使用して、bge-rerankerなどのローカルRerankモデルを内部にデプロイすることもできます。 {% endhint %} #### Rerankモデルの設定 「データセット -> データセットを作成 -> 検索設定」ページに進み、Rerank設定を追加します。データセットの作成時だけでなく、作成済みのデータセット設定内でもRerank設定を変更できます。アプリオーケストレーションのデータセット召回模式設定内でもRerank設定を変更できます。 データセット検索模式でRerankモデルを設定 **TopK**:Rerank後に関連ドキュメントを返す数を設定します。 **スコア閾値**:Rerank後に関連ドキュメントを返す最低スコアを設定します。Rerankモデル設定後、TopKとスコア閾値設定はRerankステップでのみ有効です。 「プロンプトオーケストレーション -> コンテキスト -> 設定」ページに進み、多路召回模式に設定する際にRerankモデルを有効にする必要があります。 データセットの多路召回模式でRerankモデルを設定
アプリ内での知識ベースの関連付け
混合検索+重排序
モデルプロバイダー内でCohere Rerankモデルを設定
データセット検索模式でRerankモデルを設定
データセットの多路召回模式でRerankモデルを設定