> ## Documentation Index
> Fetch the complete documentation index at: https://enterprise-docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 知識検索

## はじめに

知識検索ノードを使用すると、既存のナレッジベースをChatflowやワークフローに統合できます。このノードは指定されたナレッジからクエリに関連する情報を検索し、その結果を下流ノード（例：LLM）で利用できるコンテキスト情報として出力します。

以下はChatflowにおける知識検索ノードの利用例です：

1. **ユーザー入力** ノードがユーザーの質問を収集します。

2. **知識検索** ノードが選択されたナレッジベースからユーザーの質問に関連するコンテンツを検索し、検索結果を出力します。

3. **LLM** ノードがユーザーの質問と検索されたナレッジの両方をもとに回答を生成します。

4. **回答** ノードがLLMの応答をユーザーへ返します。

<img src="https://mintcdn.com/dify-4171f9f9/mZ12wIe1vYw_wFxp/images/knowledge_retrieval_node_example.png?fit=max&auto=format&n=mZ12wIe1vYw_wFxp&q=85&s=0c386aeb2c11a70b8d54a81ff577287a" alt="知識検索ノードの使用例" width="2022" height="580" data-path="images/knowledge_retrieval_node_example.png" />

<Info>
  知識検索ノードを使用する前に、少なくとも1つのナレッジベースが利用可能であることを確認してください。
</Info>

## 設定

知識検索ノードを正常に機能させるには、次の点を指定する必要があります：

* **何を**検索するか（クエリ）

* **どこを**検索するか（ナレッジベース）

* **どのように**検索結果を処理するか（ノードレベルの検索設定）

また、ドキュメントのメタデータを利用してフィルタベースの検索を有効化し、検索精度をさらに向上させることもできます。

### クエリの指定

ノードが選択されたナレッジベースで検索するクエリ内容を指定します。

* **クエリテキスト**：テキスト変数を選択します。たとえば、Chatflowでは`userinput.query`を使用してユーザー入力を参照したり、ワークフローではカスタムのテキスト型ユーザー入力変数を使用したりできます。

* **クエリ画像**：画像変数を選択します。例えば、ユーザー入力ノードを通じてユーザーがアップロードした画像を使用して画像検索を行います。画像サイズの上限は2 MBです。

  <Tip>
    セルフホスト環境では、環境変数`ATTACHMENT_IMAGE_FILE_SIZE_LIMIT`を変更することで画像サイズ上限を調整できます。
  </Tip>

  <Info>
    **クエリ画像**オプションは、少なくとも1つのマルチモーダルナレッジベースが追加されている場合のみ利用できます。

    そのようなナレッジベースには**Vision**アイコンが表示されており、マルチモーダル埋め込みモデルを使用していることを示しています。
  </Info>

### 検索対象ナレッジベースの選択

ノードでクエリ内容に関連するコンテンツを検索するためのナレッジベースを1つ以上追加します。

複数のナレッジベースを追加した場合、まずすべてのナレッジベースから同時に検索を行い、その後[ノードレベルの検索設定](#ノードレベルの検索設定)に従って結果を統合・処理します。

<Info>
  **Vision**アイコンが付いたナレッジベースはクロスモーダル検索をサポートしており、セマンティックな関連性に基づいてテキストと画像の両方を検索できます。
</Info>

<Tip>
  追加したナレッジベースの横にある**編集**アイコンをクリックすると、知識検索ノード内で直接その設定を変更できます。
</Tip>

### ノードレベルの検索設定

ナレッジベースから取得した検索結果を、ノード内でどのように処理するかを微調整できます。

<Info>
  検索設定には2つのレイヤーがあります—ナレッジベースレベルと知識検索ノードレベルです。

  これらは2つの連続したフィルターと考えてください：ナレッジベースの設定が最初の結果プールを決定し、ノードの設定がさらに結果を再ランク付けまたは絞り込みます。
</Info>

* **Rerank設定**

  * **ウェイト設定**：再ランク付け時におけるセマンティック類似度とキーワード一致の相対的な比重です。セマンティックの比重を高くすると意味的関連性を重視し、キーワードの比重を高くすると正確な一致を重視します。

    <Info>
      **ウェイト設定**は、追加したナレッジベースがすべて高品質タイプである場合のみ利用できます。
    </Info>

  * **Rerankモデル**：クエリとの関連度に基づいてすべての結果を再スコアリング・並べ替えするRerankモデルです。

  <Note>
    マルチモーダルナレッジベースが追加されている場合は、マルチモーダルRerankモデル（**Vision**アイコン付き）も選択してください。そうでない場合、検索された画像は再ランク付けおよび最終出力から除外されます。
  </Note>

* **トップK**：再ランク後に返す結果の最大件数です。Rerankモデルを選択している場合、この値はモデルの最大入力容量（モデルが一度に処理できるテキスト量）に基づいて自動的に調整されます。

* **スコア閾値**：返される結果の最低類似度スコアです。この閾値未満の結果は除外されます。高めに設定すると関連性の厳密な検索が行われ、低めにするとより広範なマッチを含めることができます。

### メタデータフィルタの有効化

既存のドキュメントメタデータを使用して、ナレッジベース内の特定のドキュメントに検索を制限し、検索精度を向上させます。

メタデータフィルタを有効にすると、知識検索ノードはナレッジベース全体を検索するのではなく、指定されたメタデータ条件に一致するドキュメントのみを検索します。これは、大規模で多様なナレッジベースでのターゲット検索に特に有用です。

## 出力

知識検索ノードの出力は`result`という変数として返されます。この変数は検索されたドキュメントチャンクの配列で、各チャンクにはコンテンツ、メタデータ、タイトル、その他の属性が含まれます。

検索結果に画像添付が含まれる場合、`result`変数には画像メタデータを含む`files`というフィールドも含まれます。

## LLMノードとの連携

LLMノードでユーザーの質問に回答するためのコンテキストとして検索結果を使用するには：

1. **コンテキスト**フィールドで、知識検索ノードの`result`変数を選択します。

2. プロンプトフィールドで、`Context`変数とユーザー入力変数（例：Chatflowの`userinput.query`）の両方を参照します。

3. （任意）LLMがVision機能に対応している場合（**Vision**アイコン付き）、**Vision**を有効にして検索された画像を解釈させることができます。

   <Info>
     **Vision**を有効にすると、LLMは検索された画像を自動的に処理します。**Vision**入力フィールドで`Context`変数を再度手動で参照する必要はありません。
   </Info>

<img src="https://mintcdn.com/dify-4171f9f9/mZ12wIe1vYw_wFxp/images/llm_node_configuration_example.png?fit=max&auto=format&n=mZ12wIe1vYw_wFxp&q=85&s=0dac71cc6918c082171ca5012767b35c" alt="LLMノード設定の例" width="400" data-path="images/llm_node_configuration_example.png" />
