Memilih strategi penelusuran vektor dan indeks yang tepat di AlloyDB AI memungkinkan Anda menyeimbangkan latensi kueri dan akurasi penelusuran untuk workload Anda. Secara default, AlloyDB untuk PostgreSQL menggunakan penelusuran tetangga k terdekat (KNN) yang tepat untuk menemukan vektor yang serupa. Saat Anda membuat indeks vektor, AlloyDB AI menggunakan penelusuran Approximate Nearest Neighbor (ANN) untuk mempercepat performa kueri dalam skala besar sekaligus mengorbankan sejumlah recall yang dapat dikonfigurasi.
Recall mengukur seberapa efektif penelusuran mengambil semua item yang relevan untuk kueri tertentu. Misalnya, bayangkan Anda memiliki 100 embedding, yang masing-masing mewakili sebuah entity dalam database Anda. Anda mengkueri embedding dengan vektor target dan membatasinya hingga 10 hasil. Penelusuran vektor KNN menemukan 10 vektor terdekat yang tepat menggunakan metode penghitungan brute force, yang menghasilkan perolehan 100%. AlloyDB AI menggunakan metode ini secara default jika tidak ada indeks penelusuran vektor yang dibuat atau dipilih. Saat Anda membuat indeks vektor di AlloyDB, indeks tersebut biasanya menggunakan ANN, yang mungkin mempartisi vektor sesuai dengan kemiripan untuk memfasilitasi pengambilan yang lebih cepat. Akibatnya, dengan menggunakan ANN, 10 vektor yang ditampilkan dalam contoh sebelumnya mungkin bukan 10 vektor yang paling dekat jaraknya. Jika 9 dari 10 vektor yang diambil adalah yang terdekat dalam ruang dengan vektor kueri Anda, perolehan Anda adalah 90%. Untuk mengetahui informasi selengkapnya, lihat Mengukur perolehan kueri vektor.
Latensi kueri menentukan seberapa cepat hasil penelusuran dibuat. Misalnya, latensi dihitung berdasarkan waktu yang dihabiskan untuk penelusuran guna menampilkan vektor setelah Anda mengirimkan kueri.
Memilih strategi penelusuran
Saat Anda melakukan penelusuran vektor di AlloyDB, pilih salah satu strategi penelusuran berikut:
| Strategi Penelusuran | Deskripsi | Kasus Penggunaan |
| K-nearest neighbors (KNN) |
Algoritma yang menemukan titik data k-nearest neighbors untuk titik data kueri tertentu. Saat Anda melakukan penelusuran vektor tanpa membuat indeks, penelusuran KNN akan dilakukan secara default. Untuk lebih meningkatkan performa penelusuran KNN, tambahkan kolom embedding, dan kolom lain yang terkait dengan kueri Anda, ke penyimpanan kolom di columnar engine. Anda dapat menambahkan kolom secara manual atau menambahkan kolom menggunakan auto-columnarization. |
|
| Approximate Nearest Neighbors (ANN) | Algoritma yang menemukan titik data yang kira-kira paling dekat. ANN membagi titik data pelanggan yang ada menjadi grup-grup kecil berdasarkan kesamaan. |
|
Dua jenis indeks vektor berbasis ANN yang umum untuk AlloyDB adalah ScaNN dan HNSW. Gunakan panduan berikut untuk memutuskan jenis indeks yang paling sesuai untuk kasus penggunaan Anda:
| Jenis Indeks | Waktu Penggunaan | Manfaat | Akselerasi Columnar Engine |
| ScaNN |
Biasanya cocok untuk data berdimensi rendah atau set data besar yang melebihi memori. Menskalakan dengan baik hingga 10 miliar vektor. |
Menawarkan beberapa manfaat dibandingkan HNSW di PostgreSQL standar:
|
Penelusuran vektor dengan indeks ScaNN dapat dipercepat oleh columnar engine AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Mempercepat Penelusuran Vektor dengan columnar engine. |
| HNSW |
Biasanya cocok untuk data berdimensi lebih tinggi yang sebagian besar sesuai dengan cache dalam memori. Menskalakan dengan baik hingga 10-20 juta vektor. |
Indeks HNSW yang dipercepat oleh columnar engine pgvector di AlloyDB menawarkan kueri vektor hingga 5 kali lebih cepat daripada PostgreSQL standar | Penelusuran vektor dengan indeks HNSW dapat dipercepat oleh columnar engine AlloyDB. Untuk mengetahui informasi selengkapnya, lihat Mempercepat Penelusuran Vektor dengan columnar engine. |
Google merekomendasikan agar Anda membuat indeks vektor untuk mengoptimalkan performa pada kueri penelusuran vektor. Untuk mengetahui informasi selengkapnya tentang cara indeks ANN digunakan untuk penelusuran kesamaan, lihat Membuat indeks menggunakan ScaNN.
Untuk mempercepat penelusuran KNN yang difilter, gunakan columnar engine.
Langkah berikutnya
- Membuat indeks dan mengkueri vektor menggunakan ScaNN
- Membuat indeks menggunakan HNSW
- Menyesuaikan performa kueri vektor