Apa itu vector search dan bagaimana cara kerja HNSW?
Vector search mencari vector tersimpan yang paling dekat dengan vector query menurut ukuran kemiripan seperti cosine similarity, dot product, atau jarak Euclidean (L2). Vector-nya biasanya berupa embedding, jadi "terdekat" berarti "paling mirip maknanya". Exact search membandingkan query dengan setiap vector tersimpan, dan ini terlalu lambat untuk jutaan item, sehingga sistem nyata memakai indeks approximate nearest neighbour (ANN) seperti HNSW, IVF, dan product quantization.
Vector search adalah tahap retrieval dalam retrieval-augmented generation (RAG): pertanyaan diubah menjadi embedding, chunk dokumen terdekat diambil, lalu LLM menjawab berdasarkan chunk itu. Operasi yang sama menjadi dasar semantic search, sistem rekomendasi, pencarian gambar, deduplikasi, dan anomaly detection. Library seperti FAISS dan hnswlib, serta vector database yang dibangun di atasnya, mengembalikan hasil teratas dari ratusan juta vector dalam hitungan milidetik karena hanya mencari di sebagian sangat kecil data.
Ide utama
- Vector search mengembalikan k vector tersimpan yang paling mirip dengan query, biasanya embedding yang dibandingkan dengan cosine, dot product, atau jarak L2.
- Exact search menghitung satu jarak per vector tersimpan, jadi biayanya tumbuh linear dengan ukuran koleksi.
- Pada vector yang dinormalisasi, cosine similarity, dot product, dan jarak L2 menghasilkan peringkat yang sama.
- Indeks aproksimasi mengorbankan sedikit recall@k demi pencarian yang puluhan hingga ribuan kali lebih cepat.
- HNSW membangun proximity graph berlapis dan mencarinya secara greedy dari layer atas yang jarang sampai layer bawah yang rapat, dengan ef mengatur lebar beam.
- IVF membatasi pencarian pada beberapa cluster k-means, dan product quantization memampatkan setiap vector menjadi beberapa byte sehingga miliaran vector muat di memori.
Ulasan singkat tentang topik ini
Pertanyaan umum
Apa itu vector database?
Vector database menyimpan embedding bersama data sumbernya dan melayani query nearest neighbour lewat indeks ANN, biasanya HNSW atau IVF. Di sekitar indeks itu ada fitur database: insert dan delete, filter metadata, persistensi, replikasi, dan kontrol akses. Banyak mesin relasional dan pencarian, seperti PostgreSQL dengan pgvector dan Elasticsearch, kini juga menyediakan indeks vector.
Apakah HNSW lebih baik daripada IVF?
HNSW biasanya memberi recall lebih tinggi pada latensi yang sama dan tidak butuh tahap training, tetapi menyimpan seluruh vector dan link graph di memori. IVF butuh satu tahap training k-means dan sering digabung dengan product quantization, sehingga jauh lebih hemat memori pada skala miliaran. Pilihan yang tepat bergantung pada ukuran koleksi, anggaran memori, dan seberapa sering datanya berubah.
Bagaimana memilih ef dan M untuk HNSW?
M menentukan jumlah link yang disimpan setiap node, jadi M yang lebih besar menaikkan recall sekaligus pemakaian memori. efConstruction mengatur kualitas pembangunan indeks, dan ef saat query mengatur trade-off recall dan latensi. Pendekatan yang umum: tetapkan M dan efConstruction, lalu naikkan ef sampai recall@k pada held-out set berisi query dengan jawaban eksak mencapai target.
Bisakah hasil vector search difilter berdasarkan metadata?
Bisa, tetapi filtering berinteraksi dengan indeks. Post-filtering mencari dulu, lalu membuang hasil yang tidak cocok, sehingga bisa mengembalikan kurang dari k item kalau filternya ketat. Pre-filtering atau penelusuran graph yang memperhitungkan filter membatasi pencarian pada item yang cocok, dan sebagian besar vector database menerapkan salah satu strategi ini.
Penjelasan terkait
- Embedding · Mengubah kata dan kategori menjadi vector
- Norm dan Metrik Jarak · L1, L2, cosine similarity: cara mengukur kedekatan di ruang vector
- K-Nearest Neighbors · Klasifikasi berdasarkan kedekatan dan metrik jarak
- K-Means Clustering · Pengelompokan unsupervised berdasarkan jarak ke centroid
- Retrieval-Augmented Generation · Mendasarkan output model bahasa pada dokumen yang diambil untuk mengurangi halusinasi
- Quantization · Mengecilkan weight model menjadi 8 dan 4 bit
Referensi
- Malkov & Yashunin (2016), "Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs"
- Jégou, Douze & Schmid (2011), "Product Quantization for Nearest Neighbor Search"
- Johnson, Douze & Jégou (2017), "Billion-scale similarity search with GPUs"
- Douze et al. (2024), "The Faiss library"
Terakhir diperbarui