Untuk membuat indeks baru atau memperbarui indeks yang sudah ada, sediakan vektor ke Vector Search dalam format dan struktur yang dijelaskan di bagian berikut.
Pengaturan file dan penyimpanan data input
Prasyarat
Simpan data input di bucket Cloud Storage, di project Google Cloud Anda.
File data input harus diatur sebagai berikut:
- Setiap batch file data input harus berada di satu direktori Cloud Storage.
- File data harus ditempatkan langsung di
batch_root
dan diberi nama dengan akhiran berikut:.csv
,.json
, dan.avro
. - Ada batas 5.000 objek (file) dalam direktori root batch.
- Setiap file data diinterpretasikan sebagai kumpulan data. Format data ditentukan oleh akhiran nama file dan persyaratan format tersebut dijelaskan. Lihat Format file data.
- Setiap kumpulan data harus memiliki
id
, vektor fitur, dan kolom opsional yang didukung oleh Vertex AI Feature Store, seperti pembatasan dan kepadatan. - Mungkin ada subdirektori bernama
delete
. Setiap file yang berada dibatch_root
/delete
dianggap sebagai file teks dari kumpulan dataid
yang berisi satuid
di setiap baris. - Semua direktori dan file lain akan diabaikan.
Pemrosesan data input
- Semua catatan dari semua file data, termasuk dalam
delete
, terdiri dari satu batch input. - Urutan relatif kumpulan data dalam file data tidaklah penting.
- Satu ID hanya boleh muncul sekali dalam satu batch. Jika terdapat duplikat dengan ID yang sama, maka duplikat tersebut akan ditampilkan sebagai satu vektor.
- ID tidak dapat muncul dalam file data reguler dan file data penghapusan.
- Semua ID dari file data yang sedang dihapus menyebabkannya dihapus dari versi indeks berikutnya.
- Kumpulan data dari file data reguler akan disertakan dalam versi berikutnya, yang menimpa nilai dalam versi indeks yang lebih lama.
Berikut adalah contoh JSON:
{"id": "1", "embedding": [1,1,1]}
{"id": "2", "embedding": [2,2,2]}
Berikut adalah contoh penyusunan file data input yang valid:
batch_root/
feature_file_1.csv
feature_file_2.csv
delete/
delete_file.txt
File feature_file_1.csv
dan feature_file_2.csv
berisi catatan dalam format
CSV. File delete_file.txt
berisi daftar ID rekaman yang akan dihapus
dari versi indeks berikutnya.
Format file data
JSON
- Mengenkode file JSON menggunakan UTF-8.
- Setiap baris file JSON akan ditafsirkan sebagai objek JSON terpisah.
- Setiap kumpulan data harus berisi kolom
id
untuk menentukan ID vektor. - Setiap kumpulan data harus berisi kolom
embedding
yang merupakan array angka floating pointN
yang mewakili vektor fitur, denganN
adalah dimensi vektor fitur yang dikonfigurasi saat indeks dibuat. - Kolom
restricts
opsional dapat disertakan yang menentukan array objekTokenNamespace
dalam pembatas. Untuk setiap objek:- Tentukan kolom
namespace
yang merupakanTokenNamespace.namespace
. - Kolom
allow
opsional dapat ditetapkan ke array string yang merupakan daftarTokenNamespace.string_tokens
. - Kolom
deny
opsional dapat ditetapkan ke array string yang merupakan daftarTokenNamespace.string_blacklist_tokens
. - Nilai kolom
crowding_tag
, jika ada, harus berupa string.
- Tentukan kolom
- Kolom
numeric_restricts
opsional yang menentukan arrayNumericRestrictNamespace
dapat disertakan. Untuk setiap objek:- Tentukan kolom
namespace
yang merupakanNumericRestrictNamespace.namespace
. - Salah satu kolom nilai
value_int
,value_float
, danvalue_double
. - Kolom ini tidak boleh memiliki kolom bernama op. Kolom ini hanya untuk kueri.
- Tentukan kolom
Avro
- Gunakan file Avro yang valid.
Buat kumpulan data yang sesuai dengan skema berikut:
{ "type": "record", "name": "FeatureVector", "fields": [ { "name": "id", "type": "string" }, { "name": "embedding", "type": { "type": "array", "items": "float" } }, { "name": "restricts", "type": [ "null", { "type": "array", "items": { "type": "record", "name": "Restrict", "fields": [ { "name": "namespace", "type": "string" }, { "name": "allow", "type": [ "null", { "type": "array", "items": "string" } ] }, { "name": "deny", "type": [ "null", { "type": "array", "items": "string" } ] } ] } } ] }, { "name": "numeric_restricts", "type": [ "null", { "type": "array", "items": { "name": "NumericRestrict", "type": "record", "fields": [ { "name": "namespace", "type": "string" }, { "name": "value_int", "type": [ "null", "int" ], "default": null }, { "name": "value_float", "type": [ "null", "float" ], "default": null }, { "name": "value_double", "type": [ "null", "double" ], "default": null } ] } } ], "default": null }, { "name": "crowding_tag", "type": [ "null", "string" ] } ] }
CSV
- Mengenkode file CSV menggunakan UTF-8.
- Setiap baris CSV harus berisi tepat satu kumpulan data.
- Nilai pertama di setiap baris harus berupa ID vektor, yang harus berupa string UTF-8 yang valid.
- Setelah ID, nilai
N
berikutnya merepresentasikan vektor fitur, denganN
adalah dimensi vektor fitur yang dikonfigurasi saat indeks dibuat. - Nilai vektor fitur harus berupa literal floating point seperti yang ditetapkan dalam spesifikasi bahasa Java.
- Nilai tambahan mungkin dalam bentuk
name=value
. - Nama
crowding_tag
ditafsirkan sebagai tag kerumunan dan hanya dapat muncul sekali dalam data. Semua pasangan
name=value
lainnya ditafsirkan sebagai pembatasan namespace token. Nama yang sama dapat diulang jika ada beberapa nilai dalam namespace.Misalnya,
color=red,color=blue
mewakiliTokenNamespace
ini:{ "namespace": "color" "string_tokens": ["red", "blue"] }
Jika nilai dimulai dengan
!
, string lainnya akan ditafsirkan sebagai nilai yang dikecualikan.Misalnya,
color=!red
mewakiliTokenNamespace
ini:{ "namespace": "color" "string_blacklist_tokens": ["red"] }
Pasangan
#name=numericValue
dengan akhiran jenis angka diinterpretasikan sebagai pembatasan namespace numerik. Akhiran jenis angka adalahi
untuk int,f
untuk float, dand
untuk double. Nama yang sama tidak boleh diulang karena harus ada satu nilai yang terkait per namespace.Misalnya,
#size=3i
mewakiliNumericRestrictNamespace
ini:{ "namespace": "size" "value_int": 3 }
#ratio=0.1f
mewakiliNumericRestrictNamespace
ini:{ "namespace": "ratio" "value_float": 0.1 }
#weight=0.3d
mewakiliNumericRestriction
ini:{ "namespace": "weight" "value_double": 0.3 }
Langkah selanjutnya
- Pelajari cara Membuat dan mengelola indeks Anda