Membuat penyimpanan data penelusuran

Untuk membuat penyimpanan data dan menyerap data untuk penelusuran, buka bagian untuk sumber yang ingin Anda gunakan:

Untuk menyinkronkan data dari sumber data pihak ketiga, lihat Menghubungkan sumber data pihak ketiga.

Untuk mengetahui informasi pemecahan masalah, lihat Memecahkan masalah penyerapan data.

Membuat penyimpanan data menggunakan konten situs

Gunakan prosedur berikut untuk membuat penyimpanan data dan mengindeks situs.

Untuk menggunakan penyimpanan data situs setelah membuatnya, Anda harus melampirkannya ke aplikasi yang mengaktifkan fitur Enterprise. Anda dapat mengaktifkan Edisi Enterprise untuk aplikasi saat Anda membuatnya. Tindakan ini akan menimbulkan biaya tambahan. Lihat Membuat aplikasi penelusuran dan Tentang fitur lanjutan.

Sebelum memulai

Jika Anda menggunakan file robots.txt di situs Anda, perbarui file tersebut. Untuk mengetahui informasi selengkapnya, lihat cara menyiapkan file robots.txt situs Anda.

Prosedur

Konsol

Untuk menggunakan konsol Google Cloud guna membuat penyimpanan data dan mengindeks situs, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data Stores.

  3. Klik Create data store.

  4. Di halaman Sumber, pilih Konten Situs.

  5. Pilih apakah akan mengaktifkan Pengindeksan situs lanjutan untuk penyimpanan data ini. Opsi ini tidak dapat diaktifkan atau dinonaktifkan nanti.

    Pengindeksan situs lanjutan menyediakan fitur tambahan seperti ringkasan penelusuran, penelusuran dengan tindak lanjut, dan jawaban ekstraktif. Pengindeksan situs lanjutan menimbulkan biaya tambahan, dan mengharuskan Anda memverifikasi kepemilikan domain untuk situs yang Anda indeks. Untuk mengetahui informasi selengkapnya, lihat Pengindeksan situs lanjutan dan Harga.

  6. Di kolom Sites to include, masukkan pola URL yang cocok dengan situs yang ingin Anda sertakan dalam penyimpanan data. Sertakan satu pola URL per baris, tanpa pemisah koma. Sebagai contoh, example.com/docs/*

  7. Opsional: Di kolom Situs yang akan dikecualikan, masukkan pola URL yang ingin Anda kecualikan dari penyimpanan data.

    Situs yang dikecualikan lebih diprioritaskan daripada situs yang disertakan. Jadi, jika Anda menyertakan example.com/docs/*, tetapi mengecualikan example.com, tidak ada situs yang akan diindeks. Untuk mengetahui informasi selengkapnya, lihat Data situs.

  8. Klik Lanjutkan.

  9. Pilih lokasi untuk penyimpanan data Anda.

    • Saat Anda membuat penyimpanan data penelusuran situs dasar, setelan ini selalu ditetapkan ke global (Global).
    • Saat membuat penyimpanan data dengan pengindeksan situs lanjutan, Anda dapat memilih lokasi. Karena situs yang diindeks harus bersifat publik, Google sangat menyarankan agar Anda memilih global (Global) sebagai lokasi Anda. Hal ini memastikan ketersediaan maksimum semua layanan penelusuran dan jawaban serta menghilangkan batasan penyimpanan data regional.
  10. Masukkan nama untuk penyimpanan data Anda.

  11. Klik Buat. Vertex AI Search akan membuat penyimpanan data dan menampilkan penyimpanan data Anda di halaman Data Stores.

  12. Untuk melihat informasi tentang penyimpanan data, klik nama penyimpanan data Anda di kolom Nama. Halaman penyimpanan data Anda akan muncul.

    • Jika Anda mengaktifkan Pengindeksan situs lanjutan, peringatan akan muncul yang meminta Anda untuk memverifikasi domain di penyimpanan data Anda.
    • Jika Anda mengalami kekurangan kuota (jumlah halaman di situs yang Anda tentukan melebihi kuota "Jumlah dokumen per project" untuk project Anda), peringatan tambahan akan muncul yang meminta Anda mengupgrade kuota.
  13. Untuk memverifikasi domain untuk pola URL di penyimpanan data Anda, ikuti petunjuk di halaman Verifikasi domain situs.

  14. Untuk mengupgrade kuota, ikuti langkah-langkah berikut:

    1. Klik Upgrade kuota. Halaman IAM dan Admin di konsol Google Cloud akan muncul.
    2. Ikuti petunjuk di bagian Meminta penyesuaian kuota dalam dokumentasi Google Cloud . Kuota yang akan ditingkatkan adalah Jumlah dokumen di layanan Discovery Engine API.
    3. Setelah mengirimkan permintaan untuk batas kuota yang lebih tinggi, kembali ke halaman AI Applications, lalu klik Data Stores di menu navigasi.
    4. Klik nama penyimpanan data Anda di kolom Nama. Kolom Status menunjukkan bahwa pengindeksan sedang berlangsung untuk situs yang telah melampaui kuota. Jika kolom Status untuk URL menampilkan Diindeks, fitur pengindeksan situs tingkat lanjut tersedia untuk URL atau pola URL tersebut.

    Untuk mengetahui informasi selengkapnya, lihat Kuota untuk pengindeksan halaman web di halaman "Kuota dan batas".

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor situs

#     from google.api_core.client_options import ClientOptions
#
#     from google.cloud import discoveryengine_v1 as discoveryengine
#
#     # TODO(developer): Uncomment these variables before running the sample.
#     # project_id = "YOUR_PROJECT_ID"
#     # location = "YOUR_LOCATION" # Values: "global"
#     # data_store_id = "YOUR_DATA_STORE_ID"
#     # NOTE: Do not include http or https protocol in the URI pattern
#     # uri_pattern = "cloud.google.com/generative-ai-app-builder/docs/*"
#
#     #  For more information, refer to:
#     # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
#     client_options = (
#         ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
#         if location != "global"
#         else None
#     )
#
#     # Create a client
#     client = discoveryengine.SiteSearchEngineServiceClient(
#         client_options=client_options
#     )
#
#     # The full resource name of the data store
#     # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}
#     site_search_engine = client.site_search_engine_path(
#         project=project_id, location=location, data_store=data_store_id
#     )
#
#     # Target Site to index
#     target_site = discoveryengine.TargetSite(
#         provided_uri_pattern=uri_pattern,
#         # Options: INCLUDE, EXCLUDE
#         type_=discoveryengine.TargetSite.Type.INCLUDE,
#         exact_match=False,
#     )
#
#     # Make the request
#     operation = client.create_target_site(
#         parent=site_search_engine,
#         target_site=target_site,
#     )
#
#     print(f"Waiting for operation to complete: {operation.operation.name}")
#     response = operation.result()
#
#     # After the operation is complete,
#     # get information from operation metadata
#     metadata = discoveryengine.CreateTargetSiteMetadata(operation.metadata)
#
#     # Handle the response
#     print(response)
#     print(metadata)

Langkah berikutnya

Impor dari BigQuery

Vertex AI Search mendukung penelusuran di seluruh data BigQuery.

Anda dapat membuat penyimpanan data dari tabel BigQuery dengan dua cara:

  • Penyerapan satu kali: Anda mengimpor data dari tabel BigQuery ke penyimpanan data. Data di penyimpanan data tidak akan berubah kecuali jika Anda memuat ulang data secara manual.

  • Penyerapan berkala: Anda mengimpor data dari satu atau beberapa tabel BigQuery, dan menetapkan frekuensi sinkronisasi yang menentukan seberapa sering data toko diperbarui dengan data terbaru dari set data BigQuery.

Tabel berikut membandingkan dua cara yang dapat Anda gunakan untuk mengimpor data BigQuery ke penyimpanan data Vertex AI Search.

Penyerapan satu kali Penyerapan berkala
Tersedia secara umum (GA). Pratinjau publik.
Data harus diperbarui secara manual. Data diperbarui secara otomatis setiap 1, 3, atau 5 hari. Data tidak dapat dimuat ulang secara manual.
Vertex AI Search membuat satu penyimpanan data dari satu tabel di BigQuery. Vertex AI Search membuat konektor data untuk set data BigQuery dan penyimpanan data (disebut penyimpanan data entitas) untuk setiap tabel yang ditentukan. Untuk setiap konektor data, tabel harus memiliki jenis data yang sama (misalnya, terstruktur) dan berada dalam set data BigQuery yang sama.
Data dari beberapa tabel dapat digabungkan dalam satu penyimpanan data dengan terlebih dahulu menyerahkan data dari satu tabel, lalu lebih banyak data dari sumber atau tabel BigQuery lain. Karena impor data manual tidak didukung, data di penyimpanan data entitas hanya dapat bersumber dari satu tabel BigQuery.
Kontrol akses sumber data didukung. Kontrol akses sumber data tidak didukung. Data yang diimpor dapat berisi kontrol akses, tetapi kontrol ini tidak akan dipatuhi.
Anda dapat membuat penyimpanan data menggunakan konsolGoogle Cloud atau API. Anda harus menggunakan konsol untuk membuat konektor data dan penyimpanan data entitasnya.
Kompatibel dengan CMEK. Kompatibel dengan CMEK.

Mengimpor satu kali dari BigQuery

Untuk menyerap data dari tabel BigQuery, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan konsol atau API. Google Cloud

Sebelum mengimpor data, tinjau Menyiapkan data untuk penyerapan.

Konsol

Untuk menggunakan konsol Google Cloud guna menyerap data dari BigQuery, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik Buat penyimpanan data.

  4. Di halaman Sumber, pilih BigQuery.

  5. Pilih jenis data yang akan Anda impor dari bagian Jenis data yang Anda impor.

  6. Pilih Satu kali di bagian Frekuensi sinkronisasi.

  7. Di kolom BigQuery path, klik Browse, pilih tabel yang telah Anda siapkan untuk penyerapan, lalu klik Select. Atau, masukkan lokasi tabel langsung di kolom jalur BigQuery.

  8. Klik Lanjutkan.

  9. Jika Anda melakukan impor data terstruktur satu kali:

    1. Petakan kolom ke properti utama.

    2. Jika ada kolom penting yang tidak ada dalam skema, gunakan Tambahkan kolom baru untuk menambahkannya.

      Untuk mengetahui informasi selengkapnya, lihat Tentang deteksi otomatis dan pengeditan.

    3. Klik Lanjutkan.

  10. Pilih region untuk penyimpanan data Anda.

  11. Masukkan nama untuk penyimpanan data Anda.

  12. Klik Buat.

  13. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, penyerapan data dapat memerlukan waktu beberapa menit hingga beberapa jam.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan mengimpor data dari BigQuery, ikuti langkah-langkah berikut.

  1. Buat penyimpanan data.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data Vertex AI Search yang ingin Anda buat.

    Opsional: Jika Anda mengupload data tidak terstruktur dan ingin mengonfigurasi penguraian dokumen atau mengaktifkan pengelompokan dokumen untuk RAG, tentukan objek documentProcessingConfig dan sertakan dalam permintaan pembuatan penyimpanan data Anda. Sebaiknya konfigurasi parser OCR untuk PDF jika Anda menyerap PDF yang dipindai. Untuk mengetahui cara mengonfigurasi opsi penguraian atau pengelompokan, lihat Mengurai dan mengelompokkan dokumen.

  2. Mengimpor data dari BigQuery.

    Jika Anda menentukan skema, pastikan data sesuai dengan skema tersebut.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA",
        "aclEnabled": "BOOLEAN"
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": "AUTO_GENERATE_IDS",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search.
    • DATASET_ID: ID set data BigQuery.
    • TABLE_ID: ID tabel BigQuery.
      • Jika tabel BigQuery tidak berada di bawah PROJECT_ID, Anda harus memberikan izin "BigQuery Data Viewer" kepada akun layanan service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com untuk tabel BigQuery. Misalnya, jika Anda mengimpor tabel BigQuery dari project sumber "123" ke project tujuan "456", berikan izin service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com untuk tabel BigQuery di project "123".
    • DATA_SCHEMA: optional. Nilainya adalah document dan custom. Defaultnya adalah document.
      • document: tabel BigQuery yang Anda gunakan harus sesuai dengan skema BigQuery default yang disediakan di Menyiapkan data untuk penyerapan. Anda dapat menentukan sendiri ID setiap dokumen, sambil membungkus semua data dalam string jsonData.
      • custom: Skema tabel BigQuery apa pun diterima, dan Vertex AI Search otomatis membuat ID untuk setiap dokumen yang diimpor.
    • ERROR_DIRECTORY: optional. Direktori Cloud Storage untuk informasi error tentang impor—misalnya, gs://<your-gcs-bucket>/directory/import_errors. Google merekomendasikan agar Anda mengosongkan kolom ini agar Vertex AI Search dapat membuat direktori sementara secara otomatis.
    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan pembaruan data inkremental dari BigQuery ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan mengganti dokumen yang ada dengan dokumen yang telah diupdate dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di BigQuery akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.
    • AUTO_GENERATE_IDS: optional. Menentukan apakah ID dokumen akan dibuat secara otomatis. Jika disetel ke true, ID dokumen dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dibuat mungkin tidak tetap konsisten selama beberapa kali impor. Jika Anda membuat ID secara otomatis di beberapa impor, Google sangat merekomendasikan agar Anda menyetel reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika bigquerySource.dataSchema disetel ke custom. Jika tidak, error INVALID_ARGUMENT akan ditampilkan. Jika Anda tidak menentukan autoGenerateIds atau menyetelnya ke false, Anda harus menentukan idField. Jika tidak, dokumen akan gagal diimpor.

    • ID_FIELD: optional. Menentukan kolom mana yang merupakan ID dokumen. Untuk file sumber BigQuery, idField menunjukkan nama kolom dalam tabel BigQuery yang berisi ID dokumen.

      Tentukan idField hanya jika: (1) bigquerySource.dataSchema ditetapkan ke custom, dan (2) auto_generate_ids ditetapkan ke false atau tidak ditentukan. Jika tidak, error INVALID_ARGUMENT akan ditampilkan.

      Nilai nama kolom BigQuery harus berupa jenis string, harus terdiri dari 1 hingga 63 karakter, dan harus sesuai dengan RFC-1034. Jika tidak, dokumen akan gagal diimpor.

C#

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Aplikasi AI.

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

Membuat penyimpanan data

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</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 CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            CmekConfigNameAsCmekConfigName = CmekConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Mengimpor dokumen

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</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 ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
            ForceRefreshContent = false,
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Aplikasi AI.

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

Membuat penyimpanan data


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.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Mengimpor dokumen


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.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Aplikasi AI.

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

Membuat penyimpanan data

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

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

  public static void syncCreateDataStore() 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 (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Mengimpor dokumen

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

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

  public static void syncImportDocuments() 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 (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .setForceRefreshContent(true)
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Aplikasi AI.

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

Membuat penyimpanan data

/**
 * 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.
 */
/**
 *  Resource name of the CmekConfig to use for protecting this DataStore.
 */
// const cmekConfigName = 'abc123'
/**
 *  DataStore without CMEK protections. If a default CmekConfig is set for
 *  the project, setting this field will override the default CmekConfig as
 *  well.
 */
// const disableCmek = true
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

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

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

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

  // Run request
  const [operation] = await discoveryengineClient.createDataStore(request);
  const [response] = await operation.promise();
  console.log(response);
}

callCreateDataStore();

Mengimpor dokumen

/**
 * 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.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'
/**
 *  Optional. Whether to force refresh the unstructured content of the
 *  documents.
 *  If set to `true`, the content part of the documents will be refreshed
 *  regardless of the update status of the referencing content.
 */
// const forceRefreshContent = true

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

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

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigquery_dataset = "YOUR_BIGQUERY_DATASET"
# bigquery_table = "YOUR_BIGQUERY_TABLE"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigquery_source=discoveryengine.BigQuerySource(
        project_id=project_id,
        dataset_id=bigquery_dataset,
        table_id=bigquery_table,
        data_schema="custom",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Ruby

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Aplikasi AI.

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

Membuat penyimpanan data

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService 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::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

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

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

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Mengimpor dokumen

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService 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::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

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

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

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Menghubungkan ke BigQuery dengan sinkronisasi berkala

Sebelum mengimpor data, tinjau Menyiapkan data untuk penyerapan.

Prosedur berikut menjelaskan cara membuat konektor data yang mengaitkan set data BigQuery dengan konektor data Vertex AI Search dan cara menentukan tabel pada set data untuk setiap penyimpanan data yang ingin Anda buat. Penyimpanan data yang merupakan turunan dari konektor data disebut penyimpanan data entitas.

Data dari set data disinkronkan secara berkala ke penyimpanan data entity. Anda dapat menentukan sinkronisasi harian, setiap tiga hari, atau setiap lima hari.

Konsol

Untuk menggunakan konsol Google Cloud guna membuat konektor yang secara berkala menyinkronkan data dari set data BigQuery ke Vertex AI Search, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data Stores.

  3. Klik Create data store.

  4. Di halaman Sumber, pilih BigQuery.

  5. Pilih jenis data yang Anda impor.

  6. Klik Berkala.

  7. Pilih Frekuensi sinkronisasi, seberapa sering Anda ingin konektor Vertex AI Search disinkronkan dengan set data BigQuery. Anda dapat mengubah frekuensi nanti.

  8. Di kolom BigQuery dataset path, klik Browse, pilih set data yang berisi tabel yang telah Anda siapkan untuk penyerapan. Atau, masukkan lokasi tabel secara langsung di kolom jalur BigQuery. Format untuk jalur adalah projectname.datasetname.

  9. Di kolom Tabel yang akan disinkronkan, klik Telusuri, lalu pilih tabel yang berisi data yang Anda inginkan untuk penyimpanan data.

  10. Jika ada tabel tambahan dalam set data yang ingin Anda gunakan untuk penyimpanan data, klik Tambahkan tabel dan tentukan tabel tersebut juga.

  11. Klik Lanjutkan.

  12. Pilih region untuk penyimpanan data Anda, masukkan nama untuk penghubung data Anda, lalu klik Buat.

    Anda kini telah membuat konektor data, yang akan menyinkronkan data secara berkala dengan set data BigQuery. Selain itu, Anda telah membuat satu atau beberapa penyimpanan data entitas. Penyimpanan data memiliki nama yang sama dengan tabel BigQuery.

  13. Untuk memeriksa status penyerapan, buka halaman Data Stores, lalu klik nama penghubung data Anda untuk melihat detailnya di halaman Data > tab Data ingestion activity. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi berhasil, penyerapan pertama selesai.

    Bergantung pada ukuran data Anda, penyerapan data dapat memerlukan waktu beberapa menit hingga beberapa jam.

Setelah Anda menyiapkan sumber data dan mengimpor data untuk pertama kalinya, penyimpanan data akan menyinkronkan data dari sumber tersebut pada frekuensi yang Anda pilih selama penyiapan. Sekitar satu jam setelah konektor data dibuat, sinkronisasi pertama akan terjadi. Sinkronisasi berikutnya akan terjadi sekitar 24 jam, 72 jam, atau 120 jam kemudian.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Cloud Storage

Anda dapat membuat penyimpanan data dari tabel Cloud Storage dengan dua cara:

  • Penyerapan satu kali: Anda mengimpor data dari folder atau file Cloud Storage ke dalam penyimpanan data. Data di penyimpanan data tidak berubah kecuali jika Anda memuat ulang data secara manual.

  • Penyerapan berkala: Anda mengimpor data dari folder atau file Cloud Storage, dan menetapkan frekuensi sinkronisasi yang menentukan seberapa sering penyimpanan data diperbarui dengan data terbaru dari lokasi Cloud Storage tersebut.

Tabel berikut membandingkan dua cara Anda dapat mengimpor data Cloud Storage ke penyimpanan data Vertex AI Search.

Penyerapan satu kali Penyerapan berkala
Tersedia secara umum (GA). Pratinjau publik.
Data harus diperbarui secara manual. Data diperbarui secara otomatis setiap satu, tiga, atau lima hari. Data tidak dapat dimuat ulang secara manual.
Vertex AI Search membuat satu penyimpanan data dari satu folder atau file di Cloud Storage. Vertex AI Search membuat konektor data, dan mengaitkan penyimpanan data (yang disebut penyimpanan data entitas) dengannya untuk file atau folder yang ditentukan. Setiap konektor data Cloud Storage dapat memiliki satu penyimpanan data entity.
Data dari beberapa file, folder, dan bucket dapat digabungkan dalam satu penyimpanan data dengan terlebih dahulu menyerap data dari satu lokasi Cloud Storage, lalu lebih banyak data dari lokasi lain. Karena impor data manual tidak didukung, data di penyimpanan data entitas hanya dapat bersumber dari satu file atau folder Cloud Storage.
Kontrol akses sumber data didukung. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses sumber data. Kontrol akses sumber data tidak didukung. Data yang diimpor dapat berisi kontrol akses, tetapi kontrol ini tidak akan dipatuhi.
Anda dapat membuat penyimpanan data menggunakan konsolGoogle Cloud atau API. Anda harus menggunakan konsol untuk membuat konektor data dan penyimpanan data entitasnya.
Kompatibel dengan CMEK. Kompatibel dengan CMEK.

Mengimpor sekali dari Cloud Storage

Untuk menyerap data dari Cloud Storage, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan konsol atau API. Google Cloud

Sebelum mengimpor data, tinjau Menyiapkan data untuk penyerapan.

Konsol

Untuk menggunakan konsol guna menyerap data dari bucket Cloud Storage, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik Buat penyimpanan data.

  4. Di halaman Source, pilih Cloud Storage.

  5. Di bagian Pilih folder atau file yang ingin Anda impor, pilih Folder atau File.

  6. Klik Jelajahi, lalu pilih data yang telah Anda siapkan untuk penyerapan, lalu klik Pilih. Atau, masukkan lokasi langsung di kolom gs://.

  7. Pilih jenis data yang Anda impor.

  8. Klik Lanjutkan.

  9. Jika Anda melakukan impor data terstruktur satu kali:

    1. Petakan kolom ke properti utama.

    2. Jika ada kolom penting yang tidak ada dalam skema, gunakan Tambahkan kolom baru untuk menambahkannya.

      Untuk mengetahui informasi selengkapnya, lihat Tentang deteksi otomatis dan pengeditan.

    3. Klik Lanjutkan.

  10. Pilih region untuk penyimpanan data Anda.

  11. Masukkan nama untuk penyimpanan data Anda.

  12. Opsional: Jika Anda memilih dokumen tidak terstruktur, Anda dapat memilih opsi penguraian dan pengelompokan untuk dokumen Anda. Untuk membandingkan parser, lihat Mem-parsing dokumen. Untuk mengetahui informasi tentang chunking, lihat Mengelompokkan dokumen untuk RAG.

    Parser OCR dan parser tata letak dapat menimbulkan biaya tambahan. Lihat Harga fitur Document AI.

    Untuk memilih parser, luaskan Opsi pemrosesan dokumen dan tentukan opsi parser yang ingin Anda gunakan.

  13. Klik Buat.

  14. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit atau beberapa jam.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan menyerap data dari Cloud Storage, ikuti langkah-langkah berikut.

  1. Buat penyimpanan data.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data Vertex AI Search yang ingin Anda buat.

    Opsional: Jika Anda mengupload data tidak terstruktur dan ingin mengonfigurasi penguraian dokumen atau mengaktifkan pengelompokan dokumen untuk RAG, tentukan objek documentProcessingConfig dan sertakan dalam permintaan pembuatan penyimpanan data Anda. Sebaiknya konfigurasi parser OCR untuk PDF jika Anda menyerap PDF yang dipindai. Untuk mengetahui cara mengonfigurasi opsi penguraian atau pengelompokan, lihat Mengurai dan mengelompokkan dokumen.

  2. Mengimpor data dari Cloud Storage.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "gcsSource": {
          "inputUris": ["INPUT_FILE_PATTERN_1", "INPUT_FILE_PATTERN_2"],
          "dataSchema": "DATA_SCHEMA",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
        "errorConfig": {
          "gcsPrefix": "ERROR_DIRECTORY"
        }
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search.
    • INPUT_FILE_PATTERN: pola file di Cloud Storage yang berisi dokumen Anda.

      Untuk data terstruktur atau data tidak terstruktur dengan metadata, contoh pola file input adalah gs://<your-gcs-bucket>/directory/object.jsondan contoh pencocokan pola satu atau beberapa file adalah gs://<your-gcs-bucket>/directory/*.json.

      Untuk dokumen tidak terstruktur, contohnya adalah gs://<your-gcs-bucket>/directory/*.pdf. Setiap file yang cocok dengan pola akan menjadi dokumen.

      Jika <your-gcs-bucket> tidak berada di bawah PROJECT_ID, Anda harus memberikan izin "Storage Object Viewer" kepada akun layanan service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com untuk bucket Cloud Storage. Misalnya, jika Anda mengimpor bucket Cloud Storage dari project sumber "123" ke project tujuan "456", berikan izin service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com pada bucket Cloud Storage di project "123".

    • DATA_SCHEMA: optional. Nilainya adalah document, custom, csv, dan content. Defaultnya adalah document.

      • document: Upload data tidak terstruktur dengan metadata untuk dokumen tidak terstruktur. Setiap baris file harus mengikuti salah satu format berikut. Anda dapat menentukan ID setiap dokumen:

        • { "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
        • { "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
      • custom: Upload JSON untuk dokumen terstruktur. Data diatur sesuai dengan skema. Anda dapat menentukan skema; jika tidak, skema akan terdeteksi secara otomatis. Anda dapat menempatkan string JSON dokumen dalam format yang konsisten langsung di setiap baris, dan Vertex AI Search akan otomatis membuat ID untuk setiap dokumen yang diimpor.

      • content: Upload dokumen tidak terstruktur (PDF, HTML, DOC, TXT, PPTX). ID setiap dokumen dibuat secara otomatis sebagai 128 bit pertama SHA256(GCS_URI) yang dienkode sebagai string hex. Anda dapat menentukan beberapa pola file input selama file yang cocok tidak melebihi batas 100 ribu file.

      • csv: Sertakan baris header dalam file CSV Anda, dengan setiap header dipetakan ke kolom dokumen. Tentukan jalur ke file CSV menggunakan kolom inputUris.

    • ERROR_DIRECTORY: optional. Direktori Cloud Storage untuk informasi error tentang impor—misalnya, gs://<your-gcs-bucket>/directory/import_errors. Google merekomendasikan agar kolom ini dikosongkan agar Vertex AI Search dapat membuat direktori sementara secara otomatis.

    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan refresh data inkremental dari Cloud Storage ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan menggantikan dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di Cloud Storage akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.

    • AUTO_GENERATE_IDS: optional. Menentukan apakah ID dokumen akan dibuat secara otomatis. Jika disetel ke true, ID dokumen dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dibuat mungkin tidak tetap konsisten selama beberapa kali impor. Jika Anda membuat ID secara otomatis di beberapa impor, Google sangat menganjurkan untuk menyetel reconciliationMode ke FULL guna mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika gcsSource.dataSchema ditetapkan ke custom atau csv. Jika tidak, error INVALID_ARGUMENT akan ditampilkan. Jika Anda tidak menentukan autoGenerateIds atau menyetelnya ke false, Anda harus menentukan idField. Jika tidak, dokumen akan gagal diimpor.

    • ID_FIELD: optional. Menentukan kolom mana yang merupakan ID dokumen. Untuk dokumen sumber Cloud Storage, idField menentukan nama di kolom JSON yang merupakan ID dokumen. Misalnya, jika {"my_id":"some_uuid"} adalah kolom ID dokumen di salah satu dokumen Anda, tentukan "idField":"my_id". Ini mengidentifikasi semua kolom JSON dengan nama "my_id" sebagai ID dokumen.

      Tentukan kolom ini hanya jika: (1) gcsSource.dataSchema ditetapkan ke custom atau csv, dan (2) auto_generate_ids ditetapkan ke false atau tidak ditentukan. Jika tidak, error INVALID_ARGUMENT akan ditampilkan.

      Perhatikan bahwa nilai kolom JSON Cloud Storage harus berupa jenis string, harus antara 1-63 karakter, dan harus sesuai dengan RFC-1034. Jika tidak, dokumen akan gagal diimpor.

      Perhatikan bahwa nama kolom JSON yang ditentukan oleh id_field harus berupa jenis string, harus terdiri dari 1 hingga 63 karakter, dan harus sesuai dengan RFC-1034. Jika tidak, dokumen akan gagal diimpor.

C#

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Aplikasi AI.

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

Membuat penyimpanan data

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</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 CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            CmekConfigNameAsCmekConfigName = CmekConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Mengimpor dokumen

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</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 ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
            ForceRefreshContent = false,
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Aplikasi AI.

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

Membuat penyimpanan data


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.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Mengimpor dokumen


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.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Aplikasi AI.

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

Membuat penyimpanan data

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

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

  public static void syncCreateDataStore() 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 (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Mengimpor dokumen

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

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

  public static void syncImportDocuments() 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 (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .setForceRefreshContent(true)
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Aplikasi AI.

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

Membuat penyimpanan data

/**
 * 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.
 */
/**
 *  Resource name of the CmekConfig to use for protecting this DataStore.
 */
// const cmekConfigName = 'abc123'
/**
 *  DataStore without CMEK protections. If a default CmekConfig is set for
 *  the project, setting this field will override the default CmekConfig as
 *  well.
 */
// const disableCmek = true
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

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

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

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

  // Run request
  const [operation] = await discoveryengineClient.createDataStore(request);
  const [response] = await operation.promise();
  console.log(response);
}

callCreateDataStore();

Mengimpor dokumen

/**
 * 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.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'
/**
 *  Optional. Whether to force refresh the unstructured content of the
 *  documents.
 *  If set to `true`, the content part of the documents will be refreshed
 *  regardless of the update status of the referencing content.
 */
// const forceRefreshContent = true

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

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

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"

# Examples:
# - Unstructured documents
#   - `gs://bucket/directory/file.pdf`
#   - `gs://bucket/directory/*.pdf`
# - Unstructured documents with JSONL Metadata
#   - `gs://bucket/directory/file.json`
# - Unstructured documents with CSV Metadata
#   - `gs://bucket/directory/file.csv`
# gcs_uri = "YOUR_GCS_PATH"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    gcs_source=discoveryengine.GcsSource(
        # Multiple URIs are supported
        input_uris=[gcs_uri],
        # Options:
        # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
        # - `custom` - Unstructured documents with custom JSONL metadata
        # - `document` - Structured documents in the discoveryengine.Document format.
        # - `csv` - Unstructured documents with CSV metadata
        data_schema="content",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Ruby

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Aplikasi AI.

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

Membuat penyimpanan data

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService 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::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

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

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

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Mengimpor dokumen

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService 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::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

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

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

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Menghubungkan ke Cloud Storage dengan sinkronisasi berkala

Sebelum mengimpor data, tinjau Menyiapkan data untuk penyerapan.

Prosedur berikut menjelaskan cara membuat konektor data yang mengaitkan lokasi Cloud Storage dengan konektor data Vertex AI Search dan cara menentukan folder atau file di lokasi tersebut untuk penyimpanan data yang ingin Anda buat. Penyimpanan data yang merupakan turunan dari konektor data disebut penyimpanan data entitas.

Data disinkronkan secara berkala ke penyimpanan data entitas. Anda dapat menentukan sinkronisasi harian, setiap tiga hari, atau setiap lima hari.

Konsol

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik Create data store.

  4. Di halaman Source, pilih Cloud Storage.

  5. Pilih jenis data yang Anda impor.

  6. Klik Berkala.

  7. Pilih Frekuensi sinkronisasi, seberapa sering Anda ingin konektor Vertex AI Search disinkronkan dengan lokasi Cloud Storage. Anda dapat mengubah frekuensi nanti.

  8. Di bagian Pilih folder atau file yang ingin Anda impor, pilih Folder atau File.

  9. Klik Jelajahi, lalu pilih data yang telah Anda siapkan untuk penyerapan, lalu klik Pilih. Atau, masukkan lokasi langsung di kolom gs://.

  10. Klik Lanjutkan.

  11. Pilih region untuk konektor data Anda.

  12. Masukkan nama untuk konektor data Anda.

  13. Opsional: Jika Anda memilih dokumen tidak terstruktur, Anda dapat memilih opsi penguraian dan pengelompokan untuk dokumen Anda. Untuk membandingkan parser, lihat Mem-parsing dokumen. Untuk mengetahui informasi tentang chunking, lihat Mengelompokkan dokumen untuk RAG.

    Parser OCR dan parser tata letak dapat menimbulkan biaya tambahan. Lihat Harga fitur Document AI.

    Untuk memilih parser, luaskan Opsi pemrosesan dokumen dan tentukan opsi parser yang ingin Anda gunakan.

  14. Klik Buat.

    Anda kini telah membuat konektor data, yang akan menyinkronkan data secara berkala dengan lokasi Cloud Storage. Anda juga telah membuat penyimpanan data entitas, yang diberi nama gcs_store.

  15. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama konektor data untuk melihat detailnya di halaman Data

    Tab Aktivitas penyerapan data. Saat kolom status pada tab Aktivitas penyerapan data berubah dari Sedang berlangsung menjadi berhasil, penyerapan pertama selesai.

    Bergantung pada ukuran data Anda, penyerapan data dapat memerlukan waktu beberapa menit hingga beberapa jam.

Setelah Anda menyiapkan sumber data dan mengimpor data untuk pertama kalinya, data akan disinkronkan dari sumber tersebut dengan frekuensi yang Anda pilih selama penyiapan. Sekitar satu jam setelah konektor data dibuat, sinkronisasi pertama akan terjadi. Sinkronisasi berikutnya akan terjadi sekitar 24 jam, 72 jam, atau 120 jam kemudian.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Menghubungkan ke Google Drive

Aplikasi AI dapat menelusuri data dari Google Drive menggunakan federasi data, yang secara langsung mengambil informasi dari sumber data yang ditentukan. Karena data tidak disalin ke indeks Vertex AI Search, Anda tidak perlu khawatir tentang penyimpanan data.

Sebelum memulai

  • Anda harus login ke konsol Google Cloud dengan akun yang sama dengan yang Anda gunakan untuk instance Google Drive yang ingin Anda hubungkan. Aplikasi AI menggunakan ID pelanggan Google Workspace Anda untuk terhubung ke Google Drive.
  • Pastikan semua dokumen dapat diakses, baik dengan menempatkannya di drive bersama yang dimiliki oleh domain atau dengan menetapkan kepemilikan kepada pengguna di domain.

  • Aktifkan fitur smart Google Workspace untuk menghubungkan data Google Drive ke Aplikasi AI. Untuk mengetahui informasinya, lihat Mengaktifkan atau menonaktifkan fitur smart Google Workspace.

  • Jika Anda menggunakan kontrol keamanan, perhatikan batasannya terkait data di Google Drive, seperti yang dibahas dalam tabel berikut:

    Kontrol keamanan Perhatikan hal berikut
    Residensi Data (DRZ) Aplikasi AI hanya menjamin residensi data di Google Cloud. Untuk mengetahui informasi tentang residensi data dan Google Drive, lihat panduan dan dokumentasi kepatuhan Google Workspace—misalnya, Memilih region tempat data disimpan dan Kedaulatan digital.
    Kunci enkripsi yang dikelola pelanggan (CMEK) Kunci Anda hanya mengenkripsi data dalam Google Cloud. Kontrol Cloud Key Management Service tidak berlaku untuk data yang disimpan di Google Drive.
    Transparansi Akses Transparansi Akses mencatat tindakan yang dilakukan oleh staf Google di Google Cloud project. Anda juga perlu meninjau log Transparansi Akses yang dibuat oleh Google Workspace. Untuk informasi selengkapnya, lihat Peristiwa log Transparansi Akses dalam dokumentasi Bantuan Admin Google Workspace.

Membuat penyimpanan data Google Drive

Konsol

Untuk menggunakan konsol agar data Google Drive dapat ditelusuri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data stores.

  3. Klik Buat penyimpanan data.

  4. Di halaman Pilih sumber data, pilih Google Drive.

  5. Tentukan sumber drive untuk penyimpanan data Anda.

    • Semua: Untuk menambahkan seluruh drive Anda ke penyimpanan data.
    • Drive bersama tertentu: Tambahkan ID folder drive bersama.
    • Folder bersama tertentu: Tambahkan ID folder bersama.

    Untuk menemukan ID folder drive bersama atau ID folder tertentu, buka drive bersama atau folder, lalu salin ID dari URL. URL mengikuti format ini: https://drive.google.com/corp/drive/folders/ID.

    Misalnya, https://drive.google.com/corp/drive/folders/123456789012345678901.

  6. Klik Lanjutkan.

  7. Pilih region untuk penyimpanan data Anda.

  8. Masukkan nama untuk penyimpanan data Anda.

  9. Opsional: Untuk mengecualikan data di penyimpanan data ini agar tidak digunakan untuk konten AI generatif saat Anda membuat kueri data menggunakan aplikasi, klik Opsi AI generatif dan pilih Kecualikan dari fitur AI generatif.

  10. Klik Buat.

Pesan error

Tabel berikut menjelaskan pesan error yang mungkin Anda temukan saat bekerja dengan sumber data Google ini, dan mencakup kode error HTTP serta langkah-langkah pemecahan masalah yang disarankan.

Kode error Pesan error Deskripsi Pemecahan masalah
403 (Permission Denied) Penelusuran menggunakan kredensial akun layanan tidak didukung untuk penyimpanan data Google Workspace. Mesin yang ditelusuri memiliki penyimpanan data Google Workspace, dan kredensial yang diteruskan adalah akun layanan. Penelusuran menggunakan kredensial akun layanan di penyimpanan data Google Workspace tidak didukung. Panggil penelusuran menggunakan kredensial pengguna, atau hapus penyimpanan data Google Workspace dari mesin.
403 (Permission Denied) Akun konsumen tidak didukung untuk penyimpanan data Google Workspace. Penelusuran dipanggil menggunakan kredensial akun konsumen (@gmail.com), yang tidak didukung untuk penyimpanan data Google Workspace. Hapus penyimpanan data Google Workspace dari mesin atau gunakan Akun Google terkelola.
403 (Permission Denied) ID pelanggan tidak cocok untuk datastore Penelusuran hanya diizinkan untuk pengguna yang tergabung dalam organisasi yang sama dengan penyimpanan data Google Workspace. Hapus penyimpanan data Google Workspace dari mesin atau hubungi dukungan jika pengguna dan penyimpanan data Google Workspace seharusnya berada di organisasi yang berbeda.
400 (Argumen Tidak Valid) Mesin tidak boleh berisi penyimpanan data Google Drive default dan bersamaan. Anda tidak dapat menghubungkan penyimpanan data yang memiliki semua drive Anda (default) dan penyimpanan data yang memiliki drive bersama tertentu ke aplikasi yang sama. Untuk menghubungkan sumber data Google Drive baru ke aplikasi Anda, batalkan tautan penyimpanan data yang tidak diperlukan terlebih dahulu, lalu tambahkan penyimpanan data baru yang ingin Anda gunakan.

Pemecahan masalah

Jika penelusuran Anda tidak menampilkan file yang Anda cari, hal ini mungkin disebabkan oleh batasan indeks penelusuran berikut:

  • Hanya 1 MB data teks dan pemformatan yang dapat diekstrak dari file Anda agar file tersebut dapat ditelusuri.

  • Untuk sebagian besar jenis file, ukuran file tidak boleh melebihi 10 MB. Berikut adalah pengecualiannya:

    • Jenis file XLSX tidak boleh melebihi 20 MB.
    • Ukuran file PDF tidak boleh lebih dari 30 MB.
    • Ukuran file teks tidak boleh lebih dari 100 MB.
  • Pengenalan karakter optik dalam file PDF dibatasi hingga 80 halaman. PDF yang berukuran lebih dari 50 MB atau 80 halaman tidak diindeks, dan kata kunci yang melebihi batas indeks 1 MB tidak dapat ditelusuri.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk mendapatkan hasil penelusuran setelah aplikasi dan penyimpanan data Anda disiapkan, lihat Mendapatkan hasil penelusuran.

Hubungkan ke Gmail

Gunakan langkah-langkah berikut untuk membuat penyimpanan data yang terhubung ke Gmail di konsol Google Cloud . Setelah menghubungkan penyimpanan data, Anda dapat melampirkan penyimpanan data ke aplikasi penelusuran dan menelusuri data Gmail Anda.

Sebelum memulai

  • Anda harus login ke konsol Google Cloud dengan akun yang sama yang Anda gunakan untuk instance Google Workspace yang ingin Anda hubungkan. Vertex AI Search menggunakan ID pelanggan Google Workspace Anda untuk terhubung ke Gmail.

Batasan

  • Jika Anda menggunakan kontrol keamanan, perhatikan batasannya terkait data di Gmail, seperti yang dibahas dalam tabel berikut:

    Kontrol keamanan Perhatikan hal berikut
    Residensi Data (DRZ) Aplikasi AI hanya menjamin residensi data di Google Cloud. Untuk mengetahui informasi tentang residensi data dan Gmail, lihat panduan dan dokumentasi kepatuhan Google Workspace—misalnya, Memilih region tempat data disimpan dan Kedaulatan digital.
    Kunci enkripsi yang dikelola pelanggan (CMEK) Kunci Anda hanya mengenkripsi data dalam Google Cloud. Kontrol Cloud Key Management Service tidak berlaku untuk data yang disimpan di Gmail.
    Transparansi Akses Transparansi Akses mencatat tindakan yang dilakukan oleh staf Google di Google Cloud project. Anda juga perlu meninjau log Transparansi Akses yang dibuat oleh Google Workspace. Untuk informasi selengkapnya, lihat Peristiwa log Transparansi Akses dalam dokumentasi Bantuan Admin Google Workspace.

Membuat penyimpanan data Gmail

Konsol

Untuk menggunakan konsol agar data Gmail dapat ditelusuri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data stores.

  3. Klik Buat penyimpanan data.

  4. Di halaman Pilih sumber data, pilih Google Gmail.

  5. Pilih region untuk penyimpanan data Anda.

  6. Masukkan nama untuk penyimpanan data Anda.

  7. Klik Buat.

  8. Ikuti langkah-langkah di Membuat aplikasi penelusuran dan lampirkan penyimpanan data yang dibuat ke aplikasi Vertex AI Search.

Pesan error

Tabel berikut menjelaskan pesan error yang mungkin Anda temukan saat bekerja dengan sumber data Google ini, dan mencakup kode error HTTP serta langkah-langkah pemecahan masalah yang disarankan.

Kode error Pesan error Deskripsi Pemecahan masalah
403 (Permission Denied) Penelusuran menggunakan kredensial akun layanan tidak didukung untuk penyimpanan data Google Workspace. Mesin yang ditelusuri memiliki penyimpanan data Google Workspace, dan kredensial yang diteruskan adalah akun layanan. Penelusuran menggunakan kredensial akun layanan di penyimpanan data Google Workspace tidak didukung. Panggil penelusuran menggunakan kredensial pengguna, atau hapus penyimpanan data Google Workspace dari mesin.
403 (Permission Denied) Akun konsumen tidak didukung untuk penyimpanan data Google Workspace. Penelusuran dipanggil menggunakan kredensial akun konsumen (@gmail.com), yang tidak didukung untuk penyimpanan data Google Workspace. Hapus penyimpanan data Google Workspace dari mesin atau gunakan Akun Google terkelola.
403 (Permission Denied) ID pelanggan tidak cocok untuk datastore Penelusuran hanya diizinkan untuk pengguna yang tergabung dalam organisasi yang sama dengan penyimpanan data Google Workspace. Hapus penyimpanan data Google Workspace dari mesin atau hubungi dukungan jika pengguna dan penyimpanan data Google Workspace seharusnya berada di organisasi yang berbeda.
400 (Argumen Tidak Valid) Mesin tidak boleh berisi penyimpanan data Google Drive default dan bersamaan. Anda tidak dapat menghubungkan penyimpanan data yang memiliki semua drive Anda (default) dan penyimpanan data yang memiliki drive bersama tertentu ke aplikasi yang sama. Untuk menghubungkan sumber data Google Drive baru ke aplikasi Anda, batalkan tautan penyimpanan data yang tidak diperlukan terlebih dahulu, lalu tambahkan penyimpanan data baru yang ingin Anda gunakan.

Langkah berikutnya

Menghubungkan ke Google Sites

Untuk menelusuri data dari Google Sites, gunakan langkah-langkah berikut untuk membuat konektor menggunakan konsol Google Cloud .

Sebelum memulai:

  • Anda harus login ke konsol Google Cloud dengan akun yang sama yang Anda gunakan untuk instance Google Workspace yang ingin Anda hubungkan. Vertex AI Search menggunakan ID pelanggan Google Workspace Anda untuk terhubung ke Google Sites.

  • Untuk menerapkan kontrol akses sumber data dan mengamankan data di Aplikasi AI, pastikan Anda telah mengonfigurasi penyedia identitas Anda.

  • Jika Anda menggunakan kontrol keamanan, perhatikan batasannya terkait data di Google Sites, seperti yang dibahas dalam tabel berikut:

    Kontrol keamanan Perhatikan hal berikut
    Residensi Data (DRZ) Aplikasi AI hanya menjamin residensi data di Google Cloud. Untuk mengetahui informasi tentang residensi data dan Google Sites, lihat panduan dan dokumentasi kepatuhan Google Workspace—misalnya, Memilih region tempat data disimpan dan Kedaulatan digital.
    Kunci enkripsi yang dikelola pelanggan (CMEK) Kunci Anda hanya mengenkripsi data dalam Google Cloud. Kontrol Cloud Key Management Service tidak berlaku untuk data yang disimpan di Google Sites.
    Transparansi Akses Transparansi Akses mencatat tindakan yang dilakukan oleh staf Google di Google Cloud project. Anda juga perlu meninjau log Transparansi Akses yang dibuat oleh Google Workspace. Untuk informasi selengkapnya, lihat Peristiwa log Transparansi Akses dalam dokumentasi Bantuan Admin Google Workspace.

Konsol

Untuk menggunakan konsol agar data Google Sites dapat ditelusuri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik New data store.

  4. Di halaman Sumber, pilih Google Sites.

  5. Pilih region untuk penyimpanan data Anda.

  6. Masukkan nama untuk penyimpanan data Anda.

  7. Klik Buat.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Menghubungkan ke Google Kalender

Untuk menelusuri data dari Google Kalender, gunakan langkah-langkah berikut untuk membuat konektor menggunakan konsol Google Cloud .

Sebelum memulai

  • Anda harus login ke konsol Google Cloud dengan akun yang sama yang Anda gunakan untuk instance Google Workspace yang ingin Anda hubungkan. Vertex AI Search menggunakan ID pelanggan Google Workspace Anda untuk terhubung ke Google Kalender.
  • Jika Anda menggunakan kontrol keamanan, perhatikan batasannya terkait data di Google Kalender, seperti yang dibahas dalam tabel berikut:

    Kontrol keamanan Perhatikan hal berikut
    Residensi Data (DRZ) Aplikasi AI hanya menjamin residensi data di Google Cloud. Untuk mengetahui informasi tentang residensi data dan Google Kalender, lihat panduan dan dokumentasi kepatuhan Google Workspace—misalnya, Memilih region tempat data disimpan dan Kedaulatan digital.
    Kunci enkripsi yang dikelola pelanggan (CMEK) Kunci Anda hanya mengenkripsi data dalam Google Cloud. Kontrol Cloud Key Management Service tidak berlaku untuk data yang disimpan di Google Kalender.
    Transparansi Akses Transparansi Akses mencatat tindakan yang dilakukan oleh staf Google di Google Cloud project. Anda juga perlu meninjau log Transparansi Akses yang dibuat oleh Google Workspace. Untuk informasi selengkapnya, lihat Peristiwa log Transparansi Akses dalam dokumentasi Bantuan Admin Google Workspace.

Membuat penyimpanan data Google Kalender

Konsol

Untuk menggunakan konsol agar data Google Kalender dapat dicari, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data stores.

  3. Klik Buat penyimpanan data.

  4. Di halaman Pilih sumber data, pilih Google Kalender.

  5. Pilih region untuk penyimpanan data Anda.

  6. Masukkan nama untuk penyimpanan data Anda.

  7. Klik Buat.

Pesan error

Tabel berikut menjelaskan pesan error yang mungkin Anda temukan saat bekerja dengan sumber data Google ini, dan mencakup kode error HTTP serta langkah-langkah pemecahan masalah yang disarankan.

Kode error Pesan error Deskripsi Pemecahan masalah
403 (Permission Denied) Penelusuran menggunakan kredensial akun layanan tidak didukung untuk penyimpanan data Google Workspace. Mesin yang ditelusuri memiliki penyimpanan data Google Workspace, dan kredensial yang diteruskan adalah akun layanan. Penelusuran menggunakan kredensial akun layanan di penyimpanan data Google Workspace tidak didukung. Panggil penelusuran menggunakan kredensial pengguna, atau hapus penyimpanan data Google Workspace dari mesin.
403 (Permission Denied) Akun konsumen tidak didukung untuk penyimpanan data Google Workspace. Penelusuran dipanggil menggunakan kredensial akun konsumen (@gmail.com), yang tidak didukung untuk penyimpanan data Google Workspace. Hapus penyimpanan data Google Workspace dari mesin atau gunakan Akun Google terkelola.
403 (Permission Denied) ID pelanggan tidak cocok untuk datastore Penelusuran hanya diizinkan untuk pengguna yang tergabung dalam organisasi yang sama dengan penyimpanan data Google Workspace. Hapus penyimpanan data Google Workspace dari mesin atau hubungi dukungan jika pengguna dan penyimpanan data Google Workspace seharusnya berada di organisasi yang berbeda.
400 (Argumen Tidak Valid) Mesin tidak boleh berisi penyimpanan data Google Drive default dan bersamaan. Anda tidak dapat menghubungkan penyimpanan data yang memiliki semua drive Anda (default) dan penyimpanan data yang memiliki drive bersama tertentu ke aplikasi yang sama. Untuk menghubungkan sumber data Google Drive baru ke aplikasi Anda, batalkan tautan penyimpanan data yang tidak diperlukan terlebih dahulu, lalu tambahkan penyimpanan data baru yang ingin Anda gunakan.

Langkah berikutnya

  • Untuk menghubungkan penyimpanan data ke aplikasi, buat aplikasi, lalu pilih penyimpanan data dengan mengikuti petunjuk di bagian Membuat aplikasi penelusuran.

  • Untuk mendapatkan hasil penelusuran setelah aplikasi dan penyimpanan data Anda disiapkan, lihat Mendapatkan hasil penelusuran.

Menghubungkan ke Google Grup

Untuk menelusuri data dari Google Grup, gunakan langkah-langkah berikut untuk membuat konektor menggunakan konsol Google Cloud .

Sebelum memulai:

  • Anda harus login ke konsol Google Cloud dengan akun yang sama yang Anda gunakan untuk instance Google Workspace yang ingin Anda hubungkan. Vertex AI Search menggunakan ID pelanggan Google Workspace Anda untuk terhubung ke Google Grup.

  • Untuk menerapkan kontrol akses sumber data dan mengamankan data di Aplikasi AI, pastikan Anda telah mengonfigurasi penyedia identitas Anda.

  • Jika Anda menggunakan kontrol keamanan, perhatikan batasannya terkait data di Google Grup, seperti yang dibahas dalam tabel berikut:

    Kontrol keamanan Perhatikan hal berikut
    Residensi Data (DRZ) Aplikasi AI hanya menjamin residensi data di Google Cloud. Untuk mengetahui informasi tentang residensi data dan Google Grup, lihat panduan dan dokumentasi kepatuhan Google Workspace—misalnya, Memilih region tempat data disimpan dan Kedaulatan digital.
    Kunci enkripsi yang dikelola pelanggan (CMEK) Kunci Anda hanya mengenkripsi data dalam Google Cloud. Kontrol Cloud Key Management Service tidak berlaku untuk data yang disimpan di Google Grup.
    Transparansi Akses Transparansi Akses mencatat tindakan yang dilakukan oleh staf Google di Google Cloud project. Anda juga perlu meninjau log Transparansi Akses yang dibuat oleh Google Workspace. Untuk informasi selengkapnya, lihat Peristiwa log Transparansi Akses dalam dokumentasi Bantuan Admin Google Workspace.

Konsol

Untuk menggunakan konsol agar data Google Grup dapat ditelusuri, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik New data store.

  4. Di halaman Sumber, pilih Grup Google.

  5. Pilih region untuk penyimpanan data Anda.

  6. Masukkan nama untuk penyimpanan data Anda.

  7. Klik Buat. Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit hingga beberapa jam. Tunggu setidaknya satu jam sebelum menggunakan penyimpanan data untuk penelusuran.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Cloud SQL

Untuk menyerap data dari Cloud SQL, gunakan langkah-langkah berikut untuk menyiapkan akses Cloud SQL, membuat penyimpanan data, dan menyerap data.

Menyiapkan akses bucket penyiapan untuk instance Cloud SQL

Saat menyerap data dari Cloud SQL, data pertama-tama diatur ke bucket Cloud Storage. Ikuti langkah-langkah berikut untuk memberikan akses instance Cloud SQL ke bucket Cloud Storage.

  1. Di konsol Google Cloud , buka halaman SQL.

    SQL

  2. Klik instance Cloud SQL yang akan Anda gunakan sebagai sumber impor.

  3. Salin ID untuk akun layanan instance, yang terlihat seperti alamat email—misalnya, p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com.

  4. Buka halaman IAM & Admin.

    IAM & Admin

  5. Klik Grant access.

  6. Untuk New principals, masukkan ID akun layanan instance dan pilih peran Cloud Storage > Storage Admin.

  7. Klik Simpan.

Berikutnya:

Menyiapkan akses Cloud SQL dari project lain

Untuk memberikan akses Vertex AI Search ke data Cloud SQL yang ada di project lain, ikuti langkah-langkah berikut:

  1. Ganti variabel PROJECT_NUMBER berikut dengan nomor project Vertex AI Search Anda, lalu salin konten blok kode. Berikut adalah ID akun layanan Vertex AI Search Anda:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Buka halaman IAM & Admin.

    IAM & Admin

  3. Beralih ke project Cloud SQL Anda di halaman IAM & Admin lalu klik Grant Access.

  4. Untuk New principals, masukkan ID akun layanan dan pilih peran Cloud SQL > Cloud SQL Viewer.

  5. Klik Simpan.

Selanjutnya, buka Mengimpor data dari Cloud SQL.

Mengimpor data dari Cloud SQL

Konsol

Untuk menggunakan konsol guna menyerap data dari Cloud SQL, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik New data store.

  4. Di halaman Sumber, pilih Cloud SQL.

  5. Tentukan project ID, instance ID, database ID, dan table ID data yang akan Anda impor.

  6. Klik Telusuri dan pilih lokasi Cloud Storage perantara untuk mengekspor data, lalu klik Pilih. Atau, masukkan lokasi langsung di kolom gs://.

  7. Pilih apakah akan mengaktifkan ekspor serverless. Ekspor serverless menimbulkan biaya tambahan. Untuk mengetahui informasi tentang ekspor serverless, lihat Meminimalkan dampak performa ekspor dalam dokumentasi Cloud SQL.

  8. Klik Lanjutkan.

  9. Pilih region untuk penyimpanan data Anda.

  10. Masukkan nama untuk penyimpanan data Anda.

  11. Klik Buat.

  12. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit atau beberapa jam.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan menyerap data dari Cloud SQL, ikuti langkah-langkah berikut:

  1. Buat penyimpanan data.

    curl -X POST \
    -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?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DISPLAY_NAME: nama tampilan penyimpanan data. Hal ini mungkin ditampilkan di konsol Google Cloud .
  2. Mengimpor data dari Cloud SQL.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "cloudSqlSource": {
          "projectId": "SQL_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "gcsStagingDir": "STAGING_DIRECTORY"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Vertex AI Search Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • SQL_PROJECT_ID: ID project Cloud SQL Anda.
    • INSTANCE_ID: ID instance Cloud SQL Anda.
    • DATABASE_ID: ID database Cloud SQL Anda.
    • TABLE_ID: ID tabel Cloud SQL Anda.
    • STAGING_DIRECTORY: optional. Direktori Cloud Storage, misalnya, gs://<your-gcs-bucket>/directory/import_errors.
    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan refresh data inkremental dari Cloud SQL ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan menggantikan dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di Cloud SQL akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# sql_project_id = "YOUR_SQL_PROJECT_ID"
# sql_instance_id = "YOUR_SQL_INSTANCE_ID"
# sql_database_id = "YOUR_SQL_DATABASE_ID"
# sql_table_id = "YOUR_SQL_TABLE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    cloud_sql_source=discoveryengine.CloudSqlSource(
        project_id=sql_project_id,
        instance_id=sql_instance_id,
        database_id=sql_database_id,
        table_id=sql_table_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Spanner

Untuk menyerap data dari Spanner, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan konsol atau API. Google Cloud

Menyiapkan akses Spanner dari project lain

Jika data Spanner Anda berada dalam project yang sama dengan Vertex AI Search, lanjutkan ke Mengimpor data dari Spanner.

Untuk memberikan akses Vertex AI Search ke data Spanner yang ada di project lain, ikuti langkah-langkah berikut:

  1. Ganti variabel PROJECT_NUMBER berikut dengan nomor project Vertex AI Search Anda, lalu salin konten blok kode ini. Berikut adalah ID akun layanan Vertex AI Search Anda:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Buka halaman IAM & Admin.

    IAM & Admin

  3. Beralih ke project Spanner Anda di halaman IAM & Admin, lalu klik Grant Access.

  4. Untuk New principals, masukkan ID akun layanan dan pilih salah satu opsi berikut:

    • Jika Anda tidak akan menggunakan peningkatan data selama impor, pilih peran Cloud Spanner > Cloud Spanner Database Reader.
    • Jika Anda berencana menggunakan peningkatan data selama impor, pilih peran Cloud Spanner > Cloud Spanner Database Admin, atau peran kustom dengan izin Cloud Spanner Database Reader dan spanner.databases.useDataBoost. Untuk mengetahui informasi tentang Data Boost, lihat Ringkasan Data Boost di dokumentasi Spanner.
  5. Klik Simpan.

Selanjutnya, buka Mengimpor data dari Spanner.

Mengimpor data dari Spanner

Konsol

Untuk menggunakan konsol guna menyerap data dari Spanner, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik New data store.

  4. Di halaman Sumber, pilih Cloud Spanner.

  5. Tentukan project ID, instance ID, database ID, dan table ID data yang akan Anda impor.

  6. Pilih apakah akan mengaktifkan Data Boost atau tidak. Untuk mengetahui informasi tentang Data Boost, lihat Ringkasan Data Boost di dokumentasi Spanner.

  7. Klik Lanjutkan.

  8. Pilih region untuk penyimpanan data Anda.

  9. Masukkan nama untuk penyimpanan data Anda.

  10. Klik Buat.

  11. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit atau beberapa jam.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan menyerap data dari Spanner, ikuti langkah-langkah berikut:

  1. Buat penyimpanan data.

    curl -X POST \
    -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?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Vertex AI Search Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DISPLAY_NAME: nama tampilan penyimpanan data. Hal ini mungkin ditampilkan di konsol Google Cloud .
  2. Impor data dari Spanner.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "cloudSpannerSource": {
          "projectId": "SPANNER_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "enableDataBoost": "DATA_BOOST_BOOLEAN"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Vertex AI Search Anda.
    • DATA_STORE_ID: ID penyimpanan data.
    • SPANNER_PROJECT_ID: ID project Spanner Anda.
    • INSTANCE_ID: ID instance Spanner Anda.
    • DATABASE_ID: ID database Spanner Anda.
    • TABLE_ID: ID tabel Spanner Anda.
    • DATA_BOOST_BOOLEAN: optional. Apakah akan mengaktifkan Data Boost. Untuk mengetahui informasi tentang Data Boost, lihat Ringkasan Data Boost dalam dokumentasi Spanner.
    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan refresh data inkremental dari Spanner ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan mengganti dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di Spanner akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen secara otomatis yang tidak lagi Anda perlukan.
    • AUTO_GENERATE_IDS: optional. Menentukan apakah ID dokumen akan dibuat secara otomatis. Jika disetel ke true, ID dokumen dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dibuat mungkin tidak tetap konsisten selama beberapa kali impor. Jika Anda membuat ID secara otomatis di beberapa impor, Google sangat merekomendasikan agar Anda menyetel reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.

    • ID_FIELD: optional. Menentukan kolom mana yang merupakan ID dokumen.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# spanner_project_id = "YOUR_SPANNER_PROJECT_ID"
# spanner_instance_id = "YOUR_SPANNER_INSTANCE_ID"
# spanner_database_id = "YOUR_SPANNER_DATABASE_ID"
# spanner_table_id = "YOUR_SPANNER_TABLE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    spanner_source=discoveryengine.SpannerSource(
        project_id=spanner_project_id,
        instance_id=spanner_instance_id,
        database_id=spanner_database_id,
        table_id=spanner_table_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Firestore

Untuk menyerap data dari Firestore, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan Google Cloud konsol atau API.

Jika data Firestore Anda berada dalam project yang sama dengan Vertex AI Search, buka Mengimpor data dari Firestore.

Jika data Firestore Anda berada di project yang berbeda dengan project Vertex AI Search, buka Menyiapkan akses Firestore.

Menyiapkan akses Firestore dari project lain

Untuk memberikan akses Vertex AI Search ke data Firestore yang ada di project lain, ikuti langkah-langkah berikut:

  1. Ganti variabel PROJECT_NUMBER berikut dengan nomor project Vertex AI Search Anda, lalu salin konten blok kode ini. Berikut adalah ID akun layanan Vertex AI Search Anda:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Buka halaman IAM & Admin.

    IAM & Admin

  3. Beralih ke project Firestore Anda di halaman IAM & Admin lalu klik Grant Access.

  4. Untuk New principals, masukkan ID akun layanan instance dan pilih peran Datastore > Cloud Datastore Import Export Admin.

  5. Klik Simpan.

  6. Beralih kembali ke project Vertex AI Search Anda.

Selanjutnya, buka Mengimpor data dari Firestore.

Mengimpor data dari Firestore

Konsol

Untuk menggunakan konsol guna menyerap data dari Firestore, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Buka halaman Data Stores.

  3. Klik New data store.

  4. Di halaman Source, pilih Firestore.

  5. Tentukan project ID, database ID, dan ID koleksi data yang akan Anda impor.

  6. Klik Lanjutkan.

  7. Pilih region untuk penyimpanan data Anda.

  8. Masukkan nama untuk penyimpanan data Anda.

  9. Klik Buat.

  10. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit atau beberapa jam.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan menyerap data dari Firestore, ikuti langkah-langkah berikut:

  1. Buat penyimpanan data.

    curl -X POST \
    -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?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DISPLAY_NAME: nama tampilan penyimpanan data. Hal ini mungkin ditampilkan di konsol Google Cloud .
  2. Mengimpor data dari Firestore.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "firestoreSource": {
          "projectId": "FIRESTORE_PROJECT_ID",
          "databaseId": "DATABASE_ID",
          "collectionId": "COLLECTION_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Vertex AI Search Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • FIRESTORE_PROJECT_ID: ID project Firestore Anda.
    • DATABASE_ID: ID database Firestore Anda.
    • COLLECTION_ID: ID koleksi Firestore Anda.
    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan refresh data inkremental dari Firestore ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan menggantikan dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di Firestore akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.
    • AUTO_GENERATE_IDS: optional. Menentukan apakah ID dokumen akan dibuat secara otomatis. Jika disetel ke true, ID dokumen dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dibuat mungkin tidak tetap konsisten selama beberapa kali impor. Jika Anda membuat ID secara otomatis di beberapa impor, Google sangat merekomendasikan agar Anda menyetel reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.
    • ID_FIELD: optional. Menentukan kolom mana yang merupakan ID dokumen.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# firestore_project_id = "YOUR_FIRESTORE_PROJECT_ID"
# firestore_database_id = "YOUR_FIRESTORE_DATABASE_ID"
# firestore_collection_id = "YOUR_FIRESTORE_COLLECTION_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    firestore_source=discoveryengine.FirestoreSource(
        project_id=firestore_project_id,
        database_id=firestore_database_id,
        collection_id=firestore_collection_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Bigtable

Untuk menyerap data dari Bigtable, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan API.

Menyiapkan akses Bigtable

Untuk memberikan akses Vertex AI Search ke data Bigtable yang ada di project lain, ikuti langkah-langkah berikut:

  1. Ganti variabel PROJECT_NUMBER berikut dengan nomor project Vertex AI Search Anda, lalu salin konten blok kode ini. Berikut adalah ID akun layanan Vertex AI Search Anda:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Buka halaman IAM & Admin.

    IAM & Admin

  3. Beralih ke project Bigtable Anda di halaman IAM & Admin lalu klik Grant Access.

  4. Untuk New principals, masukkan ID akun layanan instance dan pilih peran Bigtable > Bigtable Reader.

  5. Klik Simpan.

  6. Beralih kembali ke project Vertex AI Search Anda.

Selanjutnya, buka Mengimpor data dari Bigtable.

Mengimpor data dari Bigtable

REST

Untuk menggunakan command line guna membuat penyimpanan data dan menyerap data dari Bigtable, ikuti langkah-langkah berikut:

  1. Buat penyimpanan data.

    curl -X POST \
    -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?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DISPLAY_NAME: nama tampilan penyimpanan data. Hal ini mungkin ditampilkan di konsol Google Cloud .
  2. Impor data dari Bigtable.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "bigtableSource ": {
          "projectId": "BIGTABLE_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "tableId": "TABLE_ID",
          "bigtableOptions": {
            "keyFieldName": "KEY_FIELD_NAME",
            "families": {
              "key": "KEY",
              "value": {
                "fieldName": "FIELD_NAME",
                "encoding": "ENCODING",
                "type": "TYPE",
                "columns": [
                  {
                    "qualifier": "QUALIFIER",
                    "fieldName": "FIELD_NAME",
                    "encoding": "COLUMN_ENCODING",
                    "type": "COLUMN_VALUES_TYPE"
                  }
                ]
              }
             }
             ...
          }
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Vertex AI Search Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • BIGTABLE_PROJECT_ID: ID project Bigtable Anda.
    • INSTANCE_ID: ID instance Bigtable Anda.
    • TABLE_ID: ID tabel Bigtable Anda.
    • KEY_FIELD_NAME: opsional, tetapi direkomendasikan. Nama kolom yang akan digunakan untuk nilai kunci baris setelah melakukan penyerapan ke Vertex AI Search.
    • KEY: wajib diisi. Nilai string untuk kunci grup kolom.
    • ENCODING: optional. Mode encoding nilai saat jenisnya bukan STRING.Mode ini dapat diganti untuk kolom tertentu dengan mencantumkan kolom tersebut di columns dan menentukan encoding untuknya.
    • COLUMN_TYPE: optional. Jenis nilai dalam grup kolom ini.
    • QUALIFIER: wajib diisi. Penentu kolom.
    • FIELD_NAME: opsional, tetapi direkomendasikan. Nama kolom yang akan digunakan untuk kolom ini setelah di-ingest ke Vertex AI Search.
    • COLUMN_ENCODING: optional. Mode encoding nilai untuk kolom tertentu saat jenisnya bukan STRING.
    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan refresh inkremental data dari Bigtable ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan menggantikan dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di Bigtable dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.
    • AUTO_GENERATE_IDS: optional. Menentukan apakah ID dokumen akan dibuat secara otomatis. Jika disetel ke true, ID dokumen dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dibuat mungkin tidak tetap konsisten selama beberapa kali impor. Jika Anda membuat ID secara otomatis di beberapa impor, Google sangat merekomendasikan agar Anda menyetel reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika bigquerySource.dataSchema disetel ke custom. Jika tidak, error INVALID_ARGUMENT akan ditampilkan. Jika Anda tidak menentukan autoGenerateIds atau menyetelnya ke false, Anda harus menentukan idField. Jika tidak, dokumen akan gagal diimpor.

    • ID_FIELD: optional. Menentukan kolom mana yang merupakan ID dokumen.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigtable_project_id = "YOUR_BIGTABLE_PROJECT_ID"
# bigtable_instance_id = "YOUR_BIGTABLE_INSTANCE_ID"
# bigtable_table_id = "YOUR_BIGTABLE_TABLE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

bigtable_options = discoveryengine.BigtableOptions(
    families={
        "family_name_1": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.STRING,
            encoding=discoveryengine.BigtableOptions.Encoding.TEXT,
            columns=[
                discoveryengine.BigtableOptions.BigtableColumn(
                    qualifier="qualifier_1".encode("utf-8"),
                    field_name="field_name_1",
                ),
            ],
        ),
        "family_name_2": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.INTEGER,
            encoding=discoveryengine.BigtableOptions.Encoding.BINARY,
        ),
    }
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigtable_source=discoveryengine.BigtableSource(
        project_id=bigtable_project_id,
        instance_id=bigtable_instance_id,
        table_id=bigtable_table_id,
        bigtable_options=bigtable_options,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengimpor dari AlloyDB untuk PostgreSQL

Untuk menyerap data dari AlloyDB for PostgreSQL, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan konsol atau API. Google Cloud

Jika data AlloyDB untuk PostgreSQL Anda berada di project yang sama dengan project Vertex AI Search, buka Mengimpor data dari AlloyDB untuk PostgreSQL.

Jika data AlloyDB untuk PostgreSQL Anda berada di project yang berbeda dengan project Vertex AI Search Anda, buka Menyiapkan akses AlloyDB untuk PostgreSQL.

Menyiapkan akses AlloyDB untuk PostgreSQL dari project lain

Untuk memberikan akses Vertex AI Search ke data AlloyDB untuk PostgreSQL yang ada di project lain, ikuti langkah-langkah berikut:

  1. Ganti variabel PROJECT_NUMBER berikut dengan nomor project Vertex AI Search Anda, lalu salin konten blok kode ini. Berikut adalah ID akun layanan Vertex AI Search Anda:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Beralih ke Google Cloud project tempat data AlloyDB for PostgreSQL Anda berada.

  3. Buka halaman IAM.

    IAM

  4. Klik Grant Access.

  5. Untuk New principals, masukkan ID akun layanan Vertex AI Search dan pilih peran Cloud AlloyDB > Cloud AlloyDB Admin.

  6. Klik Simpan.

  7. Beralih kembali ke project Vertex AI Search Anda.

Selanjutnya, buka Mengimpor data dari AlloyDB untuk PostgreSQL.

Mengimpor data dari AlloyDB untuk PostgreSQL

Konsol

Untuk menggunakan konsol guna menyerap data dari AlloyDB untuk PostgreSQL, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman AI Applications.

    Aplikasi AI

  2. Di menu navigasi, klik Data Stores.

  3. Klik Create data store.

  4. Di halaman Sumber, pilih AlloyDB.

  5. Tentukan project ID, ID lokasi, ID cluster, ID database, dan ID tabel data yang ingin Anda impor.

  6. Klik Lanjutkan.

  7. Pilih region untuk penyimpanan data Anda.

  8. Masukkan nama untuk penyimpanan data Anda.

  9. Klik Buat.

  10. Untuk memeriksa status penyerapan, buka halaman Data Stores dan klik nama penyimpanan data Anda untuk melihat detailnya di halaman Data. Saat kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, penyerapan dapat memerlukan waktu beberapa menit atau beberapa jam.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan menyerap data dari AlloyDB untuk PostgreSQL, ikuti langkah-langkah berikut:

  1. Buat penyimpanan data.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DISPLAY_NAME: nama tampilan penyimpanan data. Hal ini mungkin ditampilkan di konsol Google Cloud .
  2. Mengimpor data dari AlloyDB untuk PostgreSQL.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "alloydbSource": {
          "projectId": "ALLOYDB_PROJECT_ID",
          "locationId": "LOCATION_ID",
          "clusterId": "CLUSTER_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Vertex AI Search Anda.
    • DATA_STORE_ID: ID penyimpanan data. ID hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • ALLOYDB_PROJECT_ID: ID project AlloyDB untuk PostgreSQL Anda.
    • LOCATION_ID: ID lokasi AlloyDB untuk PostgreSQL Anda.
    • CLUSTER_ID: ID cluster AlloyDB untuk PostgreSQL Anda.
    • DATABASE_ID: ID database AlloyDB untuk PostgreSQL Anda.
    • TABLE_ID: ID tabel AlloyDB untuk PostgreSQL Anda.
    • RECONCILIATION_MODE: optional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan refresh data inkremental dari AlloyDB untuk PostgreSQL ke penyimpanan data Anda. Operasi ini melakukan operasi upsert, yang menambahkan dokumen baru dan menggantikan dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh dokumen di penyimpanan data Anda. Dengan kata lain, dokumen baru dan yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di AlloyDB untuk PostgreSQL akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.
    • AUTO_GENERATE_IDS: optional. Menentukan apakah ID dokumen akan dibuat secara otomatis. Jika disetel ke true, ID dokumen dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dibuat mungkin tidak tetap konsisten selama beberapa kali impor. Jika Anda membuat ID secara otomatis di beberapa impor, Google sangat merekomendasikan agar Anda menyetel reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.
    • ID_FIELD: optional. Menentukan kolom mana yang merupakan ID dokumen.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

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

Membuat penyimpanan data


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Mengimpor dokumen

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# alloy_db_project_id = "YOUR_ALLOY_DB_PROJECT_ID"
# alloy_db_location_id = "YOUR_ALLOY_DB_LOCATION_ID"
# alloy_db_cluster_id = "YOUR_ALLOY_DB_CLUSTER_ID"
# alloy_db_database_id = "YOUR_ALLOY_DB_DATABASE_ID"
# alloy_db_table_id = "YOUR_ALLOY_DB_TABLE_ID"

# For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    alloy_db_source=discoveryengine.AlloyDbSource(
        project_id=alloy_db_project_id,
        location_id=alloy_db_location_id,
        cluster_id=alloy_db_cluster_id,
        database_id=alloy_db_database_id,
        table_id=alloy_db_table_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Mengupload data JSON terstruktur dengan API

Untuk mengupload dokumen atau objek JSON secara langsung menggunakan API, ikuti langkah-langkah berikut.

Sebelum mengimpor data Anda, Siapkan data untuk penyerapan.

REST

Untuk menggunakan command line guna membuat penyimpanan data dan mengimpor data JSON terstruktur, ikuti langkah-langkah berikut.

  1. Buat penyimpanan data.

    curl -X POST \
    -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?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data Vertex AI Search yang ingin Anda buat.
  2. Mengimpor data terstruktur.

    Ada beberapa pendekatan yang dapat Anda gunakan untuk mengupload data, termasuk:

    • Upload dokumen JSON.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      

      Ganti kode berikut:

      • DOCUMENT_ID: ID unik untuk dokumen. ID ini dapat memiliki panjang hingga 63 karakter dan hanya berisi huruf kecil, angka, garis bawah, dan tanda hubung.
      • JSON_DOCUMENT_STRING: dokumen JSON sebagai satu string. Nilai ini harus sesuai dengan skema JSON yang Anda berikan di langkah sebelumnya—misalnya:

        { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
        
    • Upload objek JSON.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

      Ganti JSON_DOCUMENT_OBJECT dengan dokumen JSON sebagai objek JSON. Nilai ini harus sesuai dengan skema JSON yang Anda berikan di langkah sebelumnya—misalnya:

      ```json
      {
        "title": "test title",
        "categories": [
          "cat_1",
          "cat_2"
        ],
        "uri": "test uri"
      }
      ```
      
    • Perbarui dengan dokumen JSON.

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      
    • Perbarui dengan objek JSON.

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

Langkah berikutnya

  • Untuk melampirkan penyimpanan data ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan penyimpanan data disiapkan, lihat Mendapatkan hasil penelusuran.

Memecahkan masalah penyerapan data

Jika Anda mengalami masalah terkait penyerapan data, tinjau tips berikut:

  • Jika Anda menggunakan kunci enkripsi yang dikelola pelanggan dan impor data gagal (dengan pesan error The caller does not have permission), pastikan peran IAM Pengenkripsi/Pendekripsi CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci telah diberikan kepada agen layanan Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Sebelum memulai di "Kunci enkripsi yang dikelola pelanggan".

  • Jika Anda menggunakan pengindeksan situs tingkat lanjut dan Penggunaan dokumen untuk penyimpanan data jauh lebih rendah dari yang Anda harapkan, tinjau pola URL yang Anda tentukan untuk pengindeksan dan pastikan pola URL yang ditentukan mencakup halaman yang ingin Anda indeks dan perluas jika diperlukan. Misalnya, jika Anda menggunakan *.en.example.com/*, Anda mungkin perlu menambahkan *.example.com/* ke situs yang ingin diindeks.

Membuat penyimpanan data menggunakan Terraform

Anda dapat menggunakan Terraform untuk membuat penyimpanan data kosong. Setelah penyimpanan data kosong dibuat, Anda dapat memasukkan data ke dalam penyimpanan data menggunakan perintah Google Cloud konsol atau API.

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Untuk membuat penyimpanan data kosong menggunakan Terraform, lihat google_discovery_engine_data_store.