Mengapa Anda Membutuhkan Basis Data Vektor
Pahami keterbatasan pencarian kesamaan dengan pemeriksaan menyeluruh, cara kerja algoritme tetangga terdekat aproksimasi seperti HNSW, serta masalah yang diselesaikan basis data vektor dalam produksi.
Mengapa Anda Membutuhkan Basis Data Vektor adalah pelajaran AI Engineering Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Engineering Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Engineering Academy mencakup 4 pelajaran total.
Batasan Pencarian dalam Memori
Pencarian semantik dengan NumPy bekerja dengan baik untuk korpus kecil, tetapi memiliki masalah skalabilitas yang mendasar: setiap pencarian memindai setiap vektor. Dengan 1 juta dokumen, setiap kueri memerlukan 1,5 miliar perkalian bilangan titik mengambang dan membutuhkan waktu ratusan milidetik. Lebih buruk lagi, semua vektor harus muat di RAM.
Sistem AI produksi memerlukan pencarian atas jutaan dokumen dalam waktu kurang dari 50 milidetik. Inilah yang dirancang untuk disediakan oleh basis data vektor.
Pencarian Tetangga Terdekat Aproksimatif
Algoritme Approximate Nearest Neighbor (ANN) menukar sedikit akurasi dengan peningkatan kecepatan yang sangat besar. Alih-alih memeriksa setiap vektor, algoritme ANN menggunakan struktur pengindeksan cerdas untuk melewati sebagian besar ruang pencarian.
Dalam praktiknya, ANN mengembalikan tetangga terdekat yang sebenarnya lebih dari 95% setiap saat, sekaligus 100–1000 kali lebih cepat daripada pencarian eksak. Untuk RAG, pertukaran ini hampir selalu sepadan.
Cara Kerja HNSW
HNSW (Hierarchical Navigable Small World) adalah algoritme ANN yang paling banyak digunakan oleh Pinecone, Weaviate, Qdrant, dan pgvector. Algoritme ini membangun graf multilapis, dengan setiap simpul terhubung ke tetangga terdekatnya. Pencarian dimulai dari lapisan atas yang jarang, menavigasi ke wilayah aproksimatif, lalu turun ke lapisan bawah yang padat untuk mendapatkan presisi.
HNSW menawarkan kecepatan kueri yang sangat baik (logaritmik terhadap ukuran himpunan data) dan perolehan kembali yang tinggi, tetapi memerlukan pembangunan Index terlebih dahulu.
Apa yang Ditambahkan Basis Data Vektor
Basis data vektor lebih dari sekadar Index ANN. Basis data ini juga menyediakan:
- Penyaringan metadata — hanya mengambil vektor dengan
category='finance'ataudate > '2024-01-01' - Penyimpanan persisten — data tetap ada setelah dimulai ulang dan dapat melampaui kapasitas RAM
- Operasi CRUD — menyisipkan, memperbarui, dan menghapus vektor satu per satu
- Isolasi ruang nama — memisahkan koleksi untuk pelanggan atau lingkungan yang berbeda
- Penskalaan horizontal — mendistribusikan jutaan vektor ke berbagai pecahan
Penyaringan Metadata dalam Praktik
Penyaringan metadata memungkinkan Anda membatasi pengambilan ke subset yang relevan sebelum menjalankan pencarian ANN. Misalnya, dalam sistem RAG multitenan, Anda akan memfilter berdasarkan tenant_id agar pengguna hanya melihat dokumen milik mereka sendiri. Tanpa penyaringan metadata, Anda memerlukan satu Index terpisah untuk setiap penyewa.
Ini adalah salah satu kemampuan terpenting yang membedakan basis data vektor dari pustaka ANN sederhana seperti FAISS.
# Conceptual example — Pinecone query with metadata filter
results = index.query(
vector=query_embedding,
top_k=5,
filter={
'tenant_id': {'$eq': 'acme_corp'},
'document_type': {'$in': ['invoice', 'contract']},
'date': {'$gte': '2024-01-01'}
},
include_metadata=True
)FAISS: Pustaka ANN Berperforma Tinggi
FAISS (Facebook AI Similarity Search) adalah pustaka ANN sumber terbuka dari Meta — opsi tercepat untuk pencarian yang dipercepat GPU. FAISS bukan basis data lengkap: pustaka ini tidak memiliki persistensi, metadata, atau penyajian bawaan.
FAISS ideal jika Anda memerlukan throughput maksimum pada satu mesin dan mengelola persistensi sendiri. Chroma, Weaviate, dan pgvector semuanya menggunakan FAISS atau HNSW secara internal.
import faiss
import numpy as np
d = 1536 # dimension
n = 10000 # number of vectors
# Build a flat (exact) index as a baseline
index = faiss.IndexFlatIP(d) # Inner Product = dot product
# Add random vectors (pretend these are embeddings)
vectors = np.random.randn(n, d).astype('float32')
faiss.normalize_L2(vectors) # normalize for cosine sim
index.add(vectors)
query = np.random.randn(1, d).astype('float32')
faiss.normalize_L2(query)
scores, indices = index.search(query, k=5)
print('Top 5 indices:', indices[0])
print('Top 5 scores:', scores[0])Basis Data Vektor vs Basis Data Tradisional
Basis data SQL tradisional seperti PostgreSQL dioptimalkan untuk pencarian eksak dan kueri rentang pada data terstruktur. Basis data tersebut tidak dirancang untuk pencarian tetangga terdekat berdimensi tinggi. Bahkan dengan ekstensi pgvector, PostgreSQL murni lebih lambat daripada basis data vektor yang dibuat khusus untuk korpus besar.
Namun, pgvector adalah pilihan yang sangat baik jika aplikasi Anda sudah berjalan di PostgreSQL dan korpus Anda berisi kurang dari beberapa juta dokumen, karena Anda tidak perlu menambahkan komponen infrastruktur lain.
Opsi Terkelola vs Dikelola Sendiri
Pilihan basis data vektor terbagi menjadi dua kategori:
- Terkelola (tanpa server): Pinecone, Weaviate Cloud — tidak ada infrastruktur yang perlu dikelola, membayar berdasarkan kueri/penyimpanan, dan skalabilitas langsung
- Dikelola sendiri: Qdrant, Chroma, Weaviate sumber terbuka, pgvector — kendali penuh dan biaya lebih rendah dalam skala besar, tetapi Anda harus mengelola pencadangan, peningkatan versi, dan penskalaan
Untuk proyek tahap awal, mulailah dengan layanan terkelola agar dapat bergerak cepat. Evaluasi pengelolaan sendiri ketika biaya bulanan melebihi $200–300.
Jenis Index: Flat, IVF, dan HNSW
Berbagai jenis Index menawarkan pertukaran yang berbeda:
- Flat: Pencarian eksak, tanpa aproksimasi, lambat dalam skala besar tetapi tanpa kehilangan akurasi — baik untuk tolok ukur dasar
- IVF (Inverted File): Mempartisi vektor ke dalam klaster, lalu hanya mencari klaster terdekat — cepat tetapi memerlukan penyetelan
nlistdannprobe - HNSW: Berbasis graf, menawarkan pertukaran terbaik antara perolehan kembali dan kecepatan untuk sebagian besar beban kerja, serta menjadi bawaan pada sebagian besar basis data produksi
Kuantisasi untuk Mengurangi Penggunaan Memori
Kuantisasi vektor memadatkan setiap float 32-bit dalam vektor menjadi lebih sedikit bit, sehingga mengurangi penggunaan memori secara drastis dengan sedikit pengorbanan akurasi:
- FP32: 1536 dimensi × 4 byte = 6KB per vektor
- FP16: 3KB per vektor — kompresi 2x, kehilangan akurasi yang dapat diabaikan
- INT8: 1,5KB per vektor — kompresi 4x, penurunan perolehan kembali sekitar 1%
Dengan 10 juta vektor, kuantisasi INT8 mengurangi memori dari 60GB menjadi 15GB, sehingga menentukan apakah data dapat dimuat di RAM atau tidak.
Kapan Beralih dari NumPy ke Basis Data Vektor
Pertimbangkan untuk beralih dari pencarian NumPy dalam memori ke basis data vektor ketika:
- Korpus Anda melebihi 50.000 dokumen dan latensi kueri menurun
- Anda memerlukan penyaringan metadata (berdasarkan tanggal, pengguna, kategori, dan sebagainya)
- Anda memerlukan persistensi yang tetap ada setelah aplikasi dimulai ulang
- Beberapa layanan atau pengguna perlu berbagi Index yang sama
- Anda perlu memperbarui atau menghapus dokumen satu per satu tanpa mengindeks ulang semuanya
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep Rekayasa AI dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda telah mempelajari: pencarian NumPy dengan metode brute force tidak dapat diskalakan melampaui puluhan ribu dokumen, HNSW memungkinkan pencarian tetangga terdekat aproksimatif yang cepat dengan menavigasi graf hierarkis, dan basis data vektor menambahkan penyaringan metadata, persistensi, dan operasi CRUD di atas Index ANN. Selanjutnya, kita akan menyiapkan Pinecone, basis data vektor terkelola yang paling populer, dan mengindeks dokumen pertama kita.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengapa Anda Membutuhkan Basis Data Vektor” gratis?
Ya — teks lengkap “Mengapa Anda Membutuhkan Basis Data Vektor” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Engineering Academy, upgrade ke CoddyKit PRO. Kursus AI Engineering Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengapa Anda Membutuhkan Basis Data Vektor”?
Pahami keterbatasan pencarian kesamaan dengan pemeriksaan menyeluruh, cara kerja algoritme tetangga terdekat aproksimasi seperti HNSW, serta masalah yang diselesaikan basis data vektor dalam produksi. Kamu berlatih AI Engineering Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Engineering Academy?
Tidak diperlukan pengalaman sebelumnya. AI Engineering Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mengapa Anda Membutuhkan Basis Data Vektor” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Engineering Academy ini?
Ya. Setiap pelajaran AI Engineering Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Anda Membutuhkan Basis Data Vektor
- Memulai dengan Pinecone
- pgvector: Penyematan dalam PostgreSQL
- Memilih dan Mengukur Kinerja Penyimpanan Vektor