Membuat penyimpanan data rekomendasi umum

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

URL situs

Konsol

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

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

    Agent Builder

  2. Di menu navigasi, klik Penyimpanan Data.

  3. Klik New data store.

  4. Di halaman Pilih sumber data, pilih Konten Situs.

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

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

  6. Di kolom Sites to include, tentukan URL situs yang ingin Anda terindeks. Sertakan satu URL per baris, tanpa pemisah koma.

  7. Opsional: Di kolom Situs yang akan dikecualikan, masukkan situs yang ingin Anda kecualikan dari aplikasi.

  8. Klik Lanjutkan.

  9. Masukkan nama untuk penyimpanan data Anda.

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

  11. Klik Create. Vertex AI Agent Builder membuat penyimpanan data dan 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 kepemilikan domain. Jika Anda mengalami kekurangan kuota (jumlah halaman di situs yang Anda tentukan melebihi kuota "Jumlah dokumen per project" untuk project Anda), peringatan tambahan akan muncul yang meminta Anda untuk mengupgrade kuota. Langkah-langkah berikut menunjukkan cara memverifikasi kepemilikan domain dan mengupgrade kuota Anda.

  13. Untuk memverifikasi kepemilikan domain, ikuti langkah-langkah berikut:

    1. Klik Verifikasi di Google Search Console. Halaman Selamat datang di Google Search Console akan muncul.
    2. Ikuti petunjuk di layar untuk memverifikasi domain atau awalan URL, bergantung pada apakah Anda memverifikasi seluruh domain atau awalan URL yang merupakan bagian dari domain. Untuk informasi selengkapnya, lihat Memverifikasi kepemilikan situs di Bantuan Search Console.
    3. Setelah menyelesaikan alur kerja verifikasi domain, kembali ke halaman Agent Builder dan klik Data Stores di menu navigasi.
    4. Klik nama penyimpanan data Anda di kolom Nama. Halaman penyimpanan data Anda akan muncul.
    5. Klik Perbarui status untuk memperbarui nilai di kolom Status. Kolom Status untuk situs Anda menunjukkan bahwa pengindeksan sedang berlangsung.
    6. Ulangi langkah-langkah verifikasi domain untuk setiap situs yang memerlukan verifikasi domain hingga semuanya mulai diindeks. Jika kolom Status untuk URL menampilkan Diindeks, fitur pengindeksan situs lanjutan akan tersedia untuk URL atau pola URL tersebut.
  14. Untuk mengupgrade kuota, ikuti langkah-langkah berikut:

    1. Klik Upgrade kuota. Panel Discovery Engine API akan muncul, dengan tab Quotas dipilih.
    2. Ikuti petunjuk di Meminta batas kuota yang lebih tinggi dalam dokumentasi Google Cloud. Kuota yang akan ditingkatkan adalah Jumlah dokumen.
    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. Jika kolom Status untuk URL menampilkan Diindeks, fitur pengindeksan situs lanjutan akan tersedia untuk URL atau pola URL tersebut.

Langkah berikutnya

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

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

BigQuery

Untuk menyerap data dari 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 Type, pilih BigQuery.

  5. Di kolom BigQuery path, klik Browse, pilih tabel yang telah Anda siapkan untuk ditransfer, lalu klik Select. Atau, masukkan lokasi tabel langsung di kolom Jalur BigQuery.

  6. Pilih jenis data yang Anda impor.

  7. Klik Lanjutkan.

  8. Jika Anda melakukan impor data terstruktur satu kali:

    1. Petakan kolom ke properti utama.

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

      Untuk informasi selengkapnya, lihat Tentang deteksi dan pengeditan otomatis.

    3. Klik Lanjutkan.

  9. Pilih region untuk penyimpanan data Anda.

  10. Masukkan nama untuk penyimpanan data Anda.

  11. Klik Create.

  12. Untuk mengonfirmasi bahwa datastore Anda telah dibuat, buka halaman Data Store dan klik nama datastore untuk melihat detailnya di halaman Data.

  13. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Jika kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan akan 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 mengimpor data dari BigQuery, ikuti langkah-langkah berikut:

  1. Buat penyimpanan data.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/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_RECOMMENDATION"]
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data rekomendasi yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data rekomendasi yang ingin Anda buat.
  2. Opsional: Jika mengupload data terstruktur dengan skema Anda sendiri, Anda dapat menyediakan skema tersebut. Saat memberikan skema, Anda biasanya mendapatkan hasil yang lebih baik. Jika tidak, skema akan terdeteksi secara otomatis. Untuk informasi selengkapnya, lihat Menyediakan atau mendeteksi otomatis skema.

    curl -X PATCH \
    -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/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data rekomendasi.
    • JSON_SCHEMA_OBJECT: skema JSON Anda sebagai objek JSON—misalnya:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
      
  3. 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",
      },
      "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 rekomendasi.
    • DATASET_ID: ID set data BigQuery.
    • TABLE_ID: ID tabel BigQuery.
      • Jika tabel BigQuery tidak berada di bawah PROJECT_ID, Anda harus memberikan izin "BigQuery Data Viewer" service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com akun layanan untuk tabel BigQuery. Misalnya, jika Anda mengimpor tabel BigQuery dari project sumber "123" ke project tujuan "456", berikan izin service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com untuk tabel BigQuery di project "123".
    • DATA_SCHEMA: 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 ID setiap dokumen sendiri, sekaligus menggabungkan semua data dalam string jsonData.
      • custom: Semua skema tabel BigQuery diterima, dan Rekomendasi secara otomatis membuat ID untuk setiap dokumen yang diimpor.
    • ERROR_DIRECTORY: Opsional. Direktori Cloud Storage untuk informasi error tentang impor—misalnya, gs://<your-gcs-bucket>/directory/import_errors. Google merekomendasikan untuk mengosongkan kolom ini agar Rekomendasi otomatis membuat direktori sementara.
    • 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. 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 BigQuery akan dihapus dari penyimpanan data Anda. Mode FULL berguna jika Anda ingin menghapus dokumen secara otomatis yang tidak lagi diperlukan.
    • 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 melalui beberapa impor, Google sangat merekomendasikan untuk menetapkan reconciliationMode ke FULL guna mempertahankan ID dokumen yang konsisten.

      Tentukan autoGenerateIds hanya jika bigquerySource.dataSchema ditetapkan ke custom. Jika tidak, error INVALID_ARGUMENT akan ditampilkan. 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 ditetapkan ke false atau tidak ditentukan. Jika tidak, error INVALID_ARGUMENT akan ditampilkan.

      Nilai nama kolom BigQuery harus berupa jenis string, harus antara 1 dan 63 karakter, dan harus sesuai dengan 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.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

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 mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.


package main

import (
	"context"

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

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

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

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

Java

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java 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.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

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 mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

/**
 * 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 mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.



def import_documents_bigquery_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    bigquery_dataset: str,
    bigquery_table: str,
) -> str:

    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)

    return operation.operation.name


def import_documents_gcs_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    gcs_uri: str,
) -> str:
    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)

    return operation.operation.name

Ruby

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Ruby 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.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

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

Langkah berikutnya

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

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

Cloud Storage

Untuk menyerap data dari Cloud Storage, 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 guna menyerap data dari bucket Cloud Storage, 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 Jenis, 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 secara langsung di kolom gs://.

  7. Pilih jenis data yang Anda impor.

  8. Klik Lanjutkan.

  9. Jika Anda melakukan impor data terstruktur satu kali:

    1. Petakan kolom ke properti utama.

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

      Untuk 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 mengonfirmasi bahwa datastore Anda telah dibuat, buka halaman Data Store dan klik nama datastore untuk melihat detailnya di halaman Data.

  14. Untuk memeriksa status penyerapan, buka halaman Penyimpanan Data dan klik nama penyimpanan data untuk melihat detailnya di halaman Data. Jika kolom status di tab Aktivitas berubah dari Sedang berlangsung menjadi Impor selesai, penyerapan akan 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. 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_RECOMMENDATION"],
      "contentConfig": "CONTENT_REQUIRED"
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data rekomendasi yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data rekomendasi yang ingin Anda buat.
  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 rekomendasi.
    • INPUT_FILE_PATTERN: pola file di Cloud Storage yang berisi dokumen Anda.

      Untuk data terstruktur, atau untuk data tidak terstruktur dengan metadata untuk dokumen tidak terstruktur, contoh pola file input adalah gs://<your-gcs-bucket>/directory/object.json, atau pola yang cocok dengan satu atau beberapa file, seperti 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 memberikan izin "Storage Object Viewer" service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com kepada akun layanan 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. Data diatur sesuai dengan skema. Anda dapat menentukan skema; jika tidak, skema akan terdeteksi secara otomatis. Anda dapat menempatkan string JSON dokumen dalam format yang konsisten langsung di setiap baris, dan Rekomendasi akan otomatis membuat ID untuk setiap dokumen yang diimpor.

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

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

    • ERROR_DIRECTORY: Opsional. Direktori Cloud Storage untuk informasi error tentang impor—misalnya, gs://<your-gcs-bucket>/directory/import_errors. Google merekomendasikan untuk mengosongkan kolom ini agar Rekomendasi 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 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 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.

      Tentukan autoGenerateIds hanya jika gcsSource.dataSchema ditetapkan ke custom atau csv. Jika tidak, error INVALID_ARGUMENT akan ditampilkan. 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 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 ditetapkan ke false atau tidak ditentukan. Jika tidak, error INVALID_ARGUMENT akan ditampilkan.

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

      Perhatikan bahwa nama kolom JSON yang ditentukan oleh id_field harus berupa jenis string, harus antara 1 dan 63 karakter, dan harus sesuai dengan RFC-1034. Jika tidak, dokumen akan 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.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

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 mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.


package main

import (
	"context"

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

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

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

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

Java

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java 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.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

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 mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

/**
 * 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 mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.



def import_documents_bigquery_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    bigquery_dataset: str,
    bigquery_table: str,
) -> str:

    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)

    return operation.operation.name


def import_documents_gcs_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    gcs_uri: str,
) -> str:
    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)

    return operation.operation.name

Ruby

Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Ruby 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.

Contoh ini menyerap data tidak terstruktur dari BigQuery atau Cloud Storage ke penyimpanan data yang ada.

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

Langkah berikutnya

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

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

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_RECOMMENDATION"]
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data rekomendasi yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data rekomendasi yang ingin Anda buat.
  2. Opsional: Berikan skema Anda sendiri. Jika memberikan skema, Anda biasanya mendapatkan hasil yang lebih baik. Untuk mengetahui informasi selengkapnya, lihat Menyediakan atau mendeteksi skema secara otomatis.

    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/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • DATA_STORE_ID: ID penyimpanan data rekomendasi.
    • JSON_SCHEMA_OBJECT: skema JSON Anda sebagai objek JSON—misalnya:

      {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "keyPropertyMapping": "title"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "keyPropertyMapping": "category"
            }
          },
          "uri": {
            "type": "string",
            "keyPropertyMapping": "uri"
          }
        }
      }
      
  3. Mengimpor data terstruktur yang sesuai dengan skema yang ditentukan.

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

    • Upload dokumen JSON.

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

      Ganti JSON_DOCUMENT_STRING dengan dokumen JSON sebagai satu string. Ini harus sesuai dengan skema JSON yang Anda berikan di langkah sebelumnya—misalnya:

      ```none
      { \"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"
      }
      ```
      
    • Memperbarui 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 ke aplikasi, buat aplikasi dan pilih penyimpanan data Anda dengan mengikuti langkah-langkah di Membuat aplikasi rekomendasi umum.

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

Membuat penyimpanan data menggunakan Terraform

Anda dapat menggunakan Terraform untuk membuat penyimpanan data kosong. Setelah penyimpanan data kosong dibuat, Anda dapat menyerap data ke 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.