ScaNN
. Contoh error dan perbaikan yang direkomendasikan juga disediakan.
Daftar error
Berikut adalah daftar error yang dihasilkan saat Anda mencoba membuat indeks ScaNN
. Anda dapat menonaktifkan pembuatan error ini dan terus membuat
indeks. Untuk mengetahui informasi selengkapnya, lihat Menerapkan pembuatan indeks dan menyembunyikan error.
ERROR: Tidak dapat membuat indeks ScaNN dengan tabel kosong
Pesan error
Saat Anda mencoba membuat indeks pada tabel tanpa data atau mencoba memotong
tabel dengan indeks ScaNN
yang dibuat di dalamnya, error berikut akan terjadi:
ERROR: Cannot create ScaNN index with empty table. 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 penyematan sebelum Anda membuat indeks ScaNN
.
ERROR: Tidak dapat membuat indeks ScaNN
Pesan error
Saat Anda mencoba membuat indeks pada tabel dengan beberapa baris yang terisi, error berikut akan terjadi:
Cannot create ScaNN index, error: INVALID_ARGUMENT: Number of row (5) must be
larger than (1000).
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 penyematan sebelum Anda membuat
indeks ScaNN
. Sebaiknya jumlah baris dalam tabel lebih besar
dari nilai yang ditentukan dalam parameter num_leaves
.
ERROR: Tidak dapat membuat indeks ScaNN pada tabel partisi induk.
Pesan error
Jika Anda telah membuat tabel berpartisi dari tabel induk, membuat indeks ScaNN pada tabel induk akan menghasilkan error berikut:
ERROR: Cannot create ScaNN index on parent partition table. 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 ScaNN
pada tabel induk tabel berpartisi.
Anda harus membuat indeks ScaNN
pada tabel yang dipartisi.
Menerapkan pembuatan indeks dan menyembunyikan error
Anda dapat mewajibkan AlloyDB untuk membuat indeks dan menyembunyikan error. Sebelum mengizinkan pembuatan indeks dengan metode ini, pertimbangkan implikasi berikut:
- Karena indeks dilatih dengan lebih sedikit atau tanpa data, centroid belajar dengan nol data yang menyebabkan recall yang buruk.
- Performa operasi tulis ke database mungkin juga lambat.
Untuk memaksa pembuatan indeks, selesaikan langkah-langkah berikut:
Tetapkan parameter tingkat sesi
scann.allow_blocked_operations creation
ketrue
di database:SET scann.allow_blocked_operations = true;
Tetapkan hak istimewa
SUPERUSER
kepada pengguna yang akan menjalankan kueri ini di database:CREATE USER USER_NAME WITH SUPERUSER PASSWORD PASSWORD;
Ganti kode berikut:
USER_NAME
: nama pengguna yang ingin Anda beri hak istimewa.PASSWORD
: sandi pengguna.