Memberikan atau mendeteksi skema secara otomatis

Saat Anda mengimpor data terstruktur menggunakan konsol Google Cloud , Aplikasi AI akan otomatis mendeteksi skema. Anda dapat menggunakan skema yang terdeteksi otomatis ini di mesin atau menggunakan API untuk memberikan skema guna menunjukkan struktur data.

Jika Anda memberikan skema dan kemudian memperbaruinya dengan skema baru, skema baru harus kompatibel dengan versi lama. Jika tidak, pembaruan skema akan gagal.

Untuk informasi referensi tentang skema, lihat dataStores.schemas.

Pendekatan untuk menyediakan skema penyimpanan data Anda

Ada berbagai pendekatan untuk menentukan skema data terstruktur.

  • Deteksi dan edit otomatis. Izinkan Aplikasi AI mendeteksi dan menyarankan skema awal secara otomatis. Kemudian, Anda menyempurnakan skema melalui antarmuka konsol. Google sangat merekomendasikan agar, setelah kolom Anda terdeteksi otomatis, Anda memetakan properti utama ke semua kolom penting.

    Ini adalah pendekatan yang akan Anda gunakan saat mengikuti petunjuk Google Cloud konsol untuk data terstruktur di Membuat penyimpanan data penelusuran dan Membuat penyimpanan data rekomendasi kustom.

  • Berikan skema sebagai objek JSON. Berikan skema ke Aplikasi AI sebagai objek JSON. Anda harus menyiapkan objek JSON yang benar. Untuk contoh objek JSON, lihat Contoh skema sebagai objek JSON. Setelah membuat skema, Anda mengupload data sesuai dengan skema tersebut.

    Ini adalah pendekatan yang dapat Anda gunakan saat membuat penyimpanan data melalui API menggunakan perintah curl (atau program). Misalnya, lihat Mengimpor sekali dari BigQuery. Lihat juga petunjuk berikut, Menyediakan skema Anda sendiri.

  • Media: Berikan data Anda dalam skema yang ditentukan Google. Jika membuat penyimpanan data untuk media, Anda dapat memilih untuk menggunakan skema standar Google. Memilih opsi ini mengasumsikan bahwa Anda telah menyusun objek JSON dalam format yang diberikan di Tentang dokumen media dan penyimpanan data. Secara default, deteksi otomatis menambahkan kolom baru yang ditemukan selama penyerapan data ke skema.

    Ini adalah pendekatan yang Anda gunakan saat mengikuti petunjuk di Membuat aplikasi media dan penyimpanan data. Pendekatan ini juga digunakan dalam tutorial Mulai menggunakan rekomendasi media dan Mulai menggunakan penelusuran media, yang menyediakan contoh data dalam skema standar Google.

  • Media: Mendeteksi dan mengedit secara otomatis, pastikan untuk menyertakan properti media yang diperlukan. Untuk data media, Anda dapat menggunakan deteksi otomatis untuk menyarankan skema dan mengeditnya untuk menyempurnakannya. Dalam objek JSON, Anda harus menyertakan kolom yang dapat dipetakan ke properti kunci media: title, uri, category, media_duration, dan media_available_time.

    Ini adalah pendekatan yang akan Anda gunakan saat mengimpor data media melalui Google Cloud konsol jika data media tidak berada dalam skema yang ditentukan Google.

  • Media: Berikan skema Anda sendiri sebagai objek JSON. Berikan skema ke Aplikasi AI sebagai objek JSON. Anda harus menyiapkan objek JSON yang benar. Skema harus menyertakan kolom yang dapat dipetakan ke properti kunci media: title, uri, category, media_duration, dan media_available_time.

    Untuk contoh objek JSON, lihat Contoh skema sebagai objek JSON. Setelah membuat skema, Anda mengupload data media sesuai dengan skema tersebut.

    Untuk pendekatan ini, Anda menggunakan API melalui perintah curl (atau program). Lihat petunjuk berikut, Berikan skema Anda sendiri.

Tentang deteksi dan pengeditan otomatis

Saat Anda mulai mengimpor data, Vertex AI Search akan mengambil sampel beberapa dokumen pertama yang diimpor. Berdasarkan dokumen ini, AI akan mengusulkan skema untuk data, yang kemudian dapat Anda tinjau atau edit.

Jika kolom yang ingin Anda petakan ke properti utama tidak ada dalam dokumen yang diambil sampelnya, Anda dapat menambahkan kolom ini secara manual saat meninjau skema.

Jika Vertex AI Search menemukan kolom tambahan nanti dalam impor data, kolom ini tetap diimpor dan ditambahkan ke skema. Jika Anda ingin mengedit skema setelah semua data diimpor, lihat Memperbarui skema Anda.

Contoh skema sebagai objek JSON

Anda dapat menentukan skema Anda sendiri menggunakan format JSON Schema, yang merupakan bahasa deklaratif open source untuk menentukan, memberi anotasi, dan memvalidasi dokumen JSON. Misalnya, ini adalah anotasi skema JSON yang valid:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "dynamic": "true",
  "datetime_detection": true,
  "geolocation_detection": true,
  "properties": {
    "title": {
      "type": "string",
      "keyPropertyMapping": "title",
      "retrievable": true,
      "completable": true
    },
    "description": {
      "type": "string",
      "keyPropertyMapping": "description"
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "keyPropertyMapping": "category"
      }
    },
    "uri": {
      "type": "string",
      "keyPropertyMapping": "uri"
    },
    "brand": {
      "type": "string",
      "indexable": true,
      "dynamicFacetable": true
    },
    "location": {
      "type": "geolocation",
      "indexable": true,
      "retrievable": true
    },
    "creationDate": {
      "type": "datetime",
      "indexable": true,
      "retrievable": true
    },
    "isCurrent": {
      "type": "boolean",
      "indexable": true,
      "retrievable": true
    },
    "runtime": {
      "type": "string",
      "keyPropertyMapping": "media_duration"
    },
    "releaseDate": {
      "type": "string",
      "keyPropertyMapping": "media_available_time"
    }
  }
}

Jika Anda menentukan skema media, Anda harus menyertakan kolom yang dapat dipetakan ke properti kunci media. Properti utama ini ditampilkan dalam contoh ini.

Berikut beberapa kolom dalam contoh skema ini:

  • dynamic. Jika dynamic disetel ke nilai string "true", semua properti baru yang ditemukan dalam data yang diimpor akan ditambahkan ke skema. Jika dynamic disetel ke "false", properti baru yang ditemukan dalam data yang diimpor akan diabaikan; properti tidak ditambahkan ke skema dan nilai tidak diimpor.

    Misalnya, skema memiliki dua properti: title dan description, dan Anda mengupload data yang berisi properti untuk title, description, dan rating. Jika dynamic adalah "true", properti dan data rating akan diimpor. Jika dynamic adalah "false", properti rating tidak diimpor, meskipun title dan description diimpor.

    Nilai defaultnya adalah "true".

  • datetime_detection. Jika datetime_detection ditetapkan ke boolean true, maka, saat data dalam format tanggal dan waktu diimpor, jenis skema akan ditetapkan ke datetime. Format yang didukung adalah RFC 3339 dan ISO 8601.

    Contoh:

    • 2024-08-05 08:30:00 UTC

    • 2024-08-05T08:30:00Z

    • 2024-08-05T01:30:00-07:00

    • 2024-08-05

    • 2024-08-05T08:30:00+00:00

    Jika datatime_detection ditetapkan ke boolean false, maka, saat data dalam format tanggal dan waktu diimpor, jenis skema akan ditetapkan ke string.

    Nilai defaultnya adalah true.

  • geolocation_detection. Jika geolocation_detection disetel ke boolean true, maka, saat data dalam format geolokasi diimpor, jenis skema akan disetel ke geolocation. Data terdeteksi sebagai geolokasi jika berupa objek yang berisi angka lintang dan angka bujur atau objek yang berisi string alamat.

    Contoh:

    • "myLocation": {"latitude":37.42, "longitude":-122.08}

    • "myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}

    Jika geolocation_detection disetel ke boolean false, maka, saat data dalam format geolokasi diimpor, jenis skema akan disetel ke object.

    Nilai defaultnya adalah true.

  • keyPropertyMapping. Kolom yang memetakan kata kunci yang telah ditentukan sebelumnya ke kolom penting dalam dokumen Anda, sehingga membantu memperjelas makna semantiknya. Nilai mencakup title, description, uri, dan category. Perhatikan bahwa nama kolom Anda tidak harus cocok dengan nilai keyPropertyValues. Misalnya, untuk kolom yang Anda beri nama my_title, Anda dapat menyertakan kolom keyPropertyValues dengan nilai title.

    Untuk penyimpanan data penelusuran, kolom yang ditandai dengan keyPropertyMapping secara default dapat diindeks dan ditelusuri, tetapi tidak dapat diambil, dilengkapi, atau dynamicFacetable. Artinya, Anda tidak perlu menyertakan kolom indexable atau searchable dengan kolom keyPropertyValues untuk mendapatkan perilaku default yang diharapkan.

  • type. Jenis kolom. Ini adalah nilai string yang datetime, geolocation, atau salah satu jenis primitif (integer, boolean, object, array, number, atau string).

Kolom properti berikut hanya berlaku untuk aplikasi penelusuran:

  • retrievable. Menunjukkan apakah kolom ini dapat ditampilkan dalam respons penelusuran. Ini dapat ditetapkan untuk kolom berjenis number, string, boolean, integer, datetime, dan geolocation. Maksimum 50 kolom dapat ditetapkan sebagai dapat diambil. Kolom buatan pengguna dan kolom keyPropertyValues tidak dapat diambil secara default. Agar kolom dapat diambil, sertakan "retrievable": true dengan kolom.

  • indexable. Menunjukkan apakah kolom ini dapat difilter, dikelompokkan, ditingkatkan, atau diurutkan dalam metode servingConfigs.search. Ini dapat ditetapkan untuk kolom berjenis number, string, boolean, integer, datetime, dan geolocation. Maksimum 50 kolom dapat ditetapkan sebagai dapat diindeks. Kolom yang ditentukan pengguna tidak dapat diindeks secara default, kecuali untuk kolom yang berisi kolom keyPropertyMapping. Untuk membuat kolom dapat diindeks, sertakan "indexable": true dengan kolom.

  • dynamicFacetable. Menunjukkan bahwa kolom dapat digunakan sebagai aspek dinamis. Ini dapat ditetapkan untuk kolom berjenis number, string, boolean, dan integer. Agar kolom dapat difasilitasi secara dinamis, kolom tersebut juga harus dapat diindeks: sertakan "dynamicFacetable": true dan "indexable": true dengan kolom.

  • searchable. Menunjukkan apakah kolom ini dapat diindeks terbalik agar cocok dengan kueri teks tidak terstruktur. Kolom ini hanya dapat ditetapkan untuk kolom berjenis string. Maksimum 50 kolom dapat ditetapkan sebagai dapat ditelusuri. Kolom yang ditentukan pengguna tidak dapat dicari secara default, kecuali untuk kolom yang berisi kolom keyPropertyMapping. Untuk membuat kolom dapat ditelusuri, sertakan "searchable": true dengan kolom.

  • completable. Menunjukkan apakah kolom ini dapat ditampilkan sebagai saran pelengkapan otomatis. Nilai ini hanya dapat ditetapkan untuk kolom berjenis string. Untuk membuat kolom dapat diselesaikan, sertakan "completable": true dengan kolom.

Selain itu, kolom berikut hanya berlaku untuk aplikasi rekomendasi:

  • recommendationsFilterable. Menunjukkan bahwa kolom dapat digunakan dalam ekspresi filter rekomendasi. Untuk informasi umum tentang rekomendasi pemfilteran, lihat Rekomendasi filter.

      ...
        "genres": {
        "type": "string",
        "recommendationsFilterable": true,
        ...
      },

Menyediakan skema Anda sendiri sebagai objek JSON

Untuk menyediakan skema Anda sendiri, Anda membuat penyimpanan data yang berisi skema kosong, lalu memperbarui skema dengan menyediakan skema Anda sebagai objek JSON. Ikuti langkah-langkah berikut:

  1. Siapkan skema sebagai objek JSON, menggunakan Contoh skema sebagai objek JSON sebagai panduan.

  2. Buat penyimpanan data.

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

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search yang ingin Anda buat. ID ini hanya boleh berisi huruf kecil, angka, garis bawah, dan tanda hubung.
    • DATA_STORE_DISPLAY_NAME: nama tampilan penyimpanan data Vertex AI Search yang ingin Anda buat.
    • INDUSTRY_VERTICAL: GENERIC atau MEDIA
  3. Gunakan metode API schemas.patch untuk memberikan skema JSON baru Anda sebagai 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/schemas/default_schema" \
    -d '{
      "structSchema": JSON_SCHEMA_OBJECT
    }'
    

    Ganti kode berikut:

    • PROJECT_ID: ID Google Cloud project Anda.
    • DATA_STORE_ID: ID penyimpanan data Vertex AI Search.
    • JSON_SCHEMA_OBJECT: skema JSON baru Anda sebagai objek JSON. Contoh:

      {
        "$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"
          }
        }
      }
  4. Opsional: Tinjau skema dengan mengikuti prosedur Melihat definisi skema.

Langkah berikutnya