高度な予測入力を構成する

このページでは、Agent Search の高度な予測入力機能について説明します。

基本的な予測入力と同様に、高度な予測入力は、クエリに入力された最初の数文字に基づいてクエリの候補を生成します。

このページを読む前に、Agent Search の基本的な予測入力について理解しておいてください。予測入力を構成するをご覧ください。

高度な予測入力の主な機能

高度な予測入力の主な機能は、基本的な予測入力と区別されます。

  • 統合検索: 複数のデータストアに接続されているカスタム検索アプリである統合検索アプリで、高度な予測入力を使用できます。

  • アクセス制御: 高度な予測入力はアクセス制御に従います。アクセス制御は ACL(アクセス制御リスト)とも呼ばれます。高度な予測入力は、検索者がアクセスできるドキュメントに関連する検索クエリのみを提示します。アクセス制御については、データソースのアクセス制御を使用するをご覧ください。

  • 言語ブースト: 1 つ以上の言語の候補をブーストするように、高度な予測入力を設定できます。たとえば、ブラウザの言語がオランダ語の場合、その言語の予測入力候補をブーストさせることができます。詳細については、言語ブーストを使用して予測入力リクエストを送信するをご覧ください。

始める前に

高度な予測入力の使用を開始する前に、次の操作を行います。

  • アプリの予測入力の設定を確認し、必要に応じて編集します。予測入力の設定を更新するをご覧ください。

  • 小規模なデータストアの場合は、[予測入力を有効にする] を [今すぐ] に設定します。小規模なデータストアには、正確な提案を行うのに十分なデータが含まれていない可能性があるため、この方法をおすすめします。

  • データストアに個人情報(PII)が含まれている場合や、検索履歴またはユーザー イベントのクエリ候補モデルを使用する場合は、PII の漏洩を防ぐを確認し、PII の漏洩を防ぐために必要なデータ損失防止(DLP)の保護を設定します。

  • 最近の検索候補(RECENT_SEARCH)を使用する場合は、検索ユーザー イベントを記録していることを確認してください。SearchService.Search メソッドを使用して検索が実行された場合、エージェント検索は最近の検索インデックスを自動的に入力しません。最近のクエリを返すには、userEvents.write メソッドを使用して検索ユーザー イベントを記録する必要があります。最近のクエリの前にをご覧ください。

予測入力リクエストを送信する

次の例は、completionConfig.completeQuery メソッドを使用して高度な予測入力リクエストを送信する方法を示しています。

REST

API を使用して予測入力リクエストを送信する手順は次のとおりです。

  1. アプリ ID を調べます。アプリ ID をすでに保有している場合は、次のステップに進みます。

    1. Google Cloud コンソールで、[AI Applications] ページに移動します。

      [アプリ] に移動

    2. [アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。

  2. completionConfig.completeQuery メソッドを呼び出します。

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/completionConfig:completeQuery" \
    -d '{
          "query":"QUERY_STRING"
        }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。

    • APP_ID: エージェント検索アプリの ID。

    • QUERY_STRING: 候補の取得に使用される予測入力。

言語ブーストを使用して予測入力リクエストを送信する

言語コードに応じて、予測入力候補のをブーストまたは非表示できます。たとえば、一部の言語での予測入力の候補の表示頻度を高めたり低くしたりできます。

値は -1~1 の範囲で指定してください。負の数値を設定すると、その言語の予測入力の候補が「埋もれ」、正の数値を設定すると、その言語がブーストされます。

BCP 47 で定義されている 2 文字の言語タグ(en、fr、hi、zh など)を使用します。

REST

言語ブースト値を含む予測入力リクエストを送信する手順は次のとおりです。

  1. アプリ ID を調べます。アプリ ID をすでに保有している場合は、次のステップに進みます。

    1. Google Cloud コンソールで、[AI Applications] ページに移動します。

      [アプリ] に移動

    2. [アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。

  2. completionConfig.completeQuery メソッドを呼び出します。

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/completionConfig:completeQuery" \
    -d '{
          "query":"QUERY_STRING",
          "boostSpec": {
             "conditionBoostSpecs": [{
               "condition": "(langCode: ANY(LANG_CODE))",
               "boost": BOOST_VALUE
             }]
          }
        }'
    
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。

    • APP_ID: エージェント検索アプリの ID。

    • QUERY_STRING: 候補の取得に使用される予測入力。

    • LANG_CODE: 1 つ以上の言語の 2 文字のコード(エスケープされた引用符で囲みます)。たとえば、\"fr\", \"es\" はスペイン語とフランス語にブースト値を適用します。

    • BOOST_VALUE: -1~1 の浮動小数点数。値が負の場合、その言語の予測入力候補は降格されます(候補リストの下位に表示されます)。値が正の場合、結果は昇格されます(リストの上位に表示されます)。

予測入力リクエストを送信して最近のクエリを返す

リクエストのクエリと接頭辞が一致するユーザーの最新のクエリのリストを候補として返します。

一致するクエリ候補は、新しいものから古いものの順に表示されます。最近の検索を使用するには、ユーザーの疑似 ID を指定する必要があります。

始める前に

予測入力で最近のクエリを取得するには、userEvents.write メソッドを呼び出して、ユーザー検索を検索ユーザー イベントとして記録する必要があります。

検索ユーザー イベントが書き込まれていない場合、suggestionTypes: ["RECENT_SEARCH"] を含む completionConfig.completeQuery へのリクエストは、候補の空のリスト({})を返します。

検索ユーザー イベントを記録するには、次の値を使用して userEvents.write メソッドに POST リクエストを送信します。

  • eventType: "search" に設定します。
  • userPseudoId: ユーザーの一意の仮名化 ID に設定
  • engine: エンジンのリソース名に設定します。
  • searchInfo.searchQuery: ユーザーが入力した検索クエリ文字列に設定
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/userEvents:write" \
  -d '{
        "eventType": "search",
        "userPseudoId": "USER_PSEUDO_ID",
        "engine": "projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID",
        "searchInfo": {
          "searchQuery": "SEARCH_QUERY"
        }
      }'

次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • LOCATION: アプリまたはデータストアのロケーション(global、us など)。
  • APP_ID: エージェント検索アプリの ID。
  • USER_PSEUDO_ID: ユーザーの仮名化 ID。これは、後続の completionConfig.completeQuery リクエストで渡される userPseudoId と一致する必要があります。
  • SEARCH_QUERY: ユーザーが検索したクエリ文字列。

詳しくは、userEvents.write メソッドを使用してリアルタイムのユーザー イベントを記録するをご覧ください。

例

ある社員が会社のイントラネット サイトにクエリを実行して、有給休暇に関する情報を取得しています。従業員が実行したクエリは次のとおりです(新しい順に並べられています)。

PTO、Vacation blackout periods、How much vacation time do I have?、Time off、Vacation policy、covering a vacant position during absences、Can I take unpaid time off?。

ここで、この社員が検索ボックスに「vac」と入力すると、次のような予測入力の候補が表示されます。

  • Vacation blackout periods
  • How much vacation time do I have?
  • Vacation policy
  • Covering a vacant position during absences

手順

ユーザーの最新のクエリを返す予測入力リクエストを送信する手順は次のとおりです。

REST

  1. アプリ ID を調べます。アプリ ID をすでに保有している場合は、次のステップに進みます。

    1. Google Cloud コンソールで、[AI Applications] ページに移動します。

      [アプリ] に移動

    2. [アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。

  2. completionConfig.completeQuery メソッドを呼び出します。

    
    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/completionConfig:completeQuery" \
    -d '{
          "query":"QUERY_STRING",
          "suggestionTypes": ["RECENT_SEARCH"],
          "userPseudoId": "USER_PSEUDO_ID"
        }'
    
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。

    • APP_ID: エージェント検索アプリの ID。

    • QUERY_STRING: 候補の取得に使用される予測入力。

    • USER_PSEUDO_ID: ユーザーの仮名化 ID。このフィールドには HTTP Cookie を使用できます。これにより、1 つのデバイス上の訪問者を一意に識別できます。このフィールドを複数のユーザーに対して同じ ID に設定しないでください。これにより、クエリ履歴が統合されます。このフィールドには、個人を特定できる情報(PII)は含めないでください。

予測入力の拒否リストを使用する

拒否リストを使用して、特定のキーワードが予測入力の候補として表示されないようにします。

高度な予測入力はアプリレベルですが、拒否リストはデータストアレベルです。これは、アプリが統合検索アプリである場合に重要です。アプリに接続されている各データストアの拒否リストを作成します。

拒否リストの作成と使用については、予測入力の拒否リストを使用するをご覧ください。

インポートした予測入力の候補のリストを使用する

予測入力データモデルから生成された予測入力の候補を使用する代わりに、独自の予測入力の候補のリストを提供することもできます。

リストをインポートする方法については、インポートした予測入力候補のリストを使用するをご覧ください。