使用自然語言理解技術進行篩選

本頁說明如何運用自然語言理解技術,自動為搜尋查詢建立篩選條件,進而提升傳回結果的品質。

這項功能適用於已連結結構化資料儲存庫的搜尋應用程式。

關於自然語言查詢理解

如果您有使用結構化資料的自訂搜尋應用程式,系統會將使用者的自然語言查詢重新格式化為經過篩選的查詢。與在查詢字串中搜尋字詞相比,這項做法可提供品質更優異的搜尋結果。

與撰寫自己的篩選運算式相比,使用自然語言查詢理解功能更簡單且更具彈性。如要瞭解如何編寫篩選運算式,請參閱「篩選自訂搜尋的結構化或非結構化資料」。

以下範例可協助您瞭解這項功能:

範例:從查詢中擷取欄位

我們將以搜尋飯店為例,說明這項自然語言查詢理解功能。

以下是針對飯店網站的結構化資料存放區提出的查詢: 「尋找家庭友善飯店,至少四星級,每晚費用低於 300 美元,可攜帶寵物入住,並提供免費 Wi-Fi。」

如果沒有自然語言查詢理解功能,搜尋應用程式會尋找含有查詢字詞的文件。

透過瞭解自然語言查詢和適當結構化資料,系統會將查詢中的部分自然語言替換為篩選條件,進而提升搜尋效率。如果結構化資料包含 star_rating (數字)、price (數字) 和 amenities (字串) 的欄位,則查詢可以改寫為下列篩選器加上剩餘查詢:

  • 從自然語言查詢中擷取的篩選條件:

    {
        "star_rating": ≥4,
        "price": ≤300,
        "amenities": "Wifi", "Pets Allowed"
    }
    
  • 提取篩選條件後重新擬定的剩餘查詢:

    family-friendly

範例:使用地理位置篩選器

這個範例與前一個範例類似,差別在於這個範例包含地理位置篩選器,這是特殊的擷取篩選器。Vertex AI Search 可辨識查詢中的位置,並為這些位置建立鄰近篩選器。

以下是向全州商家網站提出的查詢: 「幫我找舊金山至少 4 星的時尚飯店。」

透過自然語言查詢理解和地理位置篩選器,搜尋會重新制定為篩選器和剩餘查詢:

  • 從自然語言查詢中擷取的篩選條件,至少要有 4 星評分,且位於舊金山方圓 10 公里內:

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

    在本例中,GEO_DISTANCE 是地址,但在其他查詢中,即使原始查詢包含地址,也可能會寫成經緯度。

  • 提取篩選條件後重新擬定的剩餘查詢:

    chic and stylish in San Francisco

    雖然已建立地理位置篩選條件,但地點名稱仍會保留在剩餘的查詢中。這與其他篩選器 (例如 star_rating) 不同。

限制

自然語言查詢理解功能有以下限制:

  • 自然語言查詢理解功能無法套用至混合搜尋應用程式。如果您嘗試在混合搜尋應用程式中使用自然語言查詢解讀功能,就會收到錯誤訊息。

  • 自然語言查詢理解功能僅適用於使用結構化資料儲存庫的自訂搜尋應用程式。

  • 使用自然語言查詢理解功能會增加延遲時間,因此如果延遲是個問題,您可能會選擇不使用這項功能。

  • 如果是地理位置,則必須明確描述位置。你無法使用「附近」或「住家」等位置。

  • 地理位置的半徑為 10 公里,且無法設定。

事前準備

開始使用自然語言查詢理解功能前,請先為要使用的應用程式所連結的結構化資料存放區啟用這項功能。

如要啟用自然語言查詢理解功能,請按照下列步驟操作:

REST

  1. 找出資料儲存庫 ID。如果已有資料商店 ID,請跳到下一個步驟。

    1. 前往 Google Cloud 控制台的「AI Applications」頁面,然後在導覽選單中點選「Data Stores」

      前往「資料儲存庫」頁面

    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 小時。

    如果資料儲存庫尚未準備就緒,您就嘗試使用自然語言查詢理解功能,收到的回應會與 filterExtractionCondition 設為 DISABLED 時相同。

搜尋:將自然語言查詢轉換為篩選條件

如要以自然語言查詢並取得最佳化結果,請按照下列步驟操作:

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_Ngeolocation 型別的值清單。如果值類型不是 geolocation,系統會忽略這個欄位。