Vector Database: pgvector, Pinecone, Chroma
Memilih dan mengimplementasikan vector database yang tepat untuk skala dan use case
Tujuan Pembelajaran
- Memahami perbedaan pgvector (SQL-based), Pinecone (managed), Chroma (open-source embedded)
- Mampu memilih vector DB berdasarkan skala, latency, dan operational requirements
- Mampu mengimplementasikan vector search dengan cosine similarity dan indexing
Analogi
Vector DB = Jenis Perpustakaan:
Pinecone = Perpustakaan nasional (managed, scalable, bayar)
pgvector = Rak buku di rumah (self-host, integrasi dengan SQL)
Chroma = Lemari buku portabel (embedded, simple, open source)
Qdrant = Perpustakaan kampus (self-host enterprise)
Pilih berdasarkan:
- Berapa banyak buku? (scale)
- Seberapa cepat harus dicari? (latency)
- Siapa yang maintain? (managed vs self-host)
Pilih vector DB seperti memilih perpustakaan — skala, kecepatan, dan operational complexity menentukan pilihan.
Penjelasan Konsep
Vector database menyimpan dan mencari high-dimensional vectors. Pilihan vector DB adalah keputusan arsitektur yang mempengaruhi cost, latency, dan operational complexity.
pgvector (PostgreSQL extension): Kelebihan — satu database untuk data relasional + vectors, tidak perlu infra tambahan, ACID compliance. Gunakan IVFFlat atau HNSW indexing. Cocok untuk: prototype, proyek dengan <1M vectors, tim yang sudah pakai PostgreSQL.
Pinecone (managed): Kelebihan — zero ops, auto-scaling, serverless, metadata filtering built-in. Kekurangan: vendor lock-in, biaya (free tier 2GB, paid starts $70/mo). Cocok untuk: production apps, scale besar, tim tanpa DevOps.
Chroma (open-source embedded): Kelebihan — simple API, bisa embedded di Python/JS app, open source. Kekurangan: scaling terbatas, belum production-grade untuk high traffic. Cocok untuk: prototype, local development, small-scale apps.
Search algorithms: (1) Exact (brute force) — bandingkan query dengan SEMUA vectors. Akurat tapi lambat untuk >10K vectors. (2) Approximate Nearest Neighbor (ANN) — HNSW, IVFFlat. Cepat (sub-millisecond), akurasi ~95-99%. Standard choice untuk production.
Inti yang Perlu Dipahami
Bagian ini berfokus pada memahami perbedaan pgvector (SQL-based), Pinecone (managed), Chroma (open-source embedded)., mampu memilih vector DB berdasarkan skala, latency, dan operational requirements., dan mampu mengimplementasikan vector search dengan cosine similarity dan indexing. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Vector Database, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Pilih vector DB seperti memilih perpustakaan — skala, kecepatan, dan operational complexity menentukan pilihan. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa sql. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. <=> adalah cosine distance operator di pgvector. 1 - cosine_distance = cosine similarity. HNSW index memberikan approximate search yang cepat dengan akurasi tinggi.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
-- pgvector setup dan search
CREATE EXTENSION vector;
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT,
embedding vector(512),
metadata JSONB
);
-- HNSW index untuk fast search
CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops);
-- Semantic search query
SELECT content, metadata,
1 - (embedding <=> '[query-vector]') AS similarity
FROM documents
ORDER BY embedding <=> '[query-vector]'
LIMIT 5;Penjelasan Kode
Prompt AI
Setup RAG system dengan pgvector + Drizzle ORM. Implementasi: schema, indexing, search query, dan API endpoint untuk query. Bandingkan performa sebelum dan sesudah HNSW index.
Pertanyaan Reflektif
Apakah vector DB yang kamu pilih sesuai dengan skala proyekmu? Jangan pakai Pinecone untuk prototype 100 dokumen. Jangan pakai Chroma untuk production 1M dokumen.