Memilih indeks vektor di AlloyDB AI

Pilih versi dokumentasi:

Halaman ini menjelaskan strategi penelusuran vektor AlloyDB AI dan menjelaskan kapan harus menggunakan setiap strategi. Secara default, AlloyDB Omni menggunakan penelusuran k-nearest neighbors (KNN) untuk menemukan vektor yang mirip dengan kueri. Indeks vektor menerapkan strategi penelusuran yang disebut Approximate Nearest Neighbor (ANN). Saat Anda membuat indeks vektor, AlloyDB AI menggunakan ANN, yang memberikan performa lebih baik daripada KNN. Perlu diingat bahwa, saat memilih indeks vektor, Anda perlu menyeimbangkan latensi kueri dan perolehan.

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 Omni, 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 Omni, 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.

  • Aplikasi Anda sangat sensitif terhadap akurasi dan Anda memerlukan kecocokan terdekat yang tepat.
  • Anda memiliki puluhan ribu vektor
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.
  • Aplikasi Anda memerlukan latensi rendah.
  • Anda memiliki lebih dari 100.000 vektor.

Dua jenis indeks vektor berbasis ANN yang umum untuk AlloyDB Omni 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:

  • Kueri vektor hingga 6 kali lebih cepat dan kueri penelusuran vektor terfilter hingga 10 kali lebih cepat
  • Pembuatan indeks hingga 16 kali lebih cepat
  • Throughput tulis hingga 24 kali lebih tinggi
  • Menggunakan memori hingga 4 kali lebih sedikit
Penelusuran vektor dengan indeks ScaNN dapat dipercepat oleh columnar engine AlloyDB Omni. 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 columnar engine pgvector di AlloyDB Omni menawarkan kueri vektor hingga 5 kali lebih cepat daripada PostgreSQL standar Penelusuran vektor dengan indeks HNSW dapat dipercepat oleh columnar engine AlloyDB Omni. 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 kemiripan, lihat Membuat indeks menggunakan ScaNN.

Untuk mempercepat penelusuran KNN yang difilter, gunakan columnar engine.

Langkah berikutnya