Halaman ini menjelaskan cara mengonfigurasi memori untuk indeks vektor, serta membuat, menyesuaikan, memantau, dan menghapus indeks vektor.
Sebelum memulai
Sebelum membuat indeks vektor, Anda harus memuat data ke tabel dasar dengan nilai penyematan vektor. Tabel dasar Anda harus memiliki minimal 1.000 baris. Jika memiliki lebih banyak titik data, Anda bisa mendapatkan partisi dan pelatihan indeks yang lebih baik.
Mengonfigurasi alokasi memori untuk indeks vektor
Flag database cloudsql_vector_max_mem_size
mengontrol jumlah memori yang dikhususkan oleh instance Cloud SQL Anda untuk indeks vektor. Ini adalah tanda statis
yang mengharuskan instance Anda dimulai ulang. Memori ini memiliki dua tujuan utama:
Menyimpan struktur indeks vektor: bagian non-daun dari indeks vektor (
TREE_MEMORY
) berada di memori ini. Perkiraan ukuran pohon ini bergantung pada jumlah node daun (num_leaves
) dan dimensi vektor Anda:Approximate TREE_MEMORY = num_leaves * vector dimensions * 4 * 2
Misalnya, indeks dengan 1.000 daun dan 768 dimensi akan memiliki
TREE_MEMORY
perkiraan 1.000 * 768 * 4 * 2 atau 6144000 byte. Anda juga dapat memeriksaTREE_MEMORY
yang sebenarnya menggunakan tabelinformation_schema.innodb_vector_indexes
. Cloud SQL mengelola memori tersebut. Anda tidak perlu mengalokasikan ruang untuk semua indeks vektor secara bersamaan, karena indeks yang tidak aktif di-unload untuk menyediakan ruang bagi permintaan lain.Memori untuk pembuatan indeks (data pelatihan): selama pembuatan indeks vektor, memori diperlukan untuk memproses sampel data dari tabel dasar Anda untuk membuat indeks. Memori ini hanya digunakan selama proses pembuatan indeks dan dibebaskan setelahnya. Perkiraan ukuran memori yang diperlukan untuk pelatihan adalah:
approximate_training_memory = num_rows in base table * 0.1 * 4 * vector dimensions
Misalnya, dengan tabel yang berisi 1.000.000 baris dan 768 dimensi,
training_memory
akan menjadi 1000000 * 0,1 * 768 * 4 atau 307.200.000 byte. Hanya 10% data tabel dasar yang diambil sampelnya untuk menghitung centroid untuk pohon.Saat Anda mengaktifkan flag
cloudsql_vector
, Cloud SQL akan otomatis menetapkancloudsql_vector_max_mem_size
default berdasarkan ukuran VM Anda. Setelan default ini biasanya sudah cukup untuk beban kerja standar. Cloud SQL mengurangi flaginnodb_buffer_pool_size
untuk mengallokasikan memori ini. Nilai maksimum default untukcloudsql_vector_max_mem_size
adalah 16 GB. Jika perlu menyesuaikan ukuran memori, Anda dapat menyesuaikancloudsql_vector_max_mem_size
secara dinamis berdasarkan penggunaan indeks vektor.Penting: Jika Anda meningkatkan
cloudsql_vector_max_mem_size
, Anda harus menurunkaninnodb_buffer_pool_size
secara bersamaan untuk menghindari masalah memori.
cloudsql_vector_max_mem_size
nilai
Ukuran VM | cloudsql_vector_max_mem_size |
4 GB | 194MB |
8 GB | 515MB |
16 GB | 1,2 GB |
32 GB | 2,56 GB |
64 GB | 5,12 GB |
128 GB | 10,24 GB |
256GB+ | 16 GB |
Rentang memori indeks vektor yang dialokasikan adalah sebagai berikut:
- Minimum 128 MB
- 10% kumpulan buffer
- Maksimum 16 GB
Anda dapat menyesuaikan memori nanti, sesuai kebutuhan. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan flag database untuk penyematan vektor.
Untuk informasi tentang cara memantau ukuran indeks vektor, lihat Memantau indeks vektor.
Untuk memperbarui memori yang dialokasikan untuk indeks vektor pada instance, gunakan perintah berikut:
gcloud sql instances patch INSTANCE_NAME \
--database-flags= cloudsql_vector_max_mem_size=NEW_MEMORY_VALUE;
Ganti kode berikut:
- INSTANCE_NAME: nama instance tempat Anda mengubah alokasi memori.
- NEW_MEMORY_VALUE: alokasi memori yang diperbarui, dalam byte, untuk indeks vektor Anda.
Perubahan ini akan langsung diterapkan setelah database dimulai ulang.
Membuat indeks vektor
Ada dua cara untuk membuat indeks vektor:
- Pernyataan
CREATE VECTOR INDEX
, ekstensi Cloud SQL ke sintaksis MySQL standar. - Pernyataan
ALTER TABLE
dengan ekstensi klausaADD VECTOR INDEX
Cloud SQL. Anda tidak dapat menjalankan pernyataan ini secara bersamaan dengan pernyataan DDL lainnya pada tabel.
Gunakan sintaksis berikut untuk membuat indeks vektor menggunakan CREATE VECTOR INDEX
:
CREATE
VECTOR INDEX INDEX_NAME
ON TABLE_NAME(COLUMN_NAME)
USING
SCANN[QUANTIZER = SQ8]
DISTANCE_MEASURE
= L2_SQUARED | COSINE | DOT_PRODUCT[NUM_LEAVES = INT_VALUE { '</var>' }}];
Berikut adalah opsi indeks:
USING SCANN
: opsional. Menunjukkan jenis indeks yang akan digunakan. SCANN adalah satu-satunya nilai yang didukung.QUANTIZER
: opsional. Memetakan vektor berdimensi tinggi ke representasi terkompresi. SQ8 adalah satu-satunya nilai yang didukung.DISTANCE_MEASURE
: wajib diisi. Menentukan formula matematika yang akan digunakan untuk menghitung kemiripan dua vektor. Anda harus menetapkan pengukuran jarak yang sama di parameter ini dengan jarak yang Anda tetapkan di opsi penelusuranapprox_distance
. Literal yang didukung adalah:L2_SQUARED
COSINE
DOT_PRODUCT
NUM_LEAVES
: opsional. Menentukan jumlah partisi (daun) yang akan dibuat. Hanya ubah setelan ini dari setelan default-nya jika Anda memiliki pemahaman yang baik tentang penelusuran ANN dan set data Anda. Jumlah yang ditentukan tidak boleh lebih besar dari jumlah penyematan di tabel dasar.
Misalnya, untuk membuat indeks vektor, jalankan perintah berikut:
CREATE
VECTOR INDEX vectorIndex
ON dbname.books(embeddings) DISTANCE_MEASURE = L2_SQUARED;
Saat pernyataan CREATE
berjalan, tabel dasar akan dimasukkan ke dalam mode hanya baca dan tidak ada DML yang diizinkan di tabel dasar.
Anda dapat menggunakan sintaksis berikut untuk membuat indeks pada tabel yang ada:
ALTER TABLE tbl_name
ADD VECTOR INDEX index_name(key_part)[index_option];
Misalnya, untuk membuat indeks pada tabel yang ada:
ALTER TABLE t1 ADD VECTOR INDEX index1(j)
USING SCANN QUANTIZER = SQ8 DISTANCE_MEASURE = l2_squared NUM_LEAVES = 10;
Menyesuaikan indeks vektor
Bagian ini memberikan informasi lebih lanjut tentang parameter yang Anda gunakan untuk mem-build indeks vektor. Untuk menyesuaikan indeks vektor, gunakan informasi ini untuk menentukan cara memengaruhi proses build.
Parameter | Deskripsi | Default | Cakupan | Dampak |
cloudsql_vector_max_mem_size |
Memori yang dialokasikan untuk pelatihan indeks. | Bervariasi | Instance | Memori yang tidak memadai dapat menyebabkan kegagalan build. Lihat Mengonfigurasi alokasi memori untuk indeks vektor. |
innodb_ddl_threads |
Tingkat paralelisme untuk pelatihan dan build indeks. | 4 | Sesi | Nilai yang lebih tinggi akan mengurangi waktu build, tetapi meningkatkan beban CPU. Tetapkan nilai ini ke jumlah CPU yang dapat Anda siapkan tanpa memengaruhi operasi database secara negatif. |
Pastikan cloudsql_vector_max_mem_size
dikonfigurasi dengan benar untuk pelatihan.
Sesuaikan innodb_ddl_threads
untuk menyeimbangkan waktu build dan beban CPU, dengan mempertimbangkan
dampaknya terhadap operasi database serentak. Memantau penggunaan CPU selama build.
Meletakkan indeks vektor
Untuk menghapus indeks vektor, gunakan pernyataan DROP INDEX
atau ALTER TABLE
SQL
dengan nama indeks yang ingin Anda hapus, seperti yang ditunjukkan dalam contoh berikut:
DROP INDEX index_name ON books;
ALTER TABLE table_name
DROP INDEX index_name;
Memantau indeks vektor
Cloud SQL menyediakan tabel skema informasi berikut dengan informasi real-time tentang indeks vektor yang dimuat dalam memorinya:
information_schema.innodb_vector_indexes
mencantumkan semua indeks vektor yang dibuka di memori setelah dimulai ulang.information_schema.innodb_all_vector_indexes
mencantumkan semua indeks vektor yang ada di instance (meskipun belum dibuka di memori).information_schema.innodb_vector_indexes_memory
memberikan informasi tentang penggunaan memori keseluruhan indeks vektor dalam instance.
Untuk informasi yang lebih mendetail, lihat Skema informasi.
Untuk melihat informasi dalam tabel innodb_vector_indexes
, jalankan perintah berikut:
SELECT * FROM information_schema.innodb_vector_indexes \ G;
Outputnya terlihat mirip dengan yang berikut ini:
INDEX_NAME: t1_vec_index
TABLE_NAME: test.t1
INDEX_TYPE: TREE_SQ
DIMENSION: 3
DIST_MEASURE: COSINE
STATUS: Ready
STATE: INDEX_READY_TO_USE
NUM_LEAVES: 10
NUM_LEAVES_TO_SEARCH: 10
QUERIES: 1
MUTATIONS: 1
TREE_MEMORY: 443
Langkah berikutnya
- Baca ringkasan tentang penelusuran vektor di Cloud SQL.
- Pelajari cara mengaktifkan dan menonaktifkan penyematan vektor di instance Anda.
- Pelajari cara membuat embedding vektor.
- Pelajari cara melakukan penelusuran pada embedding vektor.