Saat Anda mengimpor data terstruktur menggunakan konsol Google Cloud, Vertex AI Agent Builder 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 tersebut harus kompatibel dengan versi sebelumnya. Jika tidak, pembaruan skema akan gagal.
Untuk informasi referensi tentang skema, lihat
dataStores.schemas
.
Pendekatan untuk menyediakan skema untuk penyimpanan data Anda
Ada berbagai pendekatan untuk menentukan skema data terstruktur.
Mendeteksi dan mengedit secara otomatis. Izinkan Vertex AI Agent Builder mendeteksi dan menyarankan skema awal secara otomatis. Kemudian, Anda akan meningkatkan skema melalui antarmuka konsol. Google sangat merekomendasikan agar, setelah kolom terdeteksi secara otomatis, Anda memetakan properti utama ke semua kolom penting.
Ini adalah pendekatan yang akan Anda gunakan saat mengikuti petunjuk konsol Google Cloud untuk data terstruktur di Membuat penyimpanan data penelusuran dan Membuat penyimpanan data rekomendasi umum.
Berikan skema sebagai objek JSON. Berikan skema ke Vertex AI Agent Builder sebagai objek JSON. Anda harus menyiapkan objek JSON yang benar. Untuk contoh objek JSON, lihat Contoh skema sebagai objek JSON. Setelah membuat skema, Anda akan mengupload data sesuai dengan skema tersebut.
Ini adalah pendekatan yang dapat Anda gunakan saat membuat penyimpanan data melalui API menggunakan perintah (atau program) curl. Misalnya, lihat Mengimpor sekali dari BigQuery. Lihat juga petunjuk berikut, Berikan 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 akan menambahkan kolom baru yang ditemukan ke skema selama penyerapan data.
Ini adalah pendekatan yang Anda gunakan saat mengikuti petunjuk di Membuat aplikasi media dan penyimpanan data. Ini juga merupakan pendekatan dalam tutorial, Memulai rekomendasi media dan Memulai penelusuran media, tempat data contoh disediakan 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 mengedit untuk meningkatkan kualitasnya. Dalam objek JSON, Anda harus menyertakan kolom yang dapat dipetakan ke properti kunci media:
title
,uri
,category
,media_duration
, danmedia_available_time
.Ini adalah pendekatan yang akan Anda gunakan saat mengimpor data media melalui konsol Google Cloud jika data media tidak ada dalam skema yang ditentukan Google.
Media: Berikan skema Anda sendiri sebagai objek JSON. Berikan skema ke Vertex AI Agent Builder 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
, danmedia_available_time
.Untuk contoh objek JSON, lihat Contoh skema sebagai objek JSON. Setelah membuat skema, Anda akan mengupload data media sesuai dengan skema tersebut.
Untuk pendekatan ini, Anda menggunakan API melalui perintah (atau program) curl. 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, alat ini akan mengusulkan skema untuk data, yang kemudian dapat Anda tinjau atau edit.
Jika kolom yang ingin dipetakan ke properti utama tidak ada dalam dokumen contoh, Anda dapat menambahkan kolom ini secara manual saat meninjau skema.
Jika Vertex AI Search menemukan kolom tambahan nanti dalam impor data, Vertex AI Search akan tetap mengimpor kolom ini dan menambahkannya ke skema. Jika Anda ingin mengedit skema setelah semua data diimpor, lihat Memperbarui skema.
Contoh skema sebagai objek JSON
Anda dapat menentukan skema Anda sendiri menggunakan format JSON Schema, yang merupakan bahasa deklaratif open source untuk menentukan, menganotasi, 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 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
. Jikadynamic
ditetapkan ke nilai string"true"
, setiap properti baru yang ditemukan dalam data yang diimpor akan ditambahkan ke skema. Jikadynamic
ditetapkan ke"false"
, properti baru yang ditemukan dalam data yang diimpor akan diabaikan; properti tidak ditambahkan ke skema, begitu juga nilainya tidak diimpor.Misalnya, skema memiliki dua properti:
title
dandescription
, dan Anda mengupload data yang berisi properti untuktitle
,description
, danrating
. Jikadynamic
adalah"true"
, properti dan data rating akan diimpor. Jikadynamic
adalah"false"
, propertirating
tidak akan diimpor, meskipuntitle
dandescription
diimpor.Nilai defaultnya adalah
"true"
.datetime_detection
. Jikadatetime_detection
ditetapkan ketrue
boolean, saat data dalam format tanggal dan waktu diimpor, jenis skema akan ditetapkan kedatetime
. 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 kefalse
boolean, saat data dalam format tanggal dan waktu diimpor, jenis skema akan ditetapkan kestring
.Nilai defaultnya adalah
true
.geolocation_detection
. Jikageolocation_detection
ditetapkan ke booleantrue
, saat data dalam format geolokasi diimpor, jenis skema akan ditetapkan kegeolocation
. 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
ditetapkan ke booleanfalse
, saat data dalam format geolokasi diimpor, jenis skema akan ditetapkan keobject
.Nilai defaultnya adalah
true
.keyPropertyMapping
. Kolom yang memetakan kata kunci standar ke kolom kritis dalam dokumen Anda, sehingga membantu memperjelas makna semantiknya. Nilai mencakuptitle
,description
,uri
, dancategory
. Perhatikan bahwa nama kolom Anda tidak perlu cocok dengan nilaikeyPropertyValues
. Misalnya, untuk kolom yang Anda beri namamy_title
, Anda dapat menyertakan kolomkeyPropertyValues
dengan nilaititle
.Untuk penyimpanan data penelusuran, kolom yang ditandai dengan
keyPropertyMapping
secara default dapat diindeks dan dapat ditelusuri, tetapi tidak dapat diambil, diselesaikan, atau di-dynamicFacetable. Artinya, Anda tidak perlu menyertakan kolomindexable
atausearchable
dengan kolomkeyPropertyValues
untuk mendapatkan perilaku default yang diharapkan.type
. Jenis kolom. Ini adalah nilai string yang berupadatetime
,geolocation
, atau salah satu jenis primitif (integer
,boolean
,object
,array
,number
, ataustring
).
Kolom properti berikut hanya berlaku untuk aplikasi penelusuran:
retrievable
. Menunjukkan apakah kolom ini dapat ditampilkan dalam respons penelusuran. Ini dapat ditetapkan untuk kolom jenisnumber
,string
,boolean
,integer
,datetime
, dangeolocation
. Maksimum 50 kolom dapat ditetapkan sebagai dapat diambil. Kolom buatan pengguna dan kolomkeyPropertyValues
tidak dapat diambil secara default. Agar kolom dapat diambil, sertakan"retrievable": true
dengan kolom.indexable
. Menunjukkan apakah kolom ini dapat difilter, dikelompokkan, dioptimalkan, atau diurutkan dalam metodeservingConfigs.search
. Ini dapat ditetapkan untuk kolom jenisnumber
,string
,boolean
,integer
,datetime
, dangeolocation
. Maksimum 50 kolom dapat ditetapkan sebagai dapat diindeks. Kolom yang ditentukan pengguna tidak dapat diindeks secara default, kecuali untuk kolom yang berisi kolomkeyPropertyMapping
. Agar kolom dapat diindeks, sertakan"indexable": true
dengan kolom.dynamicFacetable
. Menunjukkan bahwa kolom dapat digunakan sebagai aspek dinamis. Ini dapat ditetapkan untuk kolom jenisnumber
,string
,boolean
, daninteger
. Agar dapat di-facetable secara dinamis, kolom juga harus dapat diindeks: sertakan"dynamicFacetable": true
dan"indexable": true
dengan kolom.searchable
. Menunjukkan apakah kolom ini dapat diindeks balik untuk mencocokkan kueri teks tidak terstruktur. Kolom ini hanya dapat ditetapkan untuk kolom jenisstring
. Maksimum 50 kolom dapat ditetapkan sebagai dapat ditelusuri. Kolom yang ditentukan pengguna tidak dapat ditelusuri secara default, kecuali untuk kolom yang berisi kolomkeyPropertyMapping
. Agar kolom dapat ditelusuri, sertakan"searchable": true
dengan kolom.completable
. Menunjukkan apakah kolom ini dapat ditampilkan sebagai saran pelengkapan otomatis. Kolom ini hanya dapat ditetapkan untuk kolom jenisstring
. Agar 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, ... },
Memberikan 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 sebagai objek JSON. Ikuti langkah-langkah berikut:
Siapkan skema sebagai objek JSON, menggunakan Contoh skema sebagai objek JSON sebagai panduan.
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 project Google Cloud 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
atauMEDIA
Gunakan metode API schemas.patch untuk memberikan skema JSON baru 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 project Google Cloud 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" } } }
Opsional: Tinjau skema dengan mengikuti prosedur Melihat definisi skema.
Langkah selanjutnya
- Membuat aplikasi penelusuran
- Membuat aplikasi rekomendasi
- Membuat aplikasi media
- Mendapatkan definisi skema untuk data terstruktur
- Memperbarui skema untuk data terstruktur