22 poin oleh xguru 2024-12-10 | 1 komentar | Bagikan ke WhatsApp
  • Ekstensi pencarian vektor baru untuk PostgreSQL guna mengelola vektor skala besar secara hemat biaya
  • Untuk 100 juta vektor berdimensi 768, mampu mencapai QPS 131 pada kueri 10 teratas dengan akurasi 0,95
    • Dapat dijalankan di satu mesin dengan biaya $250 per bulan
  • Dapat menyimpan 400.000 vektor hanya dengan $1:
    • 6 kali lebih murah dibanding Pinecone (instance yang dioptimalkan untuk penyimpanan)
    • 26 kali lebih murah dibanding pgvector

Masalah pada basis data vektor berbasis HNSW(Hierarchical Navigable Small Worlds)

  • Waktu pembuatan indeks yang lama: membutuhkan lebih dari 2 jam untuk 5 juta record
  • Kebutuhan memori yang tinggi: memerlukan hingga 40GB untuk menyimpan 10 juta vektor

Solusi inovatif VectorChord: IVF+RaBitQ yang ramah disk

  • Menggunakan kuantisasi IVF(inverted file index) dan RaBitQ
    • Mengubah vektor 32-bit menjadi representasi bit terkompresi untuk menurunkan biaya komputasi
    • Sebagian besar perbandingan menggunakan vektor terkompresi, lalu perhitungan presisi penuh dilakukan pada sejumlah kecil vektor untuk menjamin akurasi
  • Pencarian yang lebih cepat dan efisien dibanding HNSW:
    • RaBitQ memampatkan vektor menjadi 1 bit, meningkatkan kecepatan komputasi hingga 100 kali
    • Kecepatan dapat dioptimalkan sambil tetap mempertahankan akurasi tinggi

Hasil benchmark utama

Dataset GIST (1M, 960 dimensi)

  • VectorChord memiliki QPS 2 kali lebih tinggi dibanding pgvector
  • Memanfaatkan metode clustering KMeans yang dijalankan di GPU eksternal lalu diimpor ke PostgreSQL
  • Waktu yang dibutuhkan untuk mengindeks 700 ribu vektor di instance AWS i4i.large (2 vCPU, RAM 16GB): 186 detik
    • 16 kali lebih cepat dibanding pgvector
    • Kecepatan insert juga 14 kali lebih cepat

Dataset LAION 5M

  • Eksperimen pada mesin r6a.xlarge (4 vCPU, RAM 32GB, EBS 200GB):
    • Tetap memberikan respons cepat bahkan pada akurasi tinggi
    • Menyediakan performa serupa dengan biaya $165.56/bulan, sehingga lebih efisien secara biaya dibanding platform pesaing

Dataset LAION 100M

  • Pada instance AWS i4i.xlarge (4 vCPU, RAM 32GB, SSD 937GB):
    • QPS 16.2 @ recall 0.95 (berdasarkan 10 hasil teratas)
    • Dalam lingkungan multi-thread, teramati peningkatan QPS yang linear seiring bertambahnya jumlah permintaan

Keunggulan utama VectorChord

  • Kompatibel dengan physical replication PostgreSQL dan fitur lainnya
  • Mendukung pembuatan indeks eksternal:
    • Indeks dapat dibuat di mesin yang lebih kuat, lalu diimpor ke mesin yang lebih kecil untuk menjalankan kueri
    • Mampu mendukung miliaran vektor dalam satu mesin
  • Biaya rendah, performa tinggi: memangkas biaya bulanan secara signifikan dibanding platform pesaing

Ringkasan dan informasi tambahan

  • VectorChord menyediakan pencarian vektor yang efisien di lingkungan PostgreSQL
  • Melalui kuantisasi IVF dan RaBitQ, kecepatan serta penggunaan memori dioptimalkan sehingga cocok untuk dataset berskala besar
  • Layanan cloud terkelola: PGVecto.rs Cloud
    • Mudah dideploy dan diskalakan

1 komentar

 
xguru 2024-12-10

Vector adalah JSON baru untuk PostgreSQL
pgvector yang dikutip dalam tulisan di atas dan pgvecto.rs, pendahulu dari VectorChord, adalah ekstensi yang berbeda.
pgvector vs. pgvecto.rs in 2024: A Comprehensive Comparison for Vector Search in PostgreSQL

Tim yang membuat pgvecto.rs juga membuat VectorChord dan saat ini mengelolanya bersama, tetapi fungsinya masih belum sepenuhnya dipindahkan ke VectorChord. Katanya sekitar tahun depan dukungan untuk pgvecto.rs akan dihentikan dan beralih ke VectorChord.

Bagi yang menyimpan vektor di Postgres, ini layak dijadikan referensi.