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

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

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

重要:

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

カスタムサービスの選択

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

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

    1. AIアシスタントビルダー のインスタンスを作成したら、 「ホーム 」>「 統合」 に移動してください。

    2. 検索タイル内の'オープンをクリックし、"Open Search "ウィンドウを表示する。

    3. AI アシスタントのドラフト環境でカスタムサービスを設定する場合は、「検索を開く」ウィンドウのドロップダウンメニューから オプション Draft を選択してください。 AI アシスタントの実稼働環境でカスタムサービスを設定する場合は、ドロップダウンメニューから[ Live オプション]を選択してください。

    4. 次の "Edit an existing new search integration"(既存の新しい検索統合を編集する)ウィンドウで、カスタムサービスタイルを選択します。

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

    1. AIアシスタントビルダー のインスタンスを作成したら、 「ホーム 」>「 環境」 に移動してください。

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

    3. 解決方法セクションで、カスタムサービス検索統合を追加したい場合は、「拡張機能」の下にある「検索」タイル内の「追加」をクリックします。

ヒント:

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

  1. Set up a new search extension "ウィンドウで "Custom service"タイルを選択し、"Search integration "ダイアログを表示します。

カスタマーを選択

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

サーバー 認証情報を使用してAIアシスタントにカスタムサービスを設定するには、以下の手順に従ってください:

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

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

    • URL

    • 認証タイプを選択する

      • Basic authentication選択した場合、ユーザー名パスワードを入力する必要があります。

      • API key選択した場合は、APIキーを入力する必要があります。

      • None選択した場合、他の認証情報を入力することはできません。

  3. NextをクリックしてConversational searchに進みます(オプション)

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

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

  6. 検索結果が見つかりませんでした」と「接続性の問題」タブを使用して、検索の成功に基づいてユーザーと共有するさまざまなメッセージをカスタマイズできます。

表 1. カスタムサービスの検索結果メッセージ

タブ

シナリオ

メッセージの例

結果が見つかりません

検索結果が見つからない

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.

  1. 保存]をクリックし、[閉じる]をクリックして、サーバー認証情報によるカスタムサービスのセットアップを終了します。

税関サービスサーバーを選択

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

クライアントを通じてAIアシスタントにカスタムサービスを設定するには、以下の手順に従ってください:

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

  2. NextをクリックしてConversational searchに進みます(オプション)

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

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

  5. 検索結果が見つかりませんでした」と「接続性の問題」タブを使用して、検索の成功に基づいてユーザーと共有するさまざまなメッセージをカスタマイズできます。

表 2. カスタムサービスの検索結果メッセージ

タブ

シナリオ

メッセージの例

結果が見つかりません

検索結果が見つからない

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.

  1. 保存]をクリックし、[閉じる]をクリックして、クライアント側で設定したカスタムサービスを終了します。

カスタムサービス用に Milvus を設定する

カスタム サービスを使用する代わりに、 watsonx.data Milvus を会話型検索に直接統合できます。 詳細については、 「 Milvus の検索連携の設定」 をご覧ください。

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

  • Milvus および watsonx.ai でサポートされているあらゆる埋め込みモデルを柔軟に利用できます。

Milvus でサポートされている埋め込みモデルのリストについては、 Milvus supported embedding models を参照してください。

サーバーの認証情報を使用して Milvus を設定する

  1. watsonx.data Milvus の設定については、 watsonx.data Milvus の検索連携設定ガイドを参照してください。

  2. サーバー認証情報を持つアシスタントの一般的なセットアップについては 、「サーバー認証情報を持つカスタムサービスのセットアップ 」を参照してください。

  3. Milvus の使用例や参考情報については、[ Milvus を使用した例]( https://github.com/watson-developer-cloud/assistant-toolkit/blob/master/integrations/extensions/starter-kits/search-with-custom-service/custom-search-server-setup-guide.md#example-with-milvus )をご覧ください。

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

「クライアント経由でのカスタムサービスの設定」 に記載されている手順に従い、 クライアントを通じてAIアシスタントに Milvus を設定してください。

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

検索連携でカスタムサービスを利用するには、サーバーを提供して検索機能を連携させるか、 AIアシスタントを呼び出すクライアントに検索結果を提供させる必要があります。 リトリーバルスキーマが AI アシスタントが提供するスキーマと一致している場合は、独自のリトリーバルを使用できます。 検索スキーマが AIアシスタントのスキーマと一致しない場合は、スキーマのマッピングを行うラッパーを用意する必要があります。 ラッパーをサービスとしてデプロイすることも、チャット・クライアントが起動することもできます。 ラッパーを作成するのは、異なるソースを組み合わせたい場合や、 AIアシスタントの検索結果のスキーマに準拠していないライブラリやサービスを呼び出したい場合に役立ちます。

カスタムサービスの取得用サーバーの設定

カスタムサービス検索用サーバーは、以下の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>",
           ...
        ]
      }
    }
  ]

}
重要:

リクエスト内のメタデータおよびレスポンスオブジェクト全体のサイズは、100 KBを超えてはなりません。

カスタムサービスの取得を行うクライアントの設定

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

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

チャットクライアントがその形式の応答を受信するたびに(型 の output.actions リストに searchエントリがある場合)、次 /message API のように への次の呼び出しを通じて、結果を AIアシスタントに返します:

{
    "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>",
                ...
                ]
            }
         }
     ]
  }
}
重要:

AIアシスタントの応答サイズは100 KBを超えてはなりません。 AIアシスタントが、本文が100 KBを超えるメッセージ search_resultsを受信した場合、400ステータスコードを返します。

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

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

  1. 会話型検索は、検索結果を最初から最後まで繰り返し表示する。

  2. それぞれの検索結果から:

    • highlight.bodyリストがない場合は、'bodyをテキストスニペットとして受け取ります。

    • highlight.bodyリストがある場合、そのリストの各要素をテキストスニペットとして受け取る。

  3. 重複するテキスト・スニペットを破棄した後、5つのテキスト・スニペットができるまで、検索結果と「highlight.bodyリストを繰り返し続けます。

  4. 会話型検索は、クエリと検索結果を比較し、クエリと検索結果の関連性を判断するために、事前に生成されたフィルターモデルを適用する。 前世代フィルターモデルが2つのスコアを生成する場合:

    • 低スコアの会話型検索では、「わからない」というシグナルが返される。 I don't knowシグナルの詳細については、会話型検索を参照のこと。

    • 高得点の会話型検索は、スニペットと対応するタイトルを生成AIモデルに送り、回答を生成する。

  5. テキストが長すぎて生成AIモデルが処理できない場合は、短くなるまで最後のスニペットやタイトルのペアを繰り返し破棄する。 テキストがない場合、検索は失敗する。

  6. 会話型検索は、フィルター後のモデルに応答を適用する。 フィルター後のモデルが2つのスコアを出した場合:

    • 低スコアの会話型検索では、「わからない」というシグナルが返される。

    • 高得点の会話型検索は、生成された応答をすべての「search_results」とともに呼び出し元のアプリケーションに返す。

AIアシスタントは、「 Elasticsearch 」などの他の検索オプションについても、同様の手順に従います。

および body 用の個別のフィールドを追加する highlight.body

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

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

  • 検索技術が文書の短い部分を返す場合は、その部分を「bodyフィールドに使用し、「highlight.body」は省略する。 例えば、多くのベクトルデータベースソリューションは、ドキュメントの512トークンセグメントしか保存しない。

  • 検索技術が文書の短い部分(「パッセージ」、「ハイライト」、「スニペット」)と全文の両方を返す場合は、「highlight.bodyフィールドに短い部分を使用し、「bodyフィールドに全文を使用する。

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

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

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

  • metadataフィールドは、検索機能に設定情報を送信する。 検索機能に使用される設定情報の例としては、インデックス名、埋め込みモデル名、要求される通路の長さ、ブーストするフィールドなどがある。 以下の理由は、「metadataフィールドを使ってサーバーやクライアントにコンフィギュレーション情報を渡すと便利だからである:

    • 複数のアシスタントは、同じサーバーまたはクライアントコードを使用することができますが、構成は異なります。

    • アシスタントが1人であっても、アシスタントのインターフェイスを通じて簡単にコンフィギュレーションを更新することができる。

  • この result_metadata フィールドは、サーバーまたはクライアントから AIアシスタントへ、検索結果に関する追加情報を送信します。 AIアシスタントは、その情報を最終的な応答内のオブジェクト search_results の一部として渡します。 呼び出し側のアプリケーションは追加情報を使用する。 たとえば、が検索結果内の result_metadata 画像のURLを送信すると、呼び出し元のアプリケーションはレスポンスとともに画像を表示します。