Membuat penyimpanan data penelusuran

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

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

Batasan

Jika memiliki kebijakan organisasi CMEK, Anda harus membuat penyimpanan data baru menggunakan API, bukan konsol Google Cloud. Pembuatan penyimpanan data baru menggunakan Konsol Google Cloud akan gagal jika Anda mengaktifkan kebijakan organisasi CMEK. Untuk mengetahui informasi selengkapnya tentang dukungan CMEK untuk Vertex AI Search, lihat Kunci enkripsi yang dikelola pelanggan.

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 melampirkan penyimpanan data tersebut ke aplikasi yang mengaktifkan fitur Enterprise. Anda dapat mengaktifkan Edisi Perusahaan untuk aplikasi saat Anda membuatnya. Hal ini akan menimbulkan biaya tambahan. Lihat Buat aplikasi penelusuran dan Tentang fitur lanjutan.

Konsol

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

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Pembuat Agen

  2. Di menu navigasi, klik Penyimpanan Data.

  3. Klik Buat penyimpanan data.

  4. Di halaman Sumber, pilih Konten Situs.

  5. Pilih apakah akan mengaktifkan Pengindeksan situs web 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 akan dikenai biaya tambahan, dan mengharuskan Anda memverifikasi kepemilikan domain untuk situs apa pun yang Anda indeks. Untuk mengetahui informasi selengkapnya, lihat Pengindeksan situs lanjutan dan Harga.

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

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

    Untuk melihat jumlah pola URL yang dapat disertakan atau dikecualikan, lihat Data situs.

  8. Klik Lanjutkan.

  9. Pilih lokasi untuk penyimpanan data Anda. Pengindeksan situs lanjutan harus diaktifkan untuk memilih lokasi.

  10. Masukkan nama untuk penyimpanan data Anda.

  11. Klik Create. Vertex AI Search menyediakan penyimpanan data menampilkan penyimpanan data Anda di halaman Penyimpanan Data.

  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 memverifikasi domain di penyimpanan data.
    • Jika Anda mengalami kekurangan kuota (jumlah laman di situs web yang yang Anda tentukan melebihi "Jumlah dokumen per project" kuota untuk project Anda), peringatan tambahan muncul dan meminta Anda untuk mengupgrade kuota.
  13. Guna 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 and Admin dari Konsol Google Cloud akan muncul.
    2. Ikuti petunjuk di Meminta batas kuota yang lebih tinggi dalam dokumentasi Google Cloud. Tujuan kuota yang ditingkatkan adalah Jumlah dokumen di Discovery Engine API tambahan.
    3. Setelah mengirimkan permintaan untuk batas kuota yang lebih tinggi, kembali ke halaman Agent Builder, 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. Saat kolom Status untuk URL menampilkan Diindeks, fitur pengindeksan situs lanjutan akan tersedia untuk pola URL atau URL tersebut.

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

Python

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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

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

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan datastore disetel, lihat Mendapatkan hasil penelusuran.

Impor dari 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 secara manual memuat ulang data.

  • Penyerapan berkala: Anda mengimpor data dari satu atau beberapa BigQuery tabel, dan menetapkan frekuensi sinkronisasi yang menentukan seberapa sering data telah diperbarui dengan data terbaru dari BigQuery {i>dataset<i} aslinya.

Tabel berikut membandingkan dua cara untuk mengimpor BigQuery ke dalam 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 boleh di-refresh secara manual.
Vertex AI Search membuat satu penyimpanan data dari satu penyimpanan tabel di BigQuery. Vertex AI Search membuat konektor data untuk set data BigQuery dan penyimpanan data (disebut penyimpanan data entity) untuk setiap tabel yang ditentukan. Untuk setiap data konektor, tabel tersebut harus memiliki jenis data yang sama (misalnya, terstruktur) dan berada di set data BigQuery yang sama.
Data dari beberapa tabel dapat digabungkan dalam satu penyimpanan data dengan terlebih dahulu menyerap data dari satu tabel, lalu data lainnya dari sumber lain atau tabel BigQuery. Karena impor data manual tidak didukung, data dalam penyimpanan data entity 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 Konsol Google Cloud atau API. Anda harus menggunakan konsol untuk membuat konektor data dan entitasnya penyimpanan data.
Sesuai dengan CMEK. Tidak mematuhi CMEK.

Mengimpor sekali dari BigQuery

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

Sebelum mengimpor data, tinjau artikel 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 Agent Builder.

    Agent Builder

  2. Buka halaman Penyimpanan Data.

  3. Klik New data store.

  4. Di halaman Source, pilih BigQuery.

  5. Pilih jenis data yang Anda impor.

  6. Klik Satu kali.

  7. Di kolom BigQuery path, klik Browse, pilih tabel yang telah siap untuk penyerapan, lalu klik Pilih. Atau, masukkan lokasi tabel langsung di jalur BigQuery kolom tersebut.

  8. Klik Lanjutkan.

  9. Jika Anda melakukan impor satu kali data terstruktur:

    1. Petakan kolom ke properti utama.

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

      Untuk informasi selengkapnya, lihat Tentang deteksi dan pengeditan otomatis.

    3. Klik Lanjutkan.

  10. Pilih region untuk penyimpanan data Anda.

  11. Masukkan nama untuk penyimpanan data Anda.

  12. Klik Create.

  13. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Saat kolom status pada tab Aktivitas berubah dari Dalam proses ke Impor selesai, penyerapan selesai.

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

REST

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

  1. Membuat 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 project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil huruf, 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 konfigurasikan 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 project Google Cloud 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 dalam PROJECT_ID, Anda harus memberikan akun layanan service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com "BigQuery Data Viewer" izin untuk BigQuery. Misalnya, jika Anda mengimpor tabel BigQuery dari project sumber "123" dapat project tujuan "456", beri service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com izin akses untuk tabel BigQuery di bawah proyek "123".
    • DATA_SCHEMA: Opsional. 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 ditransfer. Anda dapat menentukan sendiri ID setiap dokumen, sambil membungkus semua data dalam string jsonData.
      • custom: Semua tabel BigQuery skema akan diterima, dan Vertex AI Search akan otomatis menghasilkan ID untuk setiap dokumen yang diimpor.
    • ERROR_DIRECTORY: Opsional. Direktori Cloud Storage informasi error tentang impor—misalnya, gs://<your-gcs-bucket>/directory/import_errors. Google merekomendasikan membiarkan kolom ini kosong agar Vertex AI Search membuat direktori sementara secara otomatis.
    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan pembaruan data inkremental dari BigQuery ke penyimpanan data Anda. Ini melakukan operasi pembaruan dan penyisipan, yang menambahkan dokumen 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, baru dan diperbarui dokumen ditambahkan ke penyimpanan data Anda, dan dokumen yang di BigQuery dihapus dari penyimpanan data Anda. Tujuan Mode FULL berguna jika Anda ingin menghapus dokumen secara otomatis yang tidak lagi Anda perlukan.
    • AUTO_GENERATE_IDS: Opsional. Menentukan apakah akan membuat ID dokumen secara otomatis. Jika ditetapkan ke true, ID dokumen akan dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dihasilkan mungkin tidak tetap konsisten di beberapa impor. Jika Anda membuat ID secara otomatis dalam beberapa impor, Google sangat merekomendasikan setelan reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika bigquerySource.dataSchema ditetapkan ke custom. Jika tidak, error INVALID_ARGUMENT adalah dikembalikan. Jika tidak menentukan autoGenerateIds atau menetapkannya ke false, Anda harus menentukan idField. Jika tidak, dokumen akan gagal diimpor.

    • ID_FIELD: Opsional. 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 disetel ke false atau belum ditetapkan. Jika tidak, error INVALID_ARGUMENT akan ditampilkan.

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

C#

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API C# Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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,
            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 = "",
        };
        // 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 Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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 informasi selengkapnya, lihat Vertex AI Agent Builder Java API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Untuk informasi selengkapnya, lihat Vertex AI Agent Builder Node.js API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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.
 */
/**
 *  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'

// 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 Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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 informasi selengkapnya, lihat Vertex AI Agent Builder Ruby API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 artikel Menyiapkan data untuk penyerapan.

Prosedur berikut menjelaskan cara membuat konektor data yang mengaitkan set data BigQuery dengan data Vertex AI Search dan cara menentukan tabel pada {i>dataset<i} untuk setiap penyimpanan data yang Anda inginkan buat. Penyimpanan data yang merupakan turunan dari konektor data disebut entity penyimpanan data.

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

Konsol

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

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Agent Builder

  2. Di menu navigasi, klik Penyimpanan Data.

  3. Klik Buat penyimpanan data.

  4. Di halaman Source, pilih BigQuery.

  5. Pilih jenis data yang akan diimpor.

  6. Klik Periodik.

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

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

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

  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 konektor data Anda, lalu klik Create.

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

  13. Untuk memeriksa status penyerapan Anda, buka halaman Penyimpanan Data lalu klik nama konektor data Anda untuk melihat detailnya di Data-nya halaman > Tab Aktivitas penyerapan data. Saat kolom status di Tab Aktivitas berubah dari Dalam proses menjadi berhasil, yang pertama penyerapan selesai.

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

Setelah Anda menyiapkan sumber data dan mengimpor data untuk pertama kalinya, penyimpanan data menyinkronkan data dari sumber tersebut dengan frekuensi yang Anda pilih selama penyiapan. Sekitar satu jam setelah konektor data dibuat, sinkronisasi pertama akan terjadi. Sinkronisasi berikutnya kemudian 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 Anda setelah aplikasi dan data store Anda menyiapkan, melihat Mendapatkan hasil penelusuran.

Impor 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 penyimpanan data. Data di penyimpanan data tidak akan 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 yang dapat Anda gunakan untuk 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 boleh di-refresh secara manual.
Vertex AI Search membuat satu penyimpanan data dari satu folder atau file di Cloud Storage. Vertex AI Search membuat konektor data, dan menghubungkan penyimpanan data (disebut penyimpanan data entity) dengannya untuk file atau folder yang ditentukan. Setiap konektor data Cloud Storage dapat memiliki satu penyimpanan data entitas.
Data dari beberapa file, folder, dan bucket dapat digabungkan dalam satu penyimpanan data dengan terlebih dahulu menyerap data dari satu lokasi Cloud Storage, lalu data lainnya dari lokasi lain. Karena impor data manual tidak didukung, data dalam entity penyimpanan data 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 Konsol Google Cloud atau API. Anda harus menggunakan konsol untuk membuat konektor data dan entitasnya penyimpanan data.
Mematuhi kebijakan CMEK. Tidak mematuhi CMEK.

Mengimpor sekali dari Cloud Storage

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

Sebelum mengimpor data, tinjau artikel Menyiapkan data untuk penyerapan.

Konsol

Agar dapat menggunakan konsol untuk menyerap data dari bucket Cloud Storage, ikuti langkah-langkah berikut langkah:

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Pembuat Agen

  2. Buka halaman Penyimpanan Data.

  3. Klik New data store.

  4. Di halaman Source, pilih Cloud Storage.

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

  6. Klik Browse dan pilih data yang telah Anda siapkan untuk ditransfer, lalu klik Select. Atau, masukkan lokasi langsung di kolom gs://.

  7. Pilih jenis data yang Anda impor.

  8. Klik Lanjutkan.

  9. Jika Anda melakukan impor satu kali data terstruktur:

    1. Petakan kolom ke properti utama.

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

      Untuk informasi selengkapnya, lihat Tentang deteksi otomatis dan edit.

    3. Klik Lanjutkan.

  10. Pilih region untuk penyimpanan data Anda.

  11. Masukkan nama untuk penyimpanan data Anda.

  12. Opsional: Jika memilih dokumen tidak terstruktur, Anda dapat memilih opsi penguraian dan pembagian untuk dokumen Anda. Untuk membandingkan parser, lihat Mengurai dokumen. Untuk informasi tentang pengelompokan, lihat Membuat dokumen bagian untuk RAG.

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

    Untuk memilih parser, luaskan Document processing options dan tentukan opsi parser yang ingin Anda gunakan.

  13. Klik Create.

  14. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Saat kolom status pada tab Aktivitas berubah dari Dalam proses ke Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, proses transfer 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. Membuat 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"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Ganti kode berikut:

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

    Opsional: Untuk mengonfigurasi penguraian dokumen atau mengaktifkan pengelompokan dokumen untuk RAG, tentukan objek documentProcessingConfig dan sertakan dalam permintaan pembuatan penyimpanan data Anda. Mengonfigurasi Parser OCR untuk PDF direkomendasikan jika Anda menyerap PDF hasil pemindaian. 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 project Google Cloud 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 untuk data tidak terstruktur dengan metadata, contoh pola file input adalah gs://<your-gcs-bucket>/directory/object.jsondan contoh pola yang cocok dengan satu atau lebih 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 menjadi dokumen.

      Jika <your-gcs-bucket> tidak berada di bawah PROJECT_ID, Anda harus memberi akun layanan service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com "Storage Penampil Objek" izin 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: Opsional. Nilainya adalah document, custom, csv, dan content. Defaultnya adalah document.

      • document: Mengupload 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: Mengupload JSON untuk dokumen terstruktur. Datanya diatur berdasarkan skema. Anda dapat menentukan skema; jika tidak, maka akan terdeteksi secara otomatis. Anda dapat menempatkan string JSON dari dokumen dalam format yang konsisten langsung di setiap baris, dan Vertex AI Search otomatis menghasilkan 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 asalkan file yang cocok tidak melebihi batas 100 ribu file.

      • csv: Sertakan baris header dalam file CSV Anda, di mana setiap {i>header <i}di petakan ke sebuah {i>field<i} dokumen. Tentukan jalur ke file CSV menggunakan kolom inputUris.

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

    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan pembaruan data inkremental dari Cloud Storage ke penyimpanan data Anda. Tindakan ini akan 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 akan 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: Opsional. Menentukan apakah akan membuat ID dokumen secara otomatis. Jika ditetapkan ke true, ID dokumen akan dibuat berdasarkan hash payload. Perhatikan bahwa menghasilkan ID dokumen mungkin tidak tetap konsisten pada beberapa impor. Jika Anda membuat ID secara otomatis dalam beberapa impor, Google sangat merekomendasikan setelan reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika gcsSource.dataSchema ditetapkan ke custom atau csv. Jika tidak, error INVALID_ARGUMENT adalah dikembalikan. Jika tidak menentukan autoGenerateIds atau menetapkannya ke false, Anda harus menentukan idField. Jika tidak, dokumen akan gagal impor.

    • ID_FIELD: Opsional. Menentukan {i>field<i} mana yang 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". Hal 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 disetel ke false atau tidak ditentukan. Jika tidak, error INVALID_ARGUMENT akan ditampilkan.

      Perhatikan bahwa nilai kolom JSON Cloud Storage harus berjenis string, harus antara 1-63 karakter, dan harus sesuai dengan RFC-1034. Jika tidak, dokumen 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 ke RFC-1034. Jika tidak, dokumen gagal diimpor.

C#

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API C# Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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,
            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 = "",
        };
        // 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 informasi selengkapnya, lihat Vertex AI Agent Builder Go API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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 informasi selengkapnya, lihat Vertex AI Agent Builder Java API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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.
 */
/**
 *  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'

// 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 informasi selengkapnya, lihat Vertex AI Agent Builder Python API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 informasi selengkapnya, lihat Vertex AI Agent Builder Ruby API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 artikel 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 entity. Anda dapat menentukan sinkronisasi setiap hari, setiap tiga hari, atau setiap lima hari.

Konsol

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Agent Builder

  2. Buka halaman Penyimpanan Data.

  3. Klik Create data store.

  4. Di halaman Source, pilih Cloud Storage.

  5. Pilih jenis data yang akan diimpor.

  6. Klik Periodik.

  7. Pilih Frekuensi sinkronisasi, seberapa sering Anda ingin Konektor Vertex AI Search untuk disinkronkan dengan Cloud Storage lokasi HTTP/HTTPS. Anda dapat mengubah frekuensinya nanti.

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

  9. Klik Browse dan pilih data yang telah Anda siapkan untuk ditransfer, lalu klik Select. Atau, masukkan lokasi secara 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 penguraian dan berbagai opsi pemotongan untuk dokumen Anda. Untuk membandingkan parser, lihat Menguraikan dokumen. Untuk informasi tentang pemotongan, lihat dokumen Memotong untuk RAG.

    Parser OCR dan parser tata letak dapat dikenai biaya tambahan. Lihat Dokumen Harga fitur AI.

    Untuk memilih parser, luaskan Document processing options dan tentukan opsi parser yang ingin Anda gunakan.

  14. Klik Create.

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

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

    Tab Aktivitas penyerapan data. Ketika kolom status di Data tab aktivitas penyerapan berubah dari Dalam proses menjadi berhasil, penyerapan pertama selesai.

    Bergantung pada ukuran data Anda, proses transfer 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 kemudian terjadi sekitar 24 jam, 72 jam, atau 120 jam kemudian.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data Anda ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda mengikuti langkah-langkah dalam Buat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan datastore disetel, lihat Mendapatkan hasil penelusuran.

Sinkronkan dari Google Drive

Untuk menyinkronkan data dari Google Drive, gunakan langkah-langkah berikut untuk membuat penyimpanan data dan menyerap data menggunakan konsol Google Cloud.

Data dari Google Drive terus disinkronkan ke Vertex AI Search setelah Anda membuat penyimpanan data.

Sebelum memulai:

  • Anda harus login ke Konsol Google Cloud dengan akun yang sama dengan yang digunakan untuk instance Google Drive yang ingin dihubungkan. Vertex AI Search menggunakan ID pelanggan Google Workspace Anda untuk terhubung ke Google Drive.

  • Menyiapkan kontrol akses untuk Google Drive. Untuk mengetahui informasi tentang cara menyiapkan kontrol akses, lihat Menggunakan kontrol akses sumber data.

Konsol

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

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Agent Builder

  2. Buka halaman Penyimpanan Data.

  3. Klik Penyimpanan data baru.

  4. Di halaman Source, pilih Google Drive.

  5. Pilih region untuk penyimpanan data Anda.

  6. Masukkan nama untuk penyimpanan data Anda.

  7. Klik Create. Tergantung pada ukuran data Anda, penyerapan dapat mengambil beberapa menit hingga beberapa jam. Tunggu setidaknya satu jam sebelum menggunakan penyimpanan data untuk pencarian.

Langkah berikutnya

  • Untuk melampirkan penyimpanan data Anda ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda mengikuti langkah-langkah dalam Buat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan datastore disetel, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Cloud SQL

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

Menyiapkan akses bucket staging untuk instance Cloud SQL

Saat menyerap data dari Cloud SQL, data akan diproses terlebih dahulu ke bucket Cloud Storage. Ikuti langkah-langkah berikut untuk memberikan Cloud SQL akses instance ke bucket Cloud Storage.

  1. Di konsol Google Cloud, buka halaman SQL.

    SQL

  2. Klik instance Cloud SQL yang ingin Anda impor.

  3. Salin ID untuk akun layanan instance, yang terlihat seperti alamat email Anda—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 memberi Vertex AI Search akses ke data Cloud SQL yang ada di project lain, ikuti langkah-langkah berikut:

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

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

    IAM & Admin

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

  4. Untuk New principals, masukkan ID untuk akun layanan dan pilih tombol Cloud SQL > Peran 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 Agent Builder.

    Pembuat Agen

  2. Buka halaman Penyimpanan Data.

  3. Klik Penyimpanan data baru.

  4. Di halaman Source, pilih Cloud SQL.

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

  6. Klik Browse, lalu pilih lokasi Cloud Storage perantara untuk untuk mengekspor data, lalu klik Pilih. Atau, masukkan lokasi secara 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 Create.

  12. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Saat kolom status pada tab Aktivitas berubah dari Dalam proses ke Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, proses transfer 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 dapat 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 Cloud SQL Anda proyek.
    • INSTANCE_ID: ID instance Cloud SQL Anda.
    • DATABASE_ID: ID database Cloud SQL Anda.
    • TABLE_ID: ID tabel Cloud SQL Anda.
    • STAGING_DIRECTORY: Opsional. {i>Cloud Storage<i} direktori—misalnya, gs://<your-gcs-bucket>/directory/import_errors.
    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL menyebabkan pembaruan data inkremental dari Cloud SQL ke penyimpanan data. Tindakan ini akan 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 pada dokumen dalam data Anda Anda. Dengan kata lain, dokumen baru dan yang diperbarui akan ditambahkan ke data Anda disimpan, 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 Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 Anda ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda mengikuti langkah-langkah dalam Buat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan datastore disetel, 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 Google Cloud atau API.

Menyiapkan akses Spanner dari project lain

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

Untuk memberi Vertex AI Search akses ke data Spanner yang di project yang berbeda, ikuti langkah-langkah berikut:

  1. Ganti variabel PROJECT_NUMBER berikut dengan nomor project Vertex AI Search Anda, lalu salin konten blok kode ini. Ini 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. Beralihlah ke project Spanner Anda di halaman IAM & Admin, lalu klik Grant Access.

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

    • Jika Anda tidak akan menggunakan peningkatan data selama impor, pilih Cloud Spanner > Peran Cloud Spanner Database Reader.
    • Jika Anda berencana menggunakan peningkatan data selama impor, pilih Cloud Spanner > peran Cloud Spanner Database Admin, atau peran khusus dengan izin Pembaca Database Cloud Spanner dan spanner.databases.useDataBoost. Untuk 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 Agent Builder.

    Pembuat Agen

  2. Buka halaman Penyimpanan Data.

  3. Klik Penyimpanan data baru.

  4. Di halaman Source, pilih Cloud Spanner.

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

  6. Pilih apakah akan mengaktifkan Peningkatan Data. Untuk informasi tentang Peningkatan Data, lihat Ringkasan Peningkatan Data di dokumentasi Spanner.

  7. Klik Lanjutkan.

  8. Pilih region untuk penyimpanan data Anda.

  9. Masukkan nama untuk penyimpanan data Anda.

  10. Klik Create.

  11. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Saat kolom status pada tab Aktivitas berubah dari Dalam proses ke Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, proses transfer 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. Membuat 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 dapat hanya 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 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 Spanner proyek.
    • INSTANCE_ID: ID instance Spanner Anda.
    • DATABASE_ID: ID database Spanner Anda.
    • TABLE_ID: ID tabel Spanner Anda.
    • DATA_BOOST_BOOLEAN: Opsional. Apakah akan mengaktifkan Peningkatan Data. Untuk informasi tentang Data Boost, lihat Ringkasan Data Boost dalam dokumentasi Spanner.
    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL akan menyebabkan pembaruan data inkremental dari Spanner ke penyimpanan data Anda. Ini melakukan pembaruan dan penyisipan operasi yang menambahkan dokumen baru dan mengganti dokumen yang ada dengan dokumen yang diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh atas dokumen di penyimpanan data Anda. Dengan kata lain, {i>new<i} dan dokumen yang diperbarui ditambahkan ke penyimpanan data Anda, dan dokumen yang tidak ada di Spanner akan dihapus dari data store Anda. Tujuan Mode FULL berguna jika Anda ingin menghapus dokumen secara otomatis yang tidak lagi Anda perlukan.
    • AUTO_GENERATE_IDS: Opsional. Menentukan apakah akan otomatis membuat ID dokumen. Jika ditetapkan ke true, ID dokumen dibuat berdasarkan {i> hash <i}dari payload. Perhatikan bahwa ID dokumen yang dihasilkan mungkin tidak tetap konsisten di beberapa impor. Jika Anda membuat ID secara otomatis melalui beberapa impor, Google sangat merekomendasikan untuk menetapkan reconciliationMode ke FULL guna mempertahankan ID dokumen yang konsisten.

    • ID_FIELD: Opsional. Menentukan {i>field<i} mana yang ID dokumen.

Python

Untuk informasi selengkapnya, lihat Vertex AI Agent Builder Python API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 Anda ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda mengikuti langkah-langkah dalam Buat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan datastore disetel, lihat Mendapatkan hasil penelusuran.

Mengimpor dari Firestore

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

Jika data Firestore Anda berada dalam project yang sama dengan Vertex AI Search, buka Import data from 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 memberi Vertex AI Search akses ke data Firestore yang berada 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. Ini adalah akun layanan Vertex AI Search Anda ID:

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

    IAM & Admin

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

  4. Untuk New principals, masukkan ID akun layanan instance, lalu pilih menu Datastore > Peran Cloud Datastore Import Export Admin.

  5. Klik Simpan.

  6. Beralih kembali ke project Vertex AI Search Anda.

Selanjutnya, buka Impor 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 Agent Builder.

    Agent Builder

  2. Buka halaman Penyimpanan Data.

  3. Klik Penyimpanan data baru.

  4. Di halaman Source, pilih Firestore.

  5. Tentukan project ID, database ID, dan collection ID data yang ingin Anda impor.

  6. Klik Lanjutkan.

  7. Pilih region untuk penyimpanan data Anda.

  8. Masukkan nama untuk penyimpanan data Anda.

  9. Klik Create.

  10. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Saat kolom status pada tab Aktivitas berubah dari Dalam proses ke Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, proses transfer 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 dapat 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 dapat hanya berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • FIRESTORE_PROJECT_ID: ID project Firestore Anda.
    • DATABASE_ID: ID Firestore Anda di skrip untuk menyiapkan database.
    • COLLECTION_ID: ID koleksi Firestore Anda.
    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL menyebabkan pembaruan data inkremental dari Firestore ke penyimpanan data Anda. Ini melakukan operasi pembaruan dan penyisipan, yang menambahkan dokumen baru dan mengganti dokumen yang ada dengan dokumen yang telah diperbarui dengan ID yang sama. Menentukan FULL akan menyebabkan rebase penuh pada dokumen dalam data Anda 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 secara otomatis menghapus dokumen yang tidak lagi Anda butuhkan.
    • AUTO_GENERATE_IDS: Opsional. Menentukan apakah akan otomatis membuat ID dokumen. Jika ditetapkan ke true, ID dokumen dibuat berdasarkan {i> hash <i}dari payload. Perhatikan bahwa ID dokumen yang dihasilkan mungkin tidak tetap konsisten di beberapa impor. Jika Anda membuat ID secara otomatis melalui beberapa impor, Google sangat merekomendasikan untuk menetapkan reconciliationMode ke FULL guna mempertahankan ID dokumen yang konsisten.
    • ID_FIELD: Opsional. Menentukan {i>field<i} mana yang ID dokumen.

Python

Untuk informasi selengkapnya, lihat Vertex AI Agent Builder Python API dokumentasi referensi.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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 Anda ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda mengikuti langkah-langkah dalam Buat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran Anda setelah aplikasi dan data store Anda menyiapkan, melihat 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 memberi Vertex AI Search akses ke data Bigtable yang berada 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. Ini 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. Beralihlah 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 Impor 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. Membuat 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 dapat 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 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 dapat hanya berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • BIGTABLE_PROJECT_ID: ID project Bigtable.
    • INSTANCE_ID: ID Bigtable Anda di instance Compute Engine.
    • TABLE_ID: ID tabel Bigtable Anda.
    • KEY_FIELD_NAME: Opsional, tetapi direkomendasikan. Nama kolom untuk digunakan untuk nilai kunci baris setelah menyerap ke Vertex AI Search.
    • KEY: Wajib diisi. Nilai string untuk kunci grup kolom.
    • ENCODING: Opsional. Mode encoding nilai saat jenisnya bukan STRING. Ini dapat diganti untuk kolom tertentu dengan mencantumkan kolom tersebut di columns dan menentukan encoding untuknya.
    • COLUMN_TYPE: Opsional. Jenis nilai dalam kolom ini keluarga.
    • QUALIFIER: Wajib diisi. Penentu kolom.
    • FIELD_NAME: Opsional, tetapi direkomendasikan. Nama kolom yang akan digunakan untuk kolom ini setelah ditransfer ke Vertex AI Search.
    • COLUMN_ENCODING: Opsional. Mode encoding nilai untuk kolom tertentu jika jenisnya bukan STRING.
    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL menyebabkan pembaruan data inkremental dari Bigtable ke penyimpanan data Anda. Tindakan ini akan 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 pada 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 akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen yang tidak lagi diperlukan secara otomatis.
    • AUTO_GENERATE_IDS: Opsional. Menentukan apakah akan otomatis membuat ID dokumen. Jika ditetapkan ke true, ID dokumen akan dibuat berdasarkan hash payload. Perhatikan bahwa ID dokumen yang dihasilkan mungkin tidak tetap konsisten di beberapa impor. Jika Anda membuat ID secara otomatis dalam beberapa impor, Google sangat merekomendasikan setelan reconciliationMode ke FULL untuk mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika bigquerySource.dataSchema ditetapkan 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 impor.

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

Python

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 datastore disetel, lihat Mendapatkan hasil penelusuran.

Mengimpor dari AlloyDB untuk PostgreSQL

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

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

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

Menyiapkan akses AlloyDB untuk PostgreSQL dari project lain

Untuk memberi Vertex AI Search akses ke data AlloyDB untuk PostgreSQL yang berada 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. Ini adalah ID akun layanan Vertex AI Search Anda:

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

  3. Buka halaman IAM.

    IAM

  4. Klik Grant Access.

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

  6. Klik Simpan.

  7. Beralih kembali ke project Vertex AI Search Anda.

Selanjutnya, buka Impor data dari AlloyDB untuk PostgreSQL.

Mengimpor data dari AlloyDB untuk PostgreSQL

Konsol

Agar dapat menggunakan konsol untuk menyerap data dari AlloyDB untuk PostgreSQL, ikuti langkah-langkah berikut langkah:

  1. Di konsol Google Cloud, buka halaman Agent Builder.

    Pembuat Agen

  2. Di menu navigasi, klik Penyimpanan Data.

  3. Klik Buat penyimpanan data.

  4. Di halaman Sumber, pilih AlloyDB.

  5. Menentukan project ID, ID lokasi, ID cluster, ID database, dan ID tabel data yang akan Anda impor.

  6. Klik Lanjutkan.

  7. Pilih region untuk penyimpanan data Anda.

  8. Masukkan nama untuk penyimpanan data Anda.

  9. Klik Create.

  10. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Saat kolom status pada tab Aktivitas berubah dari Dalam proses ke Impor selesai, penyerapan selesai.

    Bergantung pada ukuran data Anda, proses transfer 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. Membuat 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 dapat 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 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 AlloyDB untuk PostgreSQL lokasi HTTP/HTTPS.
    • CLUSTER_ID: ID AlloyDB untuk PostgreSQL .
    • DATABASE_ID: ID database AlloyDB untuk PostgreSQL Anda.
    • TABLE_ID: ID tabel AlloyDB untuk PostgreSQL Anda.
    • RECONCILIATION_MODE: Opsional. Nilainya adalah FULL dan INCREMENTAL. Default-nya adalah INCREMENTAL. Menentukan INCREMENTAL menyebabkan pembaruan data inkremental dari AlloyDB untuk PostgreSQL ke penyimpanan data. Tindakan ini akan 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 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: Opsional. Menentukan apakah akan otomatis membuat ID dokumen. Jika ditetapkan ke true, ID dokumen dibuat berdasarkan {i> hash <i}dari payload. Perhatikan bahwa ID dokumen yang dihasilkan mungkin tidak tetap konsisten di beberapa impor. Jika Anda membuat ID secara otomatis melalui beberapa impor, Google sangat merekomendasikan untuk menetapkan reconciliationMode ke FULL guna mempertahankan ID dokumen yang konsisten.
    • ID_FIELD: Opsional. Menentukan {i>field<i} mana yang ID dokumen.

Python

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk 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 Anda setelah aplikasi dan data store Anda menyiapkan, melihat 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, 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 project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil huruf, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan Vertex AI Telusuri penyimpanan data yang ingin Anda buat.
  2. Mengimpor data terstruktur.

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

    • 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. Panjang ID ini dapat mencapai 63 karakter dan hanya berisi huruf kecil huruf, angka, garis bawah, dan tanda hubung.
      • JSON_DOCUMENT_STRING: dokumen JSON sebagai string tunggal. 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. 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"
      }
      ```
      
    • Update 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"
      }'
      
    • Memperbarui 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 Anda ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda mengikuti langkah-langkah dalam Buat aplikasi penelusuran.

  • Untuk melihat pratinjau tampilan hasil penelusuran setelah aplikasi dan datastore disetel, lihat Mendapatkan hasil penelusuran.

Memecahkan masalah penyerapan data

Jika Anda mengalami masalah dengan 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), lalu pastikan peran IAM CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) pada kunci telah diberikan kepada agen layanan Cloud Storage. Untuk informasi selengkapnya, lihat Sebelum memulai di "Kunci enkripsi yang dikelola pelanggan".

  • Jika Anda menggunakan pengindeksan situs lanjutan dan Penggunaan dokumen untuk jauh lebih rendah dari yang Anda harapkan, lalu tinjau pola URL yang yang ditentukan untuk pengindeksan dan pastikan bahwa pola URL yang ditentukan mencakup halaman yang ingin Anda indeks dan memperluasnya 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 menyerap data ke dalam penyimpanan data menggunakan Konsol Google Cloud atau perintah 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.