設定自動完成功能

本頁說明 Vertex AI Search 的基本自動完成功能。自動完成功能會根據查詢的前幾個字元,生成查詢建議。

自動完成功能產生的建議會因搜尋應用程式使用的資料類型而異:

  • 結構化和非結構化資料。根據預設,自動完成功能會根據資料儲存庫中的文件內容生成建議。匯入文件後,自動完成功能預設不會立即生成建議,通常要過幾天,系統才會提供足夠的優質資料。如果您透過 API 提出自動完成要求,自動完成功能可以根據搜尋記錄或使用者事件產生建議。

  • 網站資料。根據預設,自動完成功能會根據搜尋記錄生成建議。自動完成功能需要實際搜尋流量。搜尋流量開始後,自動完成功能需要一到兩天才能產生建議。使用實驗性的進階文件資料模型,即可從公開網站的網頁檢索資料產生建議。

  • 健康資料。根據預設,系統會使用標準醫療資料來源,為醫療照護資料儲存庫產生自動完成建議。

查詢建議模型會決定自動完成功能用來產生建議的資料類型。查詢建議模型有四種:

  • 文件。文件模型會根據使用者匯入的文件生成建議。這個模型不適用於網站資料或醫療保健資料。

  • 可完成的欄位。可完成的欄位模型會建議直接從結構化資料欄位擷取的文字。只有以 completable 註解的欄位會用於自動完成建議。這個模型僅適用於結構化資料。

  • 搜尋記錄。搜尋記錄模型會根據 SearchService.search API 呼叫記錄生成建議。如果 servingConfigs.search 方法沒有可用流量,請勿使用這個模型。這個模型不適用於醫療保健資料。

  • 使用者事件。使用者事件模型會根據使用者匯入的 search 類型事件產生建議。這個模型不適用於醫療保健資料。

系統會使用 dataStores.completeQuery 方法傳送 Autocomplete 要求。

或者,如果不想使用查詢建議模型,可以改用「匯入的建議」,根據匯入的建議清單提供自動完成建議。詳情請參閱「使用匯入的自動完成建議清單」。

根據資料類型提供的模型類型

下表列出各資料類型適用的查詢建議模型類型。


查詢建議模型

資料來源

網站 資料

結構化資料

非結構化資料
文件 已匯入 ✔* (預設) ✔ (預設)
可完成的欄位 已匯入
搜尋記錄 自動收集 ✔ (預設)
User events 匯入或由小工具自動收集 ✔ <0x0 ✔ <0x0 ✔ <0x0
網路檢索內容 從您指定的公開網站內容檢索

*:文件結構定義必須包含 titledescription 欄位,或必須有指定為 titledescription 鍵屬性的欄位。請參閱「更新結構化資料的結構定義」。

:只有在啟用自動完成功能的實驗性進階文件資料模型時,才能將網路檢索內容做為資料來源。請參閱進階文件資料模型

如果不想使用資料類型的預設模型,可以在傳送自動完成要求時指定其他模型。系統會使用 dataStores.completeQuery 方法傳送自動完成要求。詳情請參閱API 指示:傳送自動完成要求來選擇其他模型

自動完成功能

Vertex AI Search 支援下列自動完成功能,可在搜尋時顯示最實用的預測結果:

功能 說明 範例或詳細資訊
修正錯字 修正錯別字。 MilcMilk
移除不安全的字詞
  • 這項功能採用 Google 安全搜尋技術。
  • 移除不當查詢。
  • 支援英文 (en)、法文 (fr)、德文 (de)、義大利文 (it)、波蘭文 (pl)、葡萄牙文 (pt)、俄文 (ru)、西班牙文 (es) 和烏克蘭文 (uk)。
令人反感的文字,例如色情、煽情、粗俗、暴力。
禁止顯示基本個人識別資訊 (PII) Vertex AI Search 採用 Sensitive Data Protection 技術,盡可能避免顯示電話號碼和電子郵件地址等基本類型的 PII。

如果資料儲存庫中有電子郵件地址 jeffersonloveshiking@gmail.com,使用者在搜尋列中輸入 jef 時,Vertex AI Search 不會將電子郵件地址做為自動完成建議傳回。

為更徹底防範 PII 外洩,Google 建議您除了 Vertex AI Search 提供的偵測器外,也套用自己的資料遺失防護 (DLP) 解決方案。詳情請參閱「防範 PII 外洩」。

拒絕清單
  • 移除拒絕清單中的字詞。
詳情請參閱「使用自動完成拒絕清單」。
重複字詞
  • 採用 AI 驅動的語意理解技術。
  • 如果兩個字詞幾乎相同,系統會比對任一字詞,但只會建議較熱門的字詞。
Shoes for WomenWomens ShoesWomans Shoes 會經過重複資料刪除程序,並只建議最熱門的項目。
尾碼比對建議
  • 不適用於美國和歐盟多區域。
  • 選用設定。
  • 如果整個查詢沒有自動完成相符項目,請只針對查詢的尾字建議相符項目。
  • 不適用於醫療保健搜尋。
詳情請參閱「尾部比對建議」。

尾碼比對建議

系統會根據查詢字串中最後一個字詞的完全前置字串比對結果,提供尾部比對建議。

舉例來說,假設在自動完成要求中傳送了「songs with he」查詢。啟用尾碼比對後,自動完成功能可能會發現完整前置字串「songs with he」沒有任何相符項目。不過,查詢中的最後一個字詞「he」與「hello world」和「hello kitty」完全相符。在這種情況下,系統會傳回「含有 hello world 的歌曲」和「含有 hello kitty 的歌曲」建議,因為沒有完全相符的建議。

這項功能可減少空白建議結果,並增加建議的多樣性,因此在資料來源 (使用者事件計數、搜尋記錄和文件主題涵蓋範圍) 有限的情況下特別實用。不過,啟用尾部比對建議可能會降低建議的整體品質。由於尾碼相符只會比對前置字串的尾字,因此傳回的部分建議可能不合理。舉例來說,如果查詢「有 he 的歌曲」,系統可能會建議「有 helpers guides 的歌曲」這類尾部相符的項目。

只有在下列情況下,系統才會傳回尾部相符建議:

  1. include_tail_suggestions 會在 dataStores.completeQuery 要求中設為 true

  2. 找不到與查詢完全相符的建議內容。

防範個人識別資訊外洩

PII 的定義很廣泛,而且難以偵測。因此,Vertex AI Search 無法保證自動完成建議不會傳回 PII。

Vertex AI Search 會套用私密/機密資料防護檢查服務,尋找並封鎖常見的 PII 類型,避免顯示為建議。不過,如果資料存放區含有 PII,或是您使用搜尋記錄或使用者事件查詢建議模型,請查看下列內容並採取適當行動:

  1. 如果您想保護的 PII 類型相當標準,例如電話號碼和電子郵件地址,請先廣泛測試應用程式的自動完成建議。Vertex AI Search 無法保證自動完成建議不會傳回 PII。

  2. 如果在自動完成測試期間發現 PII 外洩,或您已知道要保護非標準 PII (例如專屬使用者 ID),請嘗試調整自動完成門檻和內容放送參數。詳情請參閱「降低傳回含有 PII 的建議的風險」。

  3. 如果調整參數仍無法有效防止 PII 外洩,請自行導入 DLP 解決方案。針對資料儲存區、使用者事件或使用者搜尋查詢中最有可能出現的 PII 類型,自訂資料遺失防護解決方案。您可以使用 Sensitive Data Protection 或第三方 DLP 服務。採取下列任何一種做法:

    • 在資料儲存庫中匯入文件和使用者事件前,請先篩除 PII。

    • 在放送時向使用者顯示建議前,請先檢查自動完成建議,並封鎖含有任何 PII 的建議。

  4. 如果您使用搜尋記錄或使用者事件模型,請在搜尋列中加入一些資訊文字,提醒使用者不要在搜尋查詢中輸入 PII。

  5. 如果您對封鎖 PII 有任何疑問或遇到特定問題,請與客戶工程師 (CE) 或 Google 帳戶團隊聯絡。

為小工具開啟或關閉自動完成功能

如要開啟或關閉小工具的自動完成功能,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「AI Applications」頁面。

    AI 應用程式

  2. 按一下要編輯的應用程式名稱。

  3. 按一下「Configurations」

  4. 按一下「UI」分頁標籤。

  5. 切換「顯示自動完成建議」選項,即可啟用或停用小工具的自動完成建議。啟用自動完成功能後,請等待一兩天,系統才會開始顯示建議。

更新自動完成設定

如要在 UI 中設定自動完成功能,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「AI Applications」頁面。

    AI 應用程式

  2. 按一下要編輯的應用程式名稱。

  3. 按一下「Configurations」

  4. 按一下「自動完成」分頁標籤。

  5. 輸入或選取要更新的自動完成設定新值:

    • 建議數量上限:系統可針對查詢提供的自動完成建議數量上限。
    • 觸發的最低長度:系統提供自動完成建議前,可輸入的最低字元數。
    • 比對順序:查詢字串中的位置,自動完成功能可從該位置開始比對建議。
    • 查詢建議模型:用於產生擷取建議的查詢建議模型。您可以在 dataStores.completeQuery 中使用 queryModel 參數覆寫這項設定。
    • 啟用自動完成功能:根據預設,自動完成功能不會立即開始提供建議,而是要等到有足夠的優質資料 (通常需要幾天時間) 才會開始。如要覆寫這項預設設定,並提早開始取得自動完成建議,請選取「立即」

      即使選取「立即」,系統也可能需要一天才能產生建議,而且在有足夠的優質資料之前,部分自動完成建議仍會缺漏或品質不佳。

    • 拒絕清單:以 JSON 檔案形式,從 Cloud Storage bucket 匯入拒絕清單。如要進一步瞭解拒絕清單的限制和規格,請參閱「使用自動完成拒絕清單」。

  6. 按一下「儲存並發布」。如果引擎已啟用自動完成功能,變更會在幾分鐘內生效。

降低傳回含有 PII 的建議的風險

使用者擁有各種 PII 資訊,例如駕照和電話號碼,這些資訊應妥善保管。但使用者可能會在搜尋列中輸入任何這類 PII 資訊,以尋找與自己相關的結果。

如果您使用搜尋記錄或使用者事件模型,且使用者很可能會在搜尋列中輸入 PII,則可調整下列參數,減少 PII 外洩的風險:

  • queryFrequencyThreshold:查詢必須輸入這麼多次,才會以自動完成建議的形式傳回。

  • numUniqueUsersThreshold:查詢必須由這麼多不重複使用者輸入,才能做為自動完成建議傳回。搜尋使用者事件userPseudoId 欄位的值,會決定使用者是否為不重複。

應用實例範例

舉例來說,假設使用者有應保密的帳號。

如果使用搜尋記錄或使用者事件建議模型,系統會將這些帳號號碼連同使用者搜尋的所有其他字詞,用於產生建議。因此,如果使用者 A 的帳號 YZ-46789A 曾多次輸入搜尋列,而使用者 B 的帳號為 YZ-42345B,當使用者 B 在搜尋列中輸入 YZ-4 時,系統傳回的自動完成建議可能就是使用者 A 的帳號。

為降低這類外洩事件發生的機率,AI 應用程式管理員可決定:

  • queryFrequencyThreshold 參數的值增加至 30。 在這種情況下,不太可能經常輸入同一個帳號。不過,熱門搜尋查詢至少會以該頻率輸入。

  • numUniqueUsersThreshold 參數的值增加至 6。 管理員認為,在六個與不同 userPseudoId 相關聯的搜尋事件中,不太可能在搜尋列中輸入相同的帳號。

程序

自動完成功能有兩個門檻參數。 這些參數無法在 Google Cloud 控制台中使用,但可以透過 REST API 呼叫 updateCompletionConfig 方法來設定。

如要設定自動完成門檻,請按照下列步驟操作。視要變更的參數而定,每個步驟都是選用。

REST

  1. 更新 CompletionConfig.queryFrequencyThreshold 欄位:

    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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig?updateMask=queryFrequencyThreshold \
      -d '{
        "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig",
        "queryFrequencyThreshold": QUERY_FREQUENCY_THRESHOLD
      }'
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料儲存空間 ID。

    • QUERY_FREQUENCY_THRESHOLD:整數值,表示搜尋查詢必須輸入的最低次數,才能做為自動完成建議傳回。這項計數是在為期數個月的回溯期內加總。預設值為 8

  2. 更新 CompletionConfig.numUniqueUsersThreshold 欄位:

    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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig?updateMask=numUniqueUsersThreshold \
      -d '{
        "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig",
        "numUniqueUsersThreshold": UNIQUE_USERS
      }'
    

    UNIQUE_USERS 換成整數值,代表必須輸入特定搜尋查詢的不重複使用者人數下限,該查詢才能做為自動完成建議傳回。系統會加總數月內滾動時間範圍的計數。 預設值為 3

更新結構定義中可完成欄位的註解

如要為結構化資料結構定義中的欄位開啟自動完成功能,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「AI Applications」頁面。

    AI 應用程式

  2. 按一下要編輯的應用程式名稱。必須使用結構化資料。

  3. 按一下 [Data] (資料)。

  4. 按一下「結構定義」分頁標籤。

  5. 按一下「編輯」,選取要標示為 completable 的結構定義欄位。

  6. 按一下「儲存」,儲存更新後的欄位設定。系統大約需要一天才能生成並傳回這些建議。

傳送自動完成要求

下列範例說明如何傳送自動完成要求。

REST

如要使用 API 傳送自動完成要求,請按照下列步驟操作:

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

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

      前往「資料儲存庫」頁面

    2. 點按資料儲存庫的名稱。

    3. 在資料儲存庫的「資料」頁面中,取得資料儲存庫 ID。

  2. 呼叫 dataStores.completeQuery 方法。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING"
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料儲存空間 ID。

    • QUERY_STRING:用於擷取建議的自動完成輸入內容。

將自動完成要求傳送至其他模型

如要使用其他查詢建議模型傳送自動完成要求,請按照下列步驟操作:

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

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

      前往「資料儲存庫」頁面

    2. 點按資料儲存庫的名稱。

    3. 在資料儲存庫的「資料」頁面中,取得資料儲存庫 ID。

  2. 呼叫 dataStores.completeQuery 方法。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING&query_model=QUERY_SUGGESTIONS_MODEL"
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料商店專屬 ID。

    • QUERY_STRING:用於擷取建議的自動完成輸入內容。

    • AUTOCOMPLETE_MODEL:自動完成資料

    • QUERY_SUGGESTIONS_MODEL:要求使用的查詢建議模型:documentdocument-completablesearch-historyuser-event。如為健康照護資料,請使用 healthcare-default

C#

詳情請參閱 AI Applications C# API 參考說明文件

如要向 AI Applications 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

using Google.Cloud.DiscoveryEngine.V1;

public sealed partial class GeneratedCompletionServiceClientSnippets
{
    /// <summary>Snippet for CompleteQuery</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void CompleteQueryRequestObject()
    {
        // Create client
        CompletionServiceClient completionServiceClient = CompletionServiceClient.Create();
        // Initialize request argument(s)
        CompleteQueryRequest request = new CompleteQueryRequest
        {
            DataStoreAsDataStoreName = DataStoreName.FromProjectLocationDataStore("[PROJECT]", "[LOCATION]", "[DATA_STORE]"),
            Query = "",
            QueryModel = "",
            UserPseudoId = "",
            IncludeTailSuggestions = false,
        };
        // Make the request
        CompleteQueryResponse response = completionServiceClient.CompleteQuery(request);
    }
}

Go

詳情請參閱 AI Applications Go API 參考說明文件

如要向 AI Applications 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewCompletionClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.CompleteQueryRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#CompleteQueryRequest.
	}
	resp, err := c.CompleteQuery(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

詳情請參閱 AI Applications Java API 參考說明文件

如要向 AI Applications 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

import com.google.cloud.discoveryengine.v1.CompleteQueryRequest;
import com.google.cloud.discoveryengine.v1.CompleteQueryResponse;
import com.google.cloud.discoveryengine.v1.CompletionServiceClient;
import com.google.cloud.discoveryengine.v1.DataStoreName;

public class SyncCompleteQuery {

  public static void main(String[] args) throws Exception {
    syncCompleteQuery();
  }

  public static void syncCompleteQuery() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (CompletionServiceClient completionServiceClient = CompletionServiceClient.create()) {
      CompleteQueryRequest request =
          CompleteQueryRequest.newBuilder()
              .setDataStore(
                  DataStoreName.ofProjectLocationDataStoreName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]")
                      .toString())
              .setQuery("query107944136")
              .setQueryModel("queryModel-184930495")
              .setUserPseudoId("userPseudoId-1155274652")
              .setIncludeTailSuggestions(true)
              .build();
      CompleteQueryResponse response = completionServiceClient.completeQuery(request);
    }
  }
}

Node.js

詳情請參閱 AI Applications Node.js API 參考說明文件

如要向 AI Applications 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  Required. The parent data store resource name for which the completion is
 *  performed, such as
 *  `projects/* /locations/global/collections/default_collection/dataStores/default_data_store`.
 */
// const dataStore = 'abc123'
/**
 *  Required. The typeahead input used to fetch suggestions. Maximum length is
 *  128 characters.
 */
// const query = 'abc123'
/**
 *  Specifies the autocomplete data model. This overrides any model specified
 *  in the Configuration > Autocomplete section of the Cloud console. Currently
 *  supported values:
 *  * `document` - Using suggestions generated from user-imported documents.
 *  * `search-history` - Using suggestions generated from the past history of
 *  SearchService.Search google.cloud.discoveryengine.v1.SearchService.Search 
 *  API calls. Do not use it when there is no traffic for Search API.
 *  * `user-event` - Using suggestions generated from user-imported search
 *  events.
 *  * `document-completable` - Using suggestions taken directly from
 *  user-imported document fields marked as completable.
 *  Default values:
 *  * `document` is the default model for regular dataStores.
 *  * `search-history` is the default model for site search dataStores.
 */
// const queryModel = 'abc123'
/**
 *  A unique identifier for tracking visitors. For example, this could be
 *  implemented with an HTTP cookie, which should be able to uniquely identify
 *  a visitor on a single device. This unique identifier should not change if
 *  the visitor logs in or out of the website.
 *  This field should NOT have a fixed value such as `unknown_visitor`.
 *  This should be the same identifier as
 *  UserEvent.user_pseudo_id google.cloud.discoveryengine.v1.UserEvent.user_pseudo_id 
 *  and
 *  SearchRequest.user_pseudo_id google.cloud.discoveryengine.v1.SearchRequest.user_pseudo_id.
 *  The field must be a UTF-8 encoded string with a length limit of 128
 *  characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
 */
// const userPseudoId = 'abc123'
/**
 *  Indicates if tail suggestions should be returned if there are no
 *  suggestions that match the full query. Even if set to true, if there are
 *  suggestions that match the full query, those are returned and no
 *  tail suggestions are returned.
 */
// const includeTailSuggestions = true

// Imports the Discoveryengine library
const {CompletionServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new CompletionServiceClient();

async function callCompleteQuery() {
  // Construct request
  const request = {
    dataStore,
    query,
  };

  // Run request
  const response = await discoveryengineClient.completeQuery(request);
  console.log(response);
}

callCompleteQuery();

Python

詳情請參閱 AI Applications Python API 參考說明文件

如要向 AI Applications 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

# This snippet has been automatically generated and should be regarded as a
# code template only.
# It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
#   client as shown in:
#   https://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import discoveryengine_v1


def sample_complete_query():
    # Create a client
    client = discoveryengine_v1.CompletionServiceClient()

    # Initialize request argument(s)
    request = discoveryengine_v1.CompleteQueryRequest(
        data_store="data_store_value",
        query="query_value",
    )

    # Make the request
    response = client.complete_query(request=request)

    # Handle the response
    print(response)

Ruby

詳情請參閱 AI Applications Ruby API 參考說明文件

如要向 AI Applications 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。

require "google/cloud/discovery_engine/v1"

##
# Snippet for the complete_query call in the CompletionService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::CompletionService::Client#complete_query.
#
def complete_query
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::CompletionService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::CompleteQueryRequest.new

  # Call the complete_query method.
  result = client.complete_query request

  # The returned object is of type Google::Cloud::DiscoveryEngine::V1::CompleteQueryResponse.
  p result
end

使用自動完成拒絕清單

拒絕清單可避免自動完成建議顯示特定字詞。

以製藥公司為例,如果某種藥物已不再獲得 FDA 核准,但資料存放區的文件中仍提及該藥物,他們可能希望避免該藥物顯示為建議查詢。公司可以在拒絕清單中加入該藥物名稱,避免系統建議使用。

適用的限制如下:

  • 每個資料儲存庫只能有一個拒絕清單
  • 上傳拒絕清單會覆寫該資料儲存庫的任何現有拒絕清單
  • 每個拒絕清單最多 1000 個字詞
  • 字詞不區分大小寫
  • 匯入拒絕清單後,需要 1 到 2 天才會生效

每個拒絕清單項目都包含 blockPhrasematchOperator

  • blockPhrase:輸入字串做為拒絕清單字詞。搜尋字詞不區分大小寫。
  • matchOperator:接受下列值:
    • EXACT_MATCH:禁止系統將拒絕清單中的字詞做為建議查詢。
    • CONTAINS:禁止顯示任何含有拒絕清單字詞的建議。

以下是包含四個項目的拒絕清單範例:

{
    "entries": [
        {"blockPhrase":"Oranges","matchOperator":"CONTAINS"},
        {"blockPhrase":"bAd apples","matchOperator":"EXACT_MATCH"},
        {"blockPhrase":"Cool as A Cucumber","matchOperator":"EXACT_MATCH"},
        {"blockPhrase":"cherry pick","matchOperator":"CONTAINS"}
    ]
}

匯入拒絕清單前,請先確認已為 Discovery Engine 編輯器存取權設定必要的存取權控管

您可以從本機 JSON 資料Cloud Storage 匯入拒絕清單。如要從資料儲存庫移除拒絕清單,請清除拒絕清單

從本機 JSON 資料匯入拒絕清單

如要從含有拒絕清單的本機 JSON 檔案匯入拒絕清單,請按照下列步驟操作:

  1. 以本機 JSON 檔案建立拒絕清單,格式如下。請務必將每個拒絕清單項目放在新的一行,且不得換行。

    {
        "inlineSource": {
            "entries": [
                { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" },
                { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
            ]
        }
    }
  2. suggestionDenyListEntries:import 方法提出 POST 要求,並提供 JSON 檔案名稱。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data @DENYLIST_FILE \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
    

    更改下列內容:

    • DENYLIST_FILE:包含拒絕清單字詞的 JSON 檔案本機路徑。
    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料儲存區 ID。

匯入拒絕清單後,系統需要 1 到 2 天的時間,才會開始篩選建議。

從 Cloud Storage 匯入拒絕清單

如要從 Cloud Storage 中的 JSON 檔案匯入拒絕清單,請按照下列步驟操作:

  1. 以 JSON 檔案建立拒絕清單,格式如下,然後匯入 Cloud Storage 值區。請務必將每個拒絕清單項目放在新的一行,且不得換行。

    { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" }
    { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
  2. 建立包含 gcsSource 物件的本機 JSON 檔案。用來指向 Cloud Storage bucket 中拒絕清單檔案的位置。

    {
        "gcsSource": {
            "inputUris": [ "DENYLIST_STORAGE_LOCATION" ]
        }
    }

    請將 DENYLIST_STORAGE_LOCATION 改成 Cloud Storage 中的拒絕清單位置。您只能輸入一個 URI。URI 必須以 gs://BUCKET/FILE_PATH 格式輸入。

  3. suggestionDenyListEntries:import 方法發出 POST 要求,並加入 gcsSource 物件。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data @GCS_SOURCE_FILE \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
    

    更改下列內容:

    • GCS_SOURCE_FILE:包含 gcsSource 物件的檔案本機路徑,該物件指向您的拒絕清單。
    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料儲存區 ID。

匯入拒絕清單後,系統需要 1 到 2 天的時間,才會開始篩選建議。

清除拒絕清單

如要從資料儲存庫清除拒絕清單,請按照下列步驟操作:

  1. suggestionDenyListEntries:purge 方法發出 POST 要求。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:purge"
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料儲存區 ID。

使用匯入的自動完成建議清單

您可以選擇提供自己的自動完成建議清單,而非使用自動完成資料模型產生的自動完成建議。

對於大多數應用程式,使用自動完成資料模型產生的建議,可獲得較佳結果。不過,在少數情況下,模型建議可能不符合您的需求,因此提供不連續的建議清單,可為使用者帶來更優質的自動完成體驗。

舉例來說,小型線上書店會匯入書名清單,做為自動完成建議。當顧客開始在搜尋列中輸入內容時,自動完成建議一律會是匯入清單中的書籍名稱。當書籍清單變更時,書店會清除目前的清單,並匯入新清單。清單的摘錄內容可能如下所示:

{"suggestion": "Wuthering Heights", "globalScore": "0.52" },
{"suggestion": "The Time Machine", "globalScore": "0.26" },
{"suggestion": "Nicholas Nickleby", "globalScore": "0.38" },
{"suggestion": "A Little Princess", "globalScore": "0.71" },
{"suggestion": "The Scarlet Letter", "globalScore": "0.32" }

globalScore 是介於 [0, 1] 之間的浮點數,用於建議排序。或者,您也可以使用 frequency 分數,也就是大於一的整數。如果 globalScore 無法使用 (設為空值),系統會使用 frequency 分數對建議進行排序。

設定及匯入自動完成建議

如要設定及匯入 BigQuery 的自動完成建議清單,請按照下列步驟操作:

  1. 建立建議清單,並載入至 BigQuery 資料表。

    您至少需要以字串形式提供每項建議,以及全域分數或頻率。

    建議清單的資料表結構定義如下:

    [
      {
        "description": "The suggestion text",
        "mode": "REQUIRED",
        "name": "suggestion",
        "type": "STRING"
      },
      {
        "description": "Global score of this suggestion. Control how this suggestion would be scored and ranked. Set global score or frequency; not both.",
        "mode": "NULLABLE",
        "name": "globalScore",
        "type": "FLOAT"
      },
      {
        "description": "Frequency of this suggestion. Used to rank suggestions when the global score is not available.",
        "mode": "NULLABLE",
        "name": "frequency",
        "type": "INTEGER"
      }
    ]
    

    如需如何建立 BigQuery 資料表,以及如何將自動完成建議清單載入資料表的說明,請參閱 BigQuery 說明文件

  2. 從 BigQuery 匯入清單。

    completionSuggestions:import 方法發出 POST 要求,並加入 bigquerySource 物件。

    curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_ID" \
     "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:import" \
     -d '{
          "bigquery_source": {"project_id": "PROJECT_ID_SOURCE", "dataset_id": "DATASET_ID", "table_id": "TABLE_ID"}
     }'
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。
    • DATA_STORE_ID:Vertex AI Search 資料儲存庫的 ID。
    • PROJECT_ID_SOURCE:包含要匯入資料集的專案。
    • DATASET_ID:要匯入的建議清單資料集 ID
    • TABLE_ID:要匯入的建議清單資料表 ID
  3. 選用:記下傳回的 name 值,並按照「取得長時間運行的作業詳細資料」中的操作說明,查看匯入作業何時完成。

  4. 如果尚未為應用程式啟用自動完成功能,請按照「更新自動完成設定」程序操作。請務必將「Enable autocomplete」(啟用自動完成功能) 設為「Now」(立即啟用)

  5. 等待幾天,讓系統完成索引作業,並提供匯入的建議。

傳送自動完成要求

如要傳送自動完成要求,並傳回匯入的建議,而非自動完成模型提供的建議,請按照下列步驟操作:

  1. 按照程序將自動完成要求傳送至其他模型,並將 AUTOCOMPLETE_MODEL 設為 imported-suggestion

清除匯入的自動完成建議清單

匯入新的自動完成建議清單前,請先移除現有清單。

如要清除現有的自動完成建議清單,請按照下列步驟操作:

  1. completionSuggestions:purge 方法發出 POST 要求。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:purge"
    

    更改下列內容:

    • PROJECT_ID:您的 Google Cloud 專案編號或 ID。

    • DATA_STORE_ID:與應用程式相關聯的資料儲存區 ID。

進階文件資料模型

AI 應用程式提供自動完成功能適用的進階資料模型。這個資料模型會根據您匯入的文件,運用 Google 大型語言模型 (LLM) 生成高品質的自動完成建議。

這個功能為實驗性質。如要使用這項功能,請與 Google Cloud 帳戶團隊聯絡,要求將您加入許可清單。

進階文件資料模型不適用於醫療保健搜尋,也不適用於美國和歐盟多區域。