IBM Cloud Docs
カスタム・サービスの統合設定

カスタム・サービスの統合設定

Plus Enterprise

カスタムサービス統合は、あなたが作成した検索機能を使って情報を検索します。 カスタム・サービスとアシスタントの会話型検索機能との統合を利用して、AI応答を生成することができます。 この統合は、サーバーサイドとクライアントサイドの両方の情報検索をサポートする。

検索統合は1つの環境につき1つしかできません。 既存の検索統合を IBM Watson® Discovery Elasticsearch、 Milvus などの他の統合タイプに変更すると、既存の検索統合の設定は上書きされます。

カスタムサービスの選択

検索統合としてカスタムサービスを選択するには、以下の手順のいずれかを使用します:

  • 統合ページからカスタムサービス検索統合を選択する

    1. watsonx Assistantインスタンスを作成したら、Home > Integrations に進みます。
    2. 検索タイル内の開くをクリックすると、「検索を開く」ウィンドウが表示されます。
    3. 検索を開く」ウィンドウで、アシスタントのドラフト環境にカスタムサービスを設定したい場合は、ドロップダウンから Draft オプションを選択します。 アシスタントのライブ環境でカスタムサービスを設定したい場合は、ドロップダウンで Live オプションを選択します。
    4. 次の "Edit an existing new search integration "ウィンドウで、カスタムサービスタイルを選択します。
  • 「環境」ページからカスタムサービス検索統合を選択

    1. watsonx Assistantインスタンスを作成したら、Home > Environments に進みます。

    2. ドラフト環境でカスタムサービスを設定する場合は、Draft タブを選択してください。 ライブ環境でカスタムサービスを設定したい場合は、Live タブを選択してください。

    3. 解決方法セクションで、拡張機能の下にある検索タイル内の追加をクリックします。

      カスタムサービス検索統合をすでに追加している場合、拡張機能の下にある検索タイル内に、追加の代わりに開くボタンが表示されます。

    4. Set up a new search extension ウィンドウで「カスタムサービス」 タイルを選択し、「Search integration ダイアログを表示する。

    カスタムサービスを選択
    カスタムサービスを選択

アシスタントは検索パラメータをカスタムサービスに直接渡したり、検索結果をカスタムサービスから直接取得したりすることに制限があります。 カスタムサービスの検索統合では、アシスタントによって提供される検索APIインターフェースを実装したアクセス可能なウェブサーバーをホストするか、または検索結果を提供するためにアシスタントを呼び出すように構成されたクライアントが必要です。 詳細については、カスタムサービスの検索システムの設定 を参照してください。

サーバー認証情報によるカスタムサービスの設定

サーバーの認証情報を使ってアシスタントにCustomサービスをセットアップするには、以下の手順に従ってください:

  1. カスタムサービスウィンドウの検索プロバイダーに接続するセクションで、資格情報を提供するを選択します。 デフォルトでは、このオプションは選択されています。

  2. アシスタントがカスタムサービスインスタンスに接続できるように、以下のフィールドを入力してください:

    • URL
    • 認証の種類を選択してください
      • Basic authentication を選択した場合は、 ユーザー名パスワードを入力する必要があります。
      • API key を選択した場合は、APIキーを指定する必要があります。
      • None を選択した場合、他の認証情報を入力することはできません。
  3. 次へをクリックして、会話検索(オプション) に進みます。

  4. 会話型検索を有効にしたい場合は、会話型検索トグルを on に切り替えてください。 会話型検索についての詳細は、会話型検索 をご覧ください。

  5. デフォルトフィルターメタデータの記入は任意です。 サーバーが検索リクエストを実行するために、これらのフィールドに情報を配置することができます。 メタデータはJSONオブジェクトでなければならず、デフォルトのフィルターはテキスト文字列である。 検索を開始するアクション・ステップまたはダイアログ・ノードで、デフォルト・フィルタを上書きすることができます。 他のオプションでメタデータを上書きすることはできず、提供したメタデータはこの統合のすべての用途に適用されます。 詳しくは、サーバーのデフォルトフィルターとメタデータの設定を参照してください。

  6. 「結果なし」「接続の問題」 のタブを使用して、検索の成功/失敗に応じてユーザーに表示するメッセージをカスタマイズします。

    カスタムサービス検索結果メッセージ
    タブ シナリオ メッセージの例
    結果が見つかりません 検索結果が見つからない I searched my knowledge base for information that might address your query, but did not find anything useful to share.
    接続の問題 何らかの理由により検索を実行できない I might have information that could help address your query, but am unable to search my knowledge base at the moment.
  7. 保存をクリックし、閉じるをクリックして、サーバー認証情報を使ったカスタムサービスのセットアップを終了します。

    カスタムサービスサーバーを選択
    カスタムサービスサーバーを選択

クライアントを通してカスタムサービスを設定する

クライアントを通じてアシスタントにカスタムサービスを設定するには、以下の手順を実行します:

  1. カスタムサービスウィンドウの検索プロバイダーとの接続セクションで、「クライアントを通して」を選択します。

  2. 次へをクリックして、会話検索(オプション) に進みます。

  3. 会話型検索を有効にしたい場合は、会話型検索トグルを on に切り替えてください。 会話型検索についての詳細は、会話型検索 をご覧ください。

  4. デフォルトフィルターメタデータの記入は任意です。 サーバーが検索リクエストを実行するために、これらのフィールドに情報を配置することができます。 メタデータはJSONオブジェクトでなければならず、デフォルトのフィルターはテキスト文字列である。 検索を開始するアクション・ステップまたはダイアログ・ノードで、デフォルト・フィルタを上書きすることができます。 他のオプションでメタデータを上書きすることはできず、提供したメタデータはこの統合のすべての用途に適用されます。 詳しくは、クライアントのデフォルトフィルターとメタデータの設定を参照してください。

  5. 「結果なし」「接続の問題」 のタブを使用して、検索の成功/失敗に応じてユーザーに表示するメッセージをカスタマイズします。

    カスタムサービス検索結果メッセージ
    タブ シナリオ メッセージの例
    結果が見つかりません 検索結果が見つからない I searched my knowledge base for information that might address your query, but did not find anything useful to share.
    接続の問題 何らかの理由により検索を実行できない I might have information that could help address your query, but am unable to search my knowledge base at the moment.
  6. 保存] をクリックし、[閉じる] をクリックして、クライアント側のカスタムサービスのセットアップを終了します。

カスタムサービスのための Milvusの設定

Milvusは、大規模なデータセットを扱うために使用できるベクターデータベースです。 リアルタイム検索機能と多数の同時ユーザーを必要とするアプリケーションには、分散アーキテクチャ、高いパフォーマンス、柔軟なデータモデルを備Milvus を使用できます。

カスタムサービスを使用するのではなく watsonx.data Milvusに直接統合することができます。 詳細については、 Milvus 検索統合セットアップ を参照してください。

Milvusでより高度な検索機能を利用するには、カスタムサービス検索を使用する必要があります:

サーバ認証情報による Milvusのセットアップ

  1. watsonx.data Milvusの設定については、「 watsonx.data Milvus による検索統合の設定ガイド 」を参照してください。
  2. サーバー認証情報を持つアシスタントの一般的な設定については 、「サーバー認証情報を持つカスタムサービスの設定 」を参照してください。
  3. Milvusの使用例や参考文献については、 Milvusの使用例をご覧ください。

クライアントを通してMilvusを設定する

「クライアント経由でカスタム サービスを設定する 」の手順に従って、クライアント経由でアシスタントに Milvusを設定します。

カスタムサービスのための検索システムの設定

検索統合でカスタムサービスを使用するには、サーバーを提供するか、検索結果を提供するためにアシスタントを呼び出すクライアントを持つことによって、検索機能を統合する必要があります。 検索スキーマがアシスタントから提供されたスキーマと一致する場合は、独自の検索を使用できます。 検索スキーマがアシスタントのスキーマと一致しない場合、スキーママッピングを行うラッパーを提供しなければなりません。 ラッパーをサービスとしてデプロイすることも、チャット・クライアントが起動することもできます。 ラッパーを構築することは、異なるソースを組み合わせたい場合や、検索結果のアシスタントのスキーマに準拠していないライブラリやサービスを呼び出したい場合に便利です。

カスタムサービス検索用サーバーの設定

カスタムサービス検索用サーバーは、以下のAPIを実装する必要があります:

照会:POST <server_url>

要求

{
    "query": "<QUERY>",
    "filter": "<FILTER>", // optional
    "metadata": {
        // optional, you can fill any information here
    }
}

応答

{

  "search_results": [
    {
      "result_metadata": { // optional
        "score": <SCORE as a number>
      },
      "title": "<TITLE>",
      "body": "<BODY>",
      "url": "<URL>", // optional
      "highlight": { // optional, will be used instead of "body" for Conversational Search if provided
        "body": [
          "<HIGHLIGHT1>",
          "<HIGHLIGHT2>",
           ...
        ]
      }
    }
  ]

}

リクエストのメタデータとレスポンスオブジェクト全体は、100KBを超えてはならない。

カスタムサービス検索用クライアントの設定

/message APIが実行時に検索をリクエストすると、次のようなAPIレスポンスが返ってくる:

{
    "output": {
        "intents": [ ... ],
        "actions": [
            {
                "type": "search",
                "query": "<QUERY>",
                "filter": "<FILTER>",
                "metadata": { // optional
                    /* you can use any JSON object here */
                }
            }
        ]
    }
}

チャットクライアントがそのフォームで応答を受信するたびに(それは search 型の output.actions リストにエントリを持っています)、次のように /message API を呼び出してアシスタントに結果を返します:

{
    "input": {
        "message_type": "search_results",
         "search_results": [
          {
            "result_metadata": { // optional
                "score": <SCORE as a number>
            },
            "title": "<TITLE>",
            "body": "<BODY>",
            "url": "<URL>", // optional
            "highlight": { // optional, will be used instead of "body" for Conversational Search if provided
                "body": [
                "<HIGHLIGHT1>",
                "<HIGHLIGHT2>",
                ...
                ]
            }
         }
     ]
  }
}

アシスタント・レスポンスの上限は100KBまでです。 もしアシスタントが100KBを超える search_results メッセージを受け取った場合、400レスポンスを返します。

会話型検索における検索結果の処理

カスタムサービスをセットアップする際にサーバー認証情報を提供したり、クライアントからの結果を送信したり、カスタムサービスで会話型検索を有効にすると、以下の動作が得られます

  1. 会話型検索は、検索結果を最初から最後まで繰り返し表示する。
  2. それぞれの検索結果から:
    • highlight.body リストがない場合は、body をテキストスニペットとして受け取ります。
    • highlight.body のリストがある場合は、そのリストの各要素をテキストスニペットとして受け取ります。
  3. 重複するテキストスニペットを破棄した後、検索結果と highlight.body リストを5つのテキストスニペットになるまで繰り返し続けます。
  4. 会話型検索は、クエリと検索結果を比較し、クエリと検索結果の関連性を判断するために、事前に生成されたフィルターモデルを適用する。 前世代フィルターモデルが2つのスコアを生成する場合:
    • 低スコアの会話型検索は、わからないというシグナルを返す。 わからないシグナルの詳細については、会話型検索 を参照してください。
    • 高得点の会話型検索は、スニペットと対応するタイトルを生成AIモデルに送り、回答を生成する。
  5. テキストが長すぎて生成AIモデルが処理できない場合は、短くなるまで最後のスニペットやタイトルのペアを繰り返し破棄する。 テキストがない場合、検索は失敗する。
  6. 会話型検索は、フィルター後のモデルに応答を適用する。 フィルター後のモデルが2つのスコアを出した場合:
    • 低スコアの会話型検索は、わからないというシグナルを返す。
    • 高得点の会話型検索は、生成された応答をすべての search_results とともに呼び出し元のアプリケーションに返します。

アシスタントは、ElasticsearchやIBM Watson® Discoveryのような他の検索オプションについても同じプロセスを実行します。

bodyhighlight.body に別々のフィールドを追加する

highlight.body が存在する場合は、会話型検索の回答を生成するために使用され、そうでない場合は body が使用されます。 どちらも検索結果オブジェクトの一部としてクライアントに渡され、クライアントは答えのコンテキストを提供する。 例えば、組み込みのウェブチャットは body テキストを表示します。 検索結果の引用カードをクリックしても、その検索結果の URLは表示されない。

フィールドを使用する際の推奨事項

  • 検索技術が文書の短い部分を返す場合は、その部分を body フィールドに使用し、highlight.body は省略します。 例えば、多くのベクトルデータベースソリューションは、ドキュメントの512トークンセグメントしか保存しない。
  • 検索技術が文書の短い部分(「パッセージ」、「ハイライト」、「スニペット」)と全文の両方を返す場合は、highlight.body フィールドで短い部分を使い、body フィールドで全文を使います。

オプションのユーザー定義メタデータの追加

クライアントでもサーバーでも、結果のスキーマには metadata フィールドと result_metadata フィールドがあります。

フィールドを使用する際の推奨事項

  • metadata フィールドは、検索機能に設定情報を送信します。 検索機能に使用される設定情報の例としては、インデックス名、埋め込みモデル名、要求される通路の長さ、ブーストするフィールドなどがある。 以下の理由は、metadata フィールドを使ってサーバーやクライアントに設定情報を渡すと便利な理由を説明しています:
    • 複数のアシスタントは、同じサーバーまたはクライアントコードを使用することができますが、構成は異なります。
    • アシスタントが1人であっても、アシスタントのインターフェイスを通じて簡単にコンフィギュレーションを更新することができる。
  • result_metadata フィールドは、検索結果に関する追加情報をサーバーまたはクライアントからアシスタントに送信します。 アシスタントは、最終レスポンスの search_results オブジェクトの一部として情報を渡します。 呼び出し側のアプリケーションは追加情報を使用する。 例えば、result_metadata が検索結果の画像のURLを送信すると、呼び出し元のアプリケーションはレスポンスと一緒に画像を表示します。