自然言語理解でフィルタする

このページでは、自然言語理解を適用して検索クエリのフィルタを自動的に作成し、返される結果の品質を向上させる方法について説明します。

この機能は、構造化データストアに接続されている検索アプリで使用できます。

自然言語クエリの理解について

構造化データを含むカスタム検索アプリがある場合、ユーザーの自然言語クエリをフィルタされたクエリとして再フォーマットできます。これにより、クエリ文字列内の単語を検索するよりも質の高い検索結果が得られる可能性があります。

自然言語クエリの理解を使用する方が、独自のフィルタ式を作成するよりも簡単で柔軟です。フィルタ式を作成する方法については、構造化データまたは非構造化データのカスタム検索をフィルタするをご覧ください。

この機能は、例で説明するのが最適です。

例: クエリからのフィールド抽出

この自然言語クエリ理解機能は、ホテルの検索の例で説明されています。

ホテル サイトの構造化データストアに対して行われた次のクエリを考えてみましょう。「1 泊 300 未満で、4 つ星以上の子供連れ向けホテルを探してください。犬を連れて行きたいですし、無料 Wi-Fi が必要です。」

自然言語クエリの理解がない場合、検索アプリはクエリ内の単語を含むドキュメントを検索します。

自然言語クエリの理解と適切に構造化されたデータにより、クエリ内の自然言語の一部をフィルタに置き換えることで、検索の効率性が向上します。 構造化データに star_rating(数値)、price(数値)、amenities(文字列)のフィールドがある場合、クエリは次のフィルタと残留クエリとして書き換えることができます。

  • 自然言語クエリから抽出されたフィルタ:

    {
        "star_rating": ≥4,
        "price": ≤300,
        "amenities": "Wifi", "Pets Allowed"
    }
    
  • フィルタの抽出後に再定義された残留クエリ:

    family-friendly

例: 位置情報フィルタを使用する

この例は前の例と似ていますが、位置情報フィルタが含まれている点が異なります。これは、特別な種類の抽出フィルタです。Vertex AI Search には、クエリ内の場所を認識し、その場所の近接フィルタを作成する機能があります。

州全体のビジネス サイトに対して行われた次のクエリを考えてみましょう。「サンフランシスコにある、4 つ星以上のシックでスタイリッシュなホテルを探してください。」

自然言語クエリの理解と位置情報フィルタにより、検索はフィルタと残留クエリとして再定義されます。

  • 自然言語クエリから抽出されたフィルタ(少なくとも 4 つ星の評価で、サンフランシスコから半径 10 km 以内):

    {
        "star_rating": ≥4,
        "location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
    }
    

    この例では、GEO_DISTANCE は住所ですが、元のクエリに住所が含まれていても、他のクエリでは緯度と経度として記述されることがあります。

  • フィルタの抽出後に再定義された残留クエリ:

    chic and stylish in San Francisco

    位置情報フィルタが作成されても、地名は残りのクエリに残ります。これは、star_rating などの他のフィルタとは異なります。

制限事項

自然言語クエリの理解には次の制限が適用されます。

  • 自然言語クエリの理解は、統合検索アプリには適用できません。統合検索アプリで自然言語クエリの理解を使用すると、エラーが発生します。

  • 自然言語クエリの理解は、構造化データストアを使用するカスタム検索アプリでのみ機能します。

  • 自然言語クエリの理解を使用するとレイテンシが増加するため、レイテンシが問題になる場合は使用しないことを選択できます。

  • 位置情報の場合は、場所を明示的に説明する必要があります。「近く」や「自宅」などの位置情報は使用できません。

  • 位置情報の半径は 10 km で、構成できません。

始める前に

自然言語クエリの理解を使用する前に、使用する予定のアプリに接続されている構造化データストアで有効にする必要があります。

自然言語クエリの理解を有効にする手順は次のとおりです。

REST

  1. データストア ID を確認します。データストア ID がすでにある場合は、次のステップに進みます。

    1. Google Cloud コンソールで、[AI アプリケーション] ページに移動し、ナビゲーション メニューで [データストア] をクリックします。

      [データストア] ページに移動

    2. データストアの名前をクリックします。

    3. データストアの [データ] ページで、データストア ID を取得します。

  2. 次の curl コマンドを実行します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID?update_mask=natural_language_query_understanding_config.mode" \
    -d '{
          "naturalLanguageQueryUnderstandingConfig": {
            "mode": "ENABLED"
          }
        }'
    

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

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • DATA_STORE_ID: Vertex AI Search データストアの ID。
  3. データストアごとに手順 1 と 2 を繰り返します。

  4. 24 時間ほど待ちます。

    データストアの準備が整う前に自然言語クエリの理解を使用しようとすると、filterExtractionConditionDISABLED に設定されている場合と同じレスポンスが返されます。

検索、自然言語クエリをフィルタに変換する

自然言語のクエリで検索し、自然言語クエリ用に最適化された結果を取得するには、次の操作を行います。

REST

  1. 次の curl コマンドを実行します。このコマンドは search メソッドを呼び出します。

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED"
            }
          }'
    

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

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • APP_ID: クエリする Vertex AI Search アプリの ID。アプリは、構造化データを含むデータストアに接続されている必要があります。統合検索アプリは使用できません。
    • QUERY: クエリが自然言語で記述されている。

検索。クエリ内の位置情報を位置情報フィルタに変換します

自然言語のクエリで検索し、自然言語のクエリに最適化された結果(場所の近接性など)を取得するには、次の操作を行います。

REST

  1. 次の curl コマンドを実行します。このコマンドは search メソッドを呼び出します。

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED",
              "geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1", "GEO_FIELD_NAME_N"]"
            }
          }'
    

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

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • APP_ID: クエリする Vertex AI Search アプリの ID。アプリは、構造化データを含むデータストアに接続されている必要があります。統合検索アプリは使用できません。
    • QUERY: クエリが自然言語で記述されている。
    • GEO_FIELD_NAME_1, GEO_FIELD_NAME_N: geolocation 型の値のリスト。値の型が geolocation でない場合、このフィールドは無視されます。