Mengonfigurasi perlengkapan otomatis

Halaman ini menjelaskan fitur pelengkapan otomatis dasar Gemini Enterprise. Pelengkapan otomatis menghasilkan saran kueri berdasarkan beberapa karakter pertama yang dimasukkan untuk kueri.

Untuk data terstruktur dan tidak terstruktur, pelengkapan otomatis secara default menghasilkan saran berdasarkan konten dokumen di penyimpanan data. Setelah impor dokumen, secara default, pelengkapan otomatis tidak akan mulai membuat saran hingga ada data berkualitas yang memadai, biasanya beberapa hari. Jika Anda membuat permintaan pelengkapan otomatis melalui API, pelengkapan otomatis dapat menghasilkan saran yang didasarkan pada histori penelusuran atau peristiwa pengguna.

Model saran kueri menentukan jenis data yang digunakan pelengkapan otomatis untuk menghasilkan saran. Ada empat model saran kueri:

  • Document. Model dokumen menghasilkan saran dari dokumen yang diimpor pengguna.

  • Kolom yang Dapat Diisi. Model kolom yang dapat dilengkapi menyarankan teks yang diambil langsung dari kolom data terstruktur. Hanya kolom yang dianotasi dengan completable yang digunakan untuk saran pelengkapan otomatis. Model ini hanya tersedia untuk data terstruktur.

  • Histori penelusuran. Model histori penelusuran menghasilkan saran dari histori panggilan API SearchService.search. Jangan gunakan model ini jika tidak ada traffic yang tersedia untuk metode servingConfigs.search.

  • Peristiwa pengguna. Model peristiwa pengguna menghasilkan saran dari peristiwa penelusuran yang diimpor pengguna.

Permintaan Autocomplete dikirim menggunakan metode dataStores.completeQuery.

Tabel berikut menunjukkan jenis model saran kueri yang tersedia untuk setiap jenis data.


Model saran kueri

Sumber data

Data situs

Data terstruktur

Data tidak terstruktur
Dokumen Diimpor oleh pengguna ✔* (default) ✔ (default)
Kolom yang dapat diselesaikan Diimpor oleh pengguna ✔
Histori penelusuran Dikumpulkan secara otomatis ✔ (default) ✔ ✔
Peristiwa pengguna Diimpor oleh pengguna atau dikumpulkan secara otomatis oleh widget ✔ ✔ ✔

* : Skema dokumen harus berisi kolom title atau description, atau harus ada kolom yang telah ditentukan sebagai properti kunci title atau description. Lihat Memperbarui skema untuk data terstruktur.

Jika tidak ingin menggunakan model default untuk jenis data Anda, Anda dapat menentukan model lain saat mengirim permintaan pelengkapan otomatis. Permintaan pelengkapan otomatis dikirim menggunakan metode dataStores.completeQuery. Untuk mengetahui informasinya, lihat Petunjuk API: Mengirim permintaan pelengkapan otomatis untuk memilih model yang berbeda.

Fitur pelengkapan otomatis

Gemini Enterprise mendukung fitur pelengkapan otomatis berikut untuk menampilkan prediksi yang paling membantu selama penelusuran:

Fitur Deskripsi Contoh atau informasi selengkapnya
Perbaiki kesalahan ketik Memperbaiki ejaan kata yang salah ketik. Milc → Milk.
Menghapus istilah yang tidak aman
  • Didukung oleh Google SafeSearch.
  • Menghapus kueri yang tidak pantas.
  • Didukung dalam bahasa Inggris (en), Prancis (fr), Jerman (de), Italia (it), Polandia (pl), Portugis (pt), Rusia (ru), Spanyol (es), dan Ukraina (uk).
Teks yang menyinggung, seperti pornografi, tidak senonoh, vulgar, kekerasan.
Mencegah tampilan informasi identitas pribadi (PII) dasar Didukung oleh Sensitive Data Protection, Gemini Enterprise melakukan upaya yang wajar untuk mencegah ditampilkannya jenis PII dasar, seperti nomor telepon dan alamat email.

Jika ada alamat email jeffersonloveshiking@gmail.com di penyimpanan data, Gemini Enterprise tidak akan menampilkan alamat email tersebut sebagai saran pelengkapan otomatis jika pengguna mengetik jef di kotak penelusuran.

Untuk melindungi dari kebocoran PII secara lebih menyeluruh, Google merekomendasikan agar Anda menerapkan solusi Perlindungan Kebocoran Data (DLP) Anda sendiri selain pendeteksi yang disediakan oleh Gemini Enterprise. Untuk mengetahui informasi selengkapnya, lihat Melindungi dari kebocoran PII.

Daftar tolak
  • Menghapus istilah yang tercantum dalam daftar penolakan.
Untuk mengetahui informasi selengkapnya, lihat Menggunakan daftar penolakan pelengkapan otomatis.
Menghapus Duplikat Istilah
  • Didukung oleh pemahaman semantik berbasis AI.
  • Untuk istilah yang hampir identik, salah satu istilah akan cocok, tetapi hanya istilah yang lebih populer yang disarankan.
Shoes for Women, Womens Shoes, dan Womans Shoes akan dihapus duplikatnya, dan hanya yang paling populer yang akan disarankan.
Saran pencocokan tail
  • Tidak tersedia di multi-region AS dan Uni Eropa.
  • Setelan opsional.
  • Jika tidak ada kecocokan pelengkapan otomatis untuk seluruh kueri, sarankan kecocokan hanya untuk kata terakhir kueri.
  • Tidak tersedia untuk penelusuran layanan kesehatan.
Untuk mengetahui informasi selengkapnya, lihat Saran pencocokan tail.

Saran pencocokan tail

Saran pencocokan akhir dibuat menggunakan pencocokan awalan persis dengan kata terakhir dalam string kueri.

Misalnya, kueri "songs with he" dikirim dalam permintaan pelengkapan otomatis. Jika pencocokan akhir diaktifkan, pelengkapan otomatis mungkin akan mendapati bahwa awalan lengkap "songs with he" tidak memiliki kecocokan. Namun, kata terakhir dalam kueri, "he", memiliki pencocokan awalan yang sama persis dengan "hello world" dan "hello kitty". Dalam hal ini, saran yang ditampilkan adalah "songs with hello world" dan "songs with hello kitty" karena tidak ada saran yang cocok sepenuhnya.

Anda dapat menggunakan fitur ini untuk mengurangi hasil saran kosong dan meningkatkan keberagaman saran, sehingga sangat berguna dalam kasus di mana sumber data (jumlah peristiwa pengguna, histori penelusuran, dan cakupan topik dokumen) terbatas. Namun, mengaktifkan saran pencocokan akhir dapat mengurangi kualitas saran secara keseluruhan. Karena pencocokan akhir hanya mencocokkan kata di akhir awalan, beberapa saran yang ditampilkan mungkin tidak masuk akal. Misalnya, kueri seperti "lagu dengan dia" mungkin mendapatkan saran pencocokan akhir seperti "lagu dengan panduan pembantu".

Saran pencocokan tail hanya ditampilkan jika:

  1. include_tail_suggestions ditetapkan ke true dalam permintaan dataStores.completeQuery.

  2. Tidak ada saran pencocokan awalan lengkap untuk kueri.

Melindungi dari kebocoran PII

Definisi PII sangat luas, dan PII bisa sulit dideteksi. Oleh karena itu, Gemini Enterprise tidak dapat menjamin bahwa PII tidak akan ditampilkan dalam saran pelengkapan otomatis.

Gemini Enterprise menerapkan layanan pemeriksaan Sensitive Data Protection untuk mencari dan memblokir jenis PII umum agar tidak muncul sebagai saran. Namun, jika penyimpanan data Anda berisi PII atau jika Anda menggunakan model saran kueri histori penelusuran atau peristiwa pengguna, tinjau hal berikut dan ambil tindakan yang sesuai:

  1. Jika jenis PII yang ingin Anda lindungi cukup standar, seperti nomor telepon dan alamat email, mulailah dengan menguji saran pelengkapan otomatis secara ekstensif untuk aplikasi Anda. Gemini Enterprise tidak dapat menjamin bahwa PII tidak akan ditampilkan dalam saran pelengkapan otomatis.

  2. Jika kebocoran PII ditemukan selama pengujian pelengkapan otomatis atau jika Anda sudah mengetahui bahwa Anda memiliki PII non-standar yang harus dilindungi (misalnya, ID pengguna eksklusif), coba sesuaikan nilai minimum pelengkapan otomatis dan parameter penayangan konten. Untuk mengetahui informasi selengkapnya, lihat Mengurangi risiko menampilkan saran yang berisi PII.

  3. Jika penyesuaian parameter tidak cukup untuk mencegah kebocoran PII, terapkan solusi DLP Anda sendiri. Sesuaikan solusi DLP untuk jenis PII yang paling mungkin ditemukan di penyimpanan data, peristiwa pengguna, atau kueri penelusuran pengguna. Anda dapat menggunakan Sensitive Data Protection atau layanan DLP pihak ketiga. Lakukan salah satu pendekatan berikut:

    • Filter PII sebelum Anda mengimpor dokumen dan peristiwa pengguna di penyimpanan data Anda.

    • Tinjau saran pelengkapan otomatis sebelum menampilkan saran kepada pengguna pada waktu penayangan dan blokir saran yang berisi PII apa pun.

  4. Jika Anda menggunakan model histori penelusuran atau peristiwa pengguna, tambahkan beberapa teks informasi di kotak penelusuran, yang memberi tahu pengguna untuk tidak memasukkan PII dalam kueri penelusuran mereka.

  5. Jika ada pertanyaan atau mengalami tantangan tertentu terkait pemblokiran PII, hubungi customer engineer (CE) atau tim akun Google Anda.

Mengaktifkan atau menonaktifkan pelengkapan otomatis untuk widget

Untuk mengaktifkan atau menonaktifkan pelengkapan otomatis untuk widget, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Gemini Enterprise.

    Gemini Enterprise

  2. Klik nama aplikasi yang ingin Anda edit.

  3. Klik Configurations.

  4. Klik tab UI.

  5. Aktifkan atau nonaktifkan opsi Tampilkan saran pelengkapan otomatis untuk mengaktifkan atau menonaktifkan saran pelengkapan otomatis untuk widget. Jika Anda mengaktifkan pelengkapan otomatis, tunggu satu atau dua hari sebelum saran dimulai.

Memperbarui setelan pelengkapan otomatis

Untuk mengonfigurasi setelan pelengkapan otomatis di UI, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Gemini Enterprise.

    Gemini Enterprise

  2. Klik nama aplikasi yang ingin Anda edit.

  3. Klik Configurations.

  4. Klik tab Pelengkapan otomatis.

  5. Masukkan atau pilih nilai baru untuk setelan pelengkapan otomatis yang ingin Anda perbarui:

    • Jumlah maksimum saran: Jumlah maksimum saran pelengkapan otomatis yang dapat ditawarkan untuk kueri.
    • Panjang minimum untuk memicu: Jumlah karakter minimum yang dapat diketik sebelum saran pelengkapan otomatis ditawarkan.
    • Urutan pencocokan: Lokasi dalam string kueri yang dapat digunakan pelengkapan otomatis untuk mulai mencocokkan sarannya.
    • Model saran kueri: Model saran kueri yang digunakan untuk menghasilkan saran yang diambil. Hal ini dapat diganti di dataStores.completeQuery menggunakan parameter queryModel.
    • Aktifkan pelengkapan otomatis: Secara default, pelengkapan otomatis tidak akan mulai memberikan saran hingga memiliki data berkualitas yang memadai, biasanya beberapa hari. Jika Anda ingin mengganti setelan default ini dan mulai mendapatkan beberapa saran pelengkapan otomatis lebih cepat, pilih Now.

      Meskipun Anda memilih Sekarang, perlu waktu satu hari untuk membuat saran dan beberapa saran pelengkapan otomatis akan tetap tidak ada atau berkualitas buruk hingga ada data yang cukup baik.

    • Daftar penolakan: Impor daftar penolakan sebagai file JSON di bucket Cloud Storage. Untuk mengetahui informasi selengkapnya tentang batasan dan spesifikasi daftar penolakan, lihat Menggunakan daftar penolakan pelengkapan otomatis.

  6. Klik Simpan dan publikasikan. Perubahan akan diterapkan dalam beberapa menit untuk mesin yang telah mengaktifkan pelengkapan otomatis.

Mengurangi risiko menampilkan saran yang berisi PII

Pengguna akhir memiliki berbagai jenis informasi PII, seperti surat izin mengemudi dan nomor telepon, yang seharusnya mereka rahasiakan. Namun, informasi PII ini mungkin diketik ke dalam kotak penelusuran oleh pengguna yang mencari hasil yang spesifik untuk diri mereka sendiri.

Jika Anda menggunakan model histori penelusuran atau peristiwa pengguna dan ada kemungkinan pengguna Anda mengetik PII ke dalam kotak penelusuran, Anda dapat mengurangi kebocoran PII dengan menyesuaikan parameter berikut:

  • queryFrequencyThreshold: Sebelum kueri dapat ditampilkan sebagai saran pelengkapan otomatis, kueri tersebut harus telah dimasukkan sebanyak ini.

  • numUniqueUsersThreshold: Sebelum kueri dapat ditampilkan sebagai saran pelengkapan otomatis, kueri tersebut harus telah dimasukkan oleh sejumlah pengguna unik ini. Nilai kolom userPseudoId dalam peristiwa pengguna penelusuran menentukan apakah pengguna tersebut unik.

Contoh kasus penggunaan

Misalnya, ambil kasus saat pengguna memiliki nomor rekening yang harus dijaga kerahasiaannya.

Jika model saran histori penelusuran atau peristiwa pengguna digunakan, nomor rekening ini, beserta semua istilah lain yang ditelusuri pengguna akhir, akan digunakan untuk membuat saran. Jadi, jika nomor rekening pengguna A, YZ-46789A, telah berulang kali dimasukkan ke kotak penelusuran dan pengguna B memiliki nomor rekening YZ-42345B, saat pengguna B mengetik YZ-4 ke kotak penelusuran, saran pelengkapan otomatis yang ditampilkan mungkin adalah nomor rekening pengguna A.

Untuk mengurangi kemungkinan terjadinya kebocoran semacam ini, administrator Gemini Enterprise memutuskan untuk:

  • Tingkatkan nilai parameter queryFrequencyThreshold menjadi 30. Dalam hal ini, sangat kecil kemungkinan satu nomor rekening dimasukkan begitu sering. Namun, kueri penelusuran populer akan dimasukkan setidaknya sesering itu.

  • Tingkatkan nilai parameter numUniqueUsersThreshold menjadi 6. Administrator menganggap tidak mungkin nomor rekening yang sama dimasukkan di kotak penelusuran dalam enam peristiwa penelusuran yang masing-masing terkait dengan userPseudoId yang berbeda.

Prosedur

Ada dua parameter nilai minimum untuk pelengkapan otomatis. Parameter ini tidak tersedia di konsol Google Cloud , tetapi dapat ditetapkan dengan panggilan API REST ke metode updateCompletionConfig.

Untuk mengonfigurasi setelan nilai minimum pelengkapan otomatis, ikuti langkah-langkah berikut. Setiap langkah bersifat opsional, bergantung pada parameter yang ingin Anda ubah.

REST

  1. Perbarui kolom 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
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • QUERY_FREQUENCY_THRESHOLD: nilai bilangan bulat yang menunjukkan frekuensi minimum kueri penelusuran harus dimasukkan sebelum dapat ditampilkan sebagai saran pelengkapan otomatis. Jumlahnya dijumlahkan selama periode waktu bergulir selama berbulan-bulan. Defaultnya adalah 8.

  2. Perbarui kolom 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
      }'
    

    Ganti UNIQUE_USERS dengan nilai bilangan bulat yang mewakili jumlah minimum pengguna unik yang harus memasukkan kueri penelusuran tertentu sebelum dapat ditampilkan sebagai saran pelengkapan otomatis. Jumlahnya dijumlahkan selama periode waktu bergulir selama berbulan-bulan. Defaultnya adalah 3.

Memperbarui anotasi kolom yang dapat diselesaikan dalam skema

Untuk mengaktifkan pelengkapan otomatis untuk kolom dalam skema data terstruktur, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Gemini Enterprise.

    Gemini Enterprise

  2. Klik nama aplikasi yang ingin Anda edit. Halaman tersebut harus menggunakan data terstruktur.

  3. Klik Data.

  4. Klik tab Schema.

  5. Klik Edit untuk memilih kolom skema yang akan ditandai sebagai completable.

  6. Klik Save untuk menyimpan konfigurasi kolom yang diperbarui. Saran ini memerlukan waktu sekitar satu hari untuk dibuat dan ditampilkan.

Mengirim permintaan pelengkapan otomatis

Contoh berikut menunjukkan cara mengirim permintaan pelengkapan otomatis.

REST

Untuk mengirim permintaan pelengkapan otomatis menggunakan API, ikuti langkah-langkah berikut:

  1. Temukan ID penyimpanan data Anda. Jika Anda sudah memiliki ID penyimpanan data, lanjutkan ke langkah berikutnya.

    1. Di konsol Google Cloud , buka halaman Gemini Enterprise dan di menu navigasi, klik Data Stores.

      Buka halaman Penyimpanan Data

    2. Klik nama penyimpanan data Anda.

    3. Di halaman Data untuk penyimpanan data Anda, dapatkan ID penyimpanan data.

  2. Panggil metode 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"
    

    Ganti kode berikut:

    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • QUERY_STRING: input typeahead yang digunakan untuk mengambil saran.

Mengirim permintaan pelengkapan otomatis ke model lain

Untuk mengirim permintaan pelengkapan otomatis dengan model saran kueri yang berbeda, ikuti langkah-langkah berikut:

  1. Temukan ID penyimpanan data Anda. Jika Anda sudah memiliki ID penyimpanan data, lanjutkan ke langkah berikutnya.

    1. Di konsol Google Cloud , buka halaman Gemini Enterprise dan di menu navigasi, klik Data Stores.

      Buka halaman Penyimpanan Data

    2. Klik nama penyimpanan data Anda.

    3. Di halaman Data untuk penyimpanan data Anda, dapatkan ID penyimpanan data.

  2. Panggil metode 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"
    

    Ganti kode berikut:

    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID unik penyimpanan data yang terkait dengan aplikasi Anda.

    • QUERY_STRING: input typeahead yang digunakan untuk mengambil saran.

    • QUERY_SUGGESTIONS_MODEL: model saran kueri yang akan digunakan untuk permintaan: document, document-completable, search-history, atau user-event. Untuk data layanan kesehatan, gunakan healthcare-default.

C#

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise C#.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Go.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


//go:build examples

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Java.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Node.js.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * 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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Python.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

# 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

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Gemini Enterprise menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Gemini Enterprise Ruby.

Untuk melakukan autentikasi ke Gemini Enterprise, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Menggunakan daftar penolakan pelengkapan otomatis

Anda dapat menggunakan daftar tolak untuk mencegah istilah tertentu muncul sebagai saran pelengkapan otomatis.

Misalnya, sebuah perusahaan farmasi. Jika suatu obat tidak lagi disetujui FDA, tetapi disebutkan dalam dokumen di penyimpanan datanya, mereka mungkin ingin mencegah obat tersebut muncul sebagai kueri yang disarankan. Perusahaan dapat menambahkan nama obat tersebut ke daftar tolak untuk mencegahnya disarankan.

Batasan berikut berlaku:

  • Satu daftar tolak per penyimpanan data
  • Mengupload daftar tolak akan menimpa daftar tolak yang ada untuk penyimpanan data tersebut
  • Hingga 1.000 istilah per daftar penolakan
  • Istilah tidak peka huruf besar/kecil
  • Setelah mengimpor daftar tolak, perlu waktu 1-2 hari agar daftar tersebut diterapkan

Setiap entri daftar penolakan Anda terdiri dari blockPhrase dan matchOperator:

  • blockPhrase: Masukkan string sebagai istilah daftar penolakan Anda. Istilah tidak peka huruf besar/kecil.
  • matchOperator: Menerima nilai berikut:
    • EXACT_MATCH: Mencegah pencocokan persis istilah daftar tolak muncul sebagai kueri yang disarankan.
    • CONTAINS: Mencegah munculnya saran yang berisi istilah dalam daftar yang tidak diizinkan.

Berikut adalah contoh daftar tolak dengan empat entri:

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

Sebelum mengimpor daftar penolakan, pastikan kontrol akses yang diperlukan telah ditetapkan untuk akses editor Discovery Engine.

Daftar penolakan dapat diimpor dari data JSON lokal atau dari Cloud Storage. Untuk menghapus daftar tolak dari penyimpanan data, hapus permanen daftar tolak.

Mengimpor daftar tolak dari data JSON lokal

Untuk mengimpor daftar tolak dari file JSON lokal yang berisi daftar tolak Anda, lakukan hal berikut:

  1. Buat daftar penolakan Anda dalam file JSON lokal dengan format berikut. Pastikan setiap entri daftar tolak berada di baris baru tanpa jeda baris.

    {
        "inlineSource": {
            "entries": [
                { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" },
                { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
            ]
        }
    }
  2. Buat permintaan POST ke metode suggestionDenyListEntries:import, dengan memberikan nama file JSON Anda.

    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"
    

    Ganti kode berikut:

    • DENYLIST_FILE: jalur lokal file JSON yang berisi istilah daftar tolak.
    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

Setelah mengimpor daftar tolak, perlu waktu 1-2 hari untuk mulai memfilter saran.

Mengimpor daftar penolakan dari Cloud Storage

Untuk mengimpor daftar penolakan dari file JSON di Cloud Storage, lakukan hal berikut:

  1. Buat daftar penolakan Anda dalam file JSON dengan format berikut dan impor ke bucket Cloud Storage. Pastikan setiap entri daftar tolak berada di baris baru tanpa jeda baris.

    { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" }
    { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
  2. Buat file JSON lokal yang berisi objek gcsSource. Gunakan ini untuk mengarahkan ke lokasi file daftar penolakan di bucket Cloud Storage.

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

    Ganti DENYLIST_STORAGE_LOCATION dengan lokasi daftar penolakan Anda di Cloud Storage. Anda hanya dapat memasukkan satu URI. URI harus dimasukkan dalam format ini: gs://BUCKET/FILE_PATH.

  3. Buat permintaan POST ke metode suggestionDenyListEntries:import, termasuk objek 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"
    

    Ganti kode berikut:

    • GCS_SOURCE_FILE: jalur lokal file yang berisi objek gcsSource yang mengarah ke daftar tolak Anda.
    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

Setelah mengimpor daftar tolak, perlu waktu 1-2 hari untuk mulai memfilter saran.

Menghapus total daftar tolak

Untuk menghapus daftar penolakan dari penyimpanan data Anda, lakukan hal berikut:

  1. Buat permintaan POST ke metode suggestionDenyListEntries:purge.

    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"
    

    Ganti kode berikut:

    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

Menggunakan daftar saran pelengkapan otomatis yang diimpor

Anda dapat memilih untuk memberikan daftar saran pelengkapan otomatis Anda sendiri, bukan menggunakan saran pelengkapan otomatis yang dihasilkan dari model data pelengkapan otomatis.

  • Normalisasi teks. Teks saran menggunakan huruf kecil, dinormalisasi Unicode, memiliki spasi kosong internal yang diciutkan, memiliki apostrof keriting (U+2018, U+2019) yang dilipat ke apostrof ASCII (U+0027), dan memiliki karakter tanda kutip ganda tersemat dan titik di akhir yang dihapus.
  • Pemfilteran panjang. Saran yang lebih pendek dari tiga karakter atau lebih panjang dari 125 karakter akan dihapus.
  • Penghapusan duplikat berdasarkan agregasi skor. Jika dua atau beberapa saran yang diimpor dinormalisasi menjadi teks yang sama (misalnya, "Pixel 10 Pro Moonstone" dan "Pixel 10 Pro moonstone", atau "jobseeker’s allowance" dengan apostrof keriting dan "jobseeker's allowance" dengan apostrof ASCII), saran tersebut akan digabungkan menjadi satu saran yang skornya merupakan jumlah skor input. Kirimkan setiap saran yang berbeda hanya sekali jika Anda ingin skornya dipertahankan apa adanya.
  • Pemfilteran PII. Saran yang diidentifikasi berisi informasi identitas pribadi akan difilter.
  • Pemfilteran daftar tolak. Saran yang cocok dengan frasa dalam daftar denylist saran penyimpanan data akan difilter.

SafeSearch tidak diterapkan ke saran yang diimpor; Anda bertanggung jawab untuk memastikan saran yang diimpor sesuai untuk pengguna Anda.

Untuk sebagian besar aplikasi, menggunakan saran yang dihasilkan dari salah satu model data pelengkapan otomatis akan memberikan hasil yang lebih baik. Namun, mungkin ada beberapa situasi langka saat saran model tidak sesuai dengan kebutuhan Anda dan memberikan daftar saran yang terpisah akan memberikan pengalaman pelengkapan otomatis yang lebih baik kepada pengguna.

Misalnya, toko buku online kecil mengimpor daftar judul buku mereka sebagai saran pelengkapan otomatis. Saat pelanggan mulai mengetik di kotak penelusuran, saran pelengkapan otomatis akan selalu berupa judul buku dari daftar yang diimpor. Saat daftar buku berubah, toko buku akan menghapus daftar saat ini dan mengimpor daftar baru. Cuplikan dari daftar tersebut mungkin terlihat seperti ini:

{"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 adalah angka floating point dalam rentang [0, 1] yang digunakan untuk memberi peringkat saran. Atau, Anda dapat menggunakan skor frequency yang merupakan bilangan bulat yang lebih besar dari satu. Skor frequency digunakan untuk memberi peringkat saran jika globalScore tidak tersedia (ditetapkan sebagai null).

Sebelum memulai

Untuk mengimpor saran pelengkapan otomatis, Anda memerlukan peran IAM Discovery Engine Admin, yang mencakup izin discoveryengine.completionSuggestions.import.

Untuk mengetahui informasi selengkapnya, lihat Peran dan izin IAM.

Menyiapkan dan mengimpor saran pelengkapan otomatis

Untuk menyiapkan dan mengimpor daftar saran pelengkapan otomatis dari BigQuery, ikuti langkah-langkah berikut:

  1. Buat daftar saran Anda dan muat ke dalam tabel BigQuery.

    Minimal, Anda harus memberikan setiap saran sebagai string dan skor global atau frekuensi.

    Gunakan skema tabel berikut untuk daftar saran Anda:

    [
      {
        "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"
      }
    ]
    

    Lihat dokumentasi BigQuery untuk mengetahui petunjuk tentang cara membuat tabel BigQuery dan memuat tabel dengan daftar saran pelengkapan otomatis Anda.

  2. Impor daftar dari BigQuery.

    Buat permintaan POST ke metode completionSuggestions:import, termasuk objek 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"}
     }'
    

    Ganti kode berikut:

    • PROJECT_ID: nomor atau ID project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data.
    • PROJECT_ID_SOURCE: project yang berisi set data yang ingin Anda impor.
    • DATASET_ID: ID set data untuk daftar saran yang ingin Anda impor
    • TABLE_ID: ID tabel untuk daftar saran yang ingin Anda impor
  3. Opsional: Catat nilai name yang ditampilkan, dan ikuti petunjuk di Mendapatkan detail tentang operasi yang berjalan lama untuk melihat kapan operasi impor selesai.

  4. Jika Anda belum mengaktifkan pelengkapan otomatis untuk aplikasi, ikuti prosedur Memperbarui setelan pelengkapan otomatis. Pastikan untuk menyetel Enable autocomplete ke Now.

  5. Tunggu beberapa hari hingga pengindeksan selesai dan saran yang diimpor tersedia.

Mengirim permintaan pelengkapan otomatis

Untuk mengirim permintaan pelengkapan otomatis yang menampilkan saran yang diimpor, bukan saran dari model pelengkapan otomatis:

  1. Ikuti prosedur untuk mengirim permintaan pelengkapan otomatis ke model lain dan tetapkan QUERY_SUGGESTIONS_MODEL ke imported-suggestion.

Menghapus daftar saran pelengkapan otomatis yang diimpor

Sebelum mengimpor daftar saran pelengkapan otomatis yang baru, hapus daftar yang ada.

Untuk menghapus daftar saran pelengkapan otomatis yang ada, ikuti langkah berikut:

  1. Buat permintaan POST ke metode completionSuggestions:purge.

    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"
    

    Ganti kode berikut:

    • PROJECT_ID: nomor atau ID project Google Cloud Anda.

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

  2. Opsional: Catat nilai name yang ditampilkan, dan ikuti petunjuk di Mendapatkan detail tentang operasi yang berjalan lama untuk melihat kapan operasi penghapusan selesai.

Model data dokumen lanjutan

Gemini Enterprise menyediakan model data lanjutan untuk pelengkapan otomatis. Berdasarkan dokumen yang Anda impor, model data ini menghasilkan saran pelengkapan otomatis berkualitas tinggi dengan memanfaatkan model bahasa besar (LLM) Google.

Fitur ini masih bersifat eksperimental. Jika Anda tertarik untuk menggunakan fitur ini, hubungi tim akun Google Cloud Anda dan minta untuk ditambahkan ke daftar yang diizinkan.

Model data dokumen lanjutan tidak tersedia untuk penelusuran layanan kesehatan atau di multi-region AS dan Uni Eropa.