Dokumen ini menjelaskan error yang mungkin Anda alami saat membuat indeks ScaNN. Contoh error dan perbaikan yang direkomendasikan juga diberikan.
Sebagai solusi umum, Anda dapat menonaktifkan pembuatan error ini dan terus membuat indeks. Untuk mengetahui informasi selengkapnya, lihat Memaksa pembuatan indeks pada tabel kosong atau kecil.
Tidak dapat membuat indeks ScaNN dengan tabel kosong
Deskripsi
Saat Anda mencoba membuat indeks pada tabel tanpa data, atau jika Anda mencoba memangkas tabel dengan indeks ScaNN yang dibuat di dalamnya, error berikut akan terjadi:
ERROR: Cannot create ScaNN index "[INDEX_NAME]" for table "[TABLE_NAME]", error: FAILED_PRECONDITION: Cannot create ScaNN index "[INDEX_NAME]" with empty table "[TABLE_NAME]". Once the table is populated with data, create the index. See documentation to bypass this validation.
Contoh kueri yang menyebabkan error
Contoh Kueri A
create table t1 (a INT, b VECTOR(512)); CREATE TABLE create index on t1 using ScaNN(b cosine) with (num_leaves = 10, quantizer = 'sq8');Contoh Kueri B
truncate t1;
Perbaikan yang direkomendasikan
Pastikan tabel Anda diisi dengan vektor embedding sebelum Anda membuat indeks ScaNN.
Tidak dapat membuat indeks ScaNN
Deskripsi
Saat Anda mencoba membuat indeks pada tabel dengan sedikit baris yang terisi, error berikut akan terjadi:
ERROR: Cannot create ScaNN index "[INDEX_NAME]" for table "[TABLE_NAME]", error: INVALID_ARGUMENT: Number of rows ([ACTUAL]) must be larger than ([EXPECTED]).
Contoh kueri yang menyebabkan error
create table t1 (a INT, b VECTOR(512));
CREATE TABLE
insert into t1 select (random()*1e9)::int, random_vector(512) from generate_series(1, 5);
INSERT 0 5
create index on t1 using scann(b cosine) with (num_leaves = 100, quantizer = 'sq8');
Perbaikan yang direkomendasikan
Pastikan tabel Anda diisi dengan vektor embedding sebelum Anda membuat indeks
ScaNN. Sebaiknya jumlah baris dalam tabel lebih besar
daripada nilai yang ditentukan dalam parameter num_leaves.
Tidak dapat membuat indeks ScaNN untuk tabel dengan hanya satu baris
Deskripsi
Error ini terjadi karena ScaNN (dan sebagian besar indeks ANN seperti IVFFlat) memerlukan set pelatihan untuk membangun struktur internalnya (cluster/leaf). Saat memasukkan tepat satu baris , Anda akan mendapatkan error berikut:
ERROR: Cannot create ScaNN index "[INDEX_NAME]" for table "[TABLE_NAME]", error: INVALID_ARGUMENT: Number of samples "[NUM_SAMPLES]" must be larger than 1 and the number of leaves "[NUM_LEAVES]"
Contoh kueri yang menyebabkan error
create table t1 (a INT, b VECTOR(512));
CREATE TABLE
insert into t1 select (random()*1e9)::int, random_vector(512) from generate_series(1, 1);
INSERT 0 1
create index on t1 using scann(b cosine) with (num_leaves = 1, quantizer = 'sq8');
Perbaikan yang direkomendasikan
Pastikan tabel Anda diisi dengan vektor embedding sebelum Anda membuat indeks ScaNN. Sebaiknya jumlah baris dalam tabel adalah:
- Lebih dari 1
- Lebih besar dari nilai yang ditentukan dalam parameter
num_leaves
Tidak dapat membuat indeks ScaNN pada tabel partisi induk
Deskripsi
Jika Anda membuat tabel berpartisi dari tabel induk, pembuatan indeks ScaNN pada tabel induk akan menghasilkan error berikut:
ERROR: Cannot create ScaNN index "[INDEX_NAME]" for parent partition table "[TABLE_NAME]". Create ScaNN indexes on the child tables instead. See documentation to bypass this validation.
Contoh kueri yang menyebabkan error
create table t1 (a INT, b VECTOR(512)) partition by range(a);
CREATE TABLE
CREATE TABLE t1_one_ten PARTITION of t1 for values from (1) to (10);
CREATE TABLE
insert into t1_one_ten select (random()*1e9)::int, random_vector(512) from generate_series(1, 100);
INSERT 0 100
CREATE TABLE t1_eleven_twenty PARTITION of t1 for values from (11) to (20);
CREATE TABLE
insert into t1_eleven_twenty select (random()*1e9)::int, random_vector(512) from generate_series(1, 100);
INSERT 0 100
create index on t1 using scann(b cosine) with (num_leaves = 10, quantizer = 'sq8');
Perbaikan yang direkomendasikan
- Anda tidak dapat membuat indeks
ScaNNpada tabel induk dari tabel berpartisi. - Anda harus membuat indeks
ScaNNpada tabel yang dipartisi.