設定自動完成功能

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

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

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

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

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

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

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

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

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

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

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

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

可用的模型類型 (依資料類型而定)

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


查詢建議模型

資料來源

網站資料

結構化資料

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

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

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

如果您不想為資料類型使用預設模型,可以在傳送 Autocomplete 要求時指定其他模型。系統會使用 dataStores.completeQuery 方法傳送自動完成要求。如需相關資訊,請參閱「API 操作說明:傳送 Autocomplete 要求來選擇其他模型」。

自動完成功能

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

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

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

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

拒絕清單
  • 移除拒絕清單中的字詞。
詳情請參閱「使用自動完成拒絕清單」。
簡化字詞
  • 採用 AI 技術輔助的語意理解技術。
  • 如果是幾乎相同的字詞,系統會比對任一字詞,但只會建議較熱門的字詞。
Shoes for WomenWomens ShoesWomans Shoes 會經過去重處理,系統只會建議最受歡迎的項目。
尾端比對建議
  • 不適用於美國和歐盟的多區域。
  • 選用設定。
  • 如果整個查詢沒有任何自動完成建議,請只針對查詢的結尾字詞提供相符的建議。
  • 不適用於醫療保健搜尋。
詳情請參閱「尾端比對建議」。

尾端比對建議

尾端比對建議會根據查詢字串中的最後一個字,使用完全前置字串比對。

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

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

只有在下列情況下,系統才會傳回尾端比對建議:

  1. dataStores.completeQuery 要求中,include_tail_suggestions 設為 true

  2. 系統無法提供與查詢完全相符的建議。

防範個人識別資訊 (PII) 外洩

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,再匯入資料儲存庫中的文件和使用者事件。

    • 在提示使用者時,先檢查自動完成建議,並封鎖含有任何個人識別資訊的建議。

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

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

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

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

控制台

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

    AI 應用程式

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

  3. 按一下 [Configurations]。

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

  5. 切換「Show autocomplete suggestions」(顯示自動完成建議) 選項,即可開啟或關閉小工具的自動完成建議。啟用自動完成功能後,系統會在一天或兩天後開始提供建議。

更新自動完成設定

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

控制台

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

    AI 應用程式

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

  3. 按一下 [Configurations]。

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

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

    • 建議數量上限:系統可為查詢提供的自動完成建議數量上限。
    • 觸發條件:觸發自動完成建議功能所需的字元數。
    • 比對順序:自動完成功能可從查詢字串中的哪個位置開始比對建議。
    • 查詢建議模型:用於產生擷取建議的查詢建議模型。您可以在 dataStores.completeQuery 中使用 queryModel 參數覆寫這項設定。
    • 啟用自動完成功能:根據預設,自動完成功能必須取得足夠的優質資料 (通常需要幾天),才會開始提供建議。如要覆寫這個預設值,並盡快開始收到自動完成建議,請選取「現在」

      即使您選取「立即」,系統仍可能需要一天的時間產生建議,而且在有足夠的良好資料之前,系統仍可能會缺少某些自動完成建議或提供品質不佳的建議。

    • 拒絕清單:將拒絕清單匯入 Cloud Storage 儲存桶中的 JSON 檔案。如要進一步瞭解拒絕清單限制和規格,請參閱「使用自動完成拒絕清單」。

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

降低傳回含有個人識別資訊的建議內容的風險

使用者擁有各種 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」頁面,然後在導覽選單中按一下「資料儲存庫」

      前往「資料儲存庫」頁面

    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」頁面,然後在導覽選單中按一下「資料儲存庫」

      前往「資料儲存庫」頁面

    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 核准,但資料儲存庫中的文件中提到這項藥物,使用者可能會希望避免該藥物顯示為建議查詢。該公司可以將藥物名稱加入拒絕清單,避免系統建議該藥物。

適用的限制如下:

  • 每個資料儲存庫一個拒絕清單
  • 上傳拒絕清單後,系統會覆寫該資料儲存庫的任何現有拒絕清單
  • 每個拒絕清單最多可包含 1,000 個字詞
  • 不區分大小寫
  • 匯入拒絕清單後,需要 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. 建立本機 JSON 檔案,其中包含 gcsSource 物件。使用這個屬性,指向 Cloud Storage 值區中拒絕清單檔案的位置。

    {
        "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 分數,這是大於 1 的整數。當 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. 請等待幾天,讓系統完成索引作業,並提供匯入的建議內容。

傳送 Autocomplete 要求

如要傳送自動完成要求,以便傳回匯入的建議,而不是自動完成模型的建議,請按照下列步驟操作:

  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 帳戶團隊聯絡,要求將您的頻道加入許可清單。

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