Saat Anda mengimpor data terstruktur menggunakan konsol Google Cloud , Gemini Enterprise akan otomatis mendeteksi skema. Anda dapat menggunakan skema yang terdeteksi otomatis ini di mesin Anda atau menggunakan API untuk menyediakan skema yang menunjukkan struktur data.
Jika Anda memberikan skema dan kemudian mengupdatenya dengan skema baru, skema baru tersebut harus kompatibel dengan versi lama dari skema asli. Jika tidak, update skema akan gagal.
Untuk mengetahui informasi referensi tentang skema, lihat
dataStores.schemas.
Pendekatan untuk menyediakan skema bagi penyimpanan data Anda
Ada berbagai pendekatan untuk menentukan skema data terstruktur.
Deteksi otomatis dan edit. Biarkan Gemini Enterprise mendeteksi otomatis dan menyarankan skema awal. Kemudian, Anda menyaring skema melalui antarmuka konsol. Google sangat menyarankan agar, setelah kolom Anda 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 pihak pertama.
Berikan skema sebagai objek JSON. Berikan skema ke Gemini Enterprise 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 (atau program) curl. Misalnya, lihat Mengimpor sekali dari BigQuery. Lihat juga petunjuk berikut, Menyediakan skema Anda sendiri.
Tentang deteksi dan edit otomatis
Saat Anda mulai mengimpor data, Gemini Enterprise akan mengambil sampel beberapa dokumen pertama yang diimpor. Berdasarkan dokumen ini, Gemini akan mengusulkan skema untuk data, yang kemudian dapat Anda tinjau atau edit.
Jika kolom yang ingin Anda petakan ke properti kunci tidak ada dalam dokumen yang dijadikan sampel, Anda dapat menambahkan kolom ini secara manual saat meninjau skema.
Jika Gemini Enterprise menemukan kolom tambahan nanti dalam impor data, Gemini Enterprise 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 sendiri menggunakan format Skema JSON, 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 } } }
Berikut beberapa kolom dalam contoh skema ini:
dynamic. Jikadynamicditetapkan ke nilai string"true", properti baru apa pun yang ditemukan dalam data yang diimpor akan ditambahkan ke skema. Jikadynamicditetapkan ke"false", properti baru yang ditemukan dalam data yang diimpor akan diabaikan; properti tidak ditambahkan ke skema dan nilainya tidak diimpor.Misalnya, skema memiliki dua properti:
titledandescription, dan Anda mengupload data yang berisi properti untuktitle,description, danrating. Jikadynamicadalah"true", properti dan data rating akan diimpor. Jikadynamicadalah"false", propertiratingtidak akan diimpor, meskipuntitledandescriptiondiimpor.Nilai defaultnya adalah
"true".datetime_detection. Jikadatetime_detectionditetapkan ke booleantrue, maka, saat data dalam format datetime diimpor, jenis skema ditetapkan kedatetime. Format yang didukung adalah RFC 3339 dan ISO 8601.Contoh:
2024-08-05 08:30:00 UTC2024-08-05T08:30:00Z2024-08-05T01:30:00-07:002024-08-052024-08-05T08:30:00+00:00
Jika
datatime_detectionditetapkan ke booleanfalse, maka, saat data dalam format datetime diimpor, jenis skema akan ditetapkan kestring.Nilai defaultnya adalah
true.geolocation_detection. Jikageolocation_detectionditetapkan ke booleantrue, maka, saat data dalam format geolokasi diimpor, jenis skema 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_detectionditetapkan ke booleanfalse, saat data dalam format geolokasi diimpor, jenis skema akan ditetapkan keobject.Nilai defaultnya adalah
true.keyPropertyMapping. Kolom yang memetakan kata kunci yang telah ditentukan ke kolom penting dalam dokumen Anda, sehingga membantu memperjelas makna semantiknya. Nilai mencakuptitle,description,uri, dancategory. Perhatikan bahwa nama kolom Anda tidak perlu sama dengan nilaikeyPropertyValues. Misalnya, untuk kolom yang Anda beri namamy_title, Anda dapat menyertakan kolomkeyPropertyValuesdengan nilaititle.Kolom yang ditandai dengan
keyPropertyMappingsecara default dapat diindeks dan ditelusuri, tetapi tidak dapat diambil, diselesaikan, atau dynamicFacetable. Artinya, Anda tidak perlu menyertakan kolomindexableatausearchabledengan kolomkeyPropertyValuesuntuk 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).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 kolomkeyPropertyValuestidak dapat diambil secara default. Agar kolom dapat diambil, sertakan"retrievable": truedengan kolom tersebut.indexable. Menunjukkan apakah kolom ini dapat difilter, difaset, diperkuat, 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": truedengan kolom tersebut.dynamicFacetable. Menunjukkan bahwa kolom dapat digunakan sebagai faset dinamis. Ini dapat ditetapkan untuk kolom jenisnumber,string,boolean, daninteger. Agar kolom dapat difaset secara dinamis, kolom tersebut juga harus dapat diindeks: sertakan"dynamicFacetable": truedan"indexable": truedengan kolom tersebut.searchable. Menunjukkan apakah kolom ini dapat diindeks terbalik agar cocok dengan kueri teks tidak terstruktur. 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": truedengan kolom tersebut.completable. Menunjukkan apakah kolom ini dapat ditampilkan sebagai saran pelengkapan otomatis. Kolom ini hanya dapat ditetapkan untuk kolom jenisstring. Agar kolom dapat dilengkapi, sertakan"completable": truedengan kolom tersebut.
Menyediakan skema Anda sendiri sebagai objek JSON
Untuk menyediakan skema Anda sendiri, buat penyimpanan data yang berisi skema kosong, lalu perbarui skema tersebut, dengan menyediakan skema Anda sebagai objek JSON. Ikuti langkah-langkah berikut:
Siapkan skema sebagai objek JSON, menggunakan Contoh skema sebagai objek JSON sebagai panduan.
Membuat penyimpanan data.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "INDUSTRY_VERTICAL" }'Ganti kode berikut:
PROJECT_ID: ID project Anda.DATA_STORE_ID: ID penyimpanan data 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 yang ingin Anda buat.INDUSTRY_VERTICAL:GENERIC
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 project Anda.DATA_STORE_ID: ID penyimpanan data.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 berikutnya
- Membuat aplikasi penelusuran
- Mendapatkan definisi skema untuk data terstruktur
- Memperbarui skema untuk data terstruktur