Vector Databases
Vector database dirancang untuk menyimpan dan mencari embedding dengan cepat. Database biasa tidak bisa melakukan nearest-neighbor search secara efisien di jutaan vektor.
Options
- pgvector — Extension PostgreSQL. Bagus jika sudah pakai PostgreSQL (satu database untuk semuanya)
- Pinecone — Managed, serverless, mudah digunakan. Bayar per query.
- Qdrant — Open-source, self-hosted atau cloud. Rust-based, cepat.
- Chroma — Open-source, developer-friendly, cocok untuk prototyping
- Weaviate — Open-source, built-in vectorization
pgvector (PostgreSQL)
-- Enable extension
CREATE EXTENSION vector;
-- Create table with vector column
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT,
embedding vector(1536) -- 1536 dimensions for text-embedding-3-small
);
-- Insert
INSERT INTO documents (content, embedding)
VALUES ('Cara membuat REST API', '[0.023, -0.041, ...]');
-- Search (cosine similarity)
SELECT content, 1 - (embedding <=> $1) AS similarity
FROM documents
ORDER BY embedding <=> $1
LIMIT 5;
Pinecone
import { Pinecone } from "@pinecone-database/pinecone";
const pc = new Pinecone();
const index = pc.index("my-app");
// Upsert vectors
await index.upsert([{
id: "doc-1",
values: embedding,
metadata: { text: "Cara membuat REST API", category: "backend" },
}]);
// Query
const results = await index.query({
vector: queryEmbedding,
topK: 5,
includeMetadata: true,
filter: { category: { $eq: "backend" } }, // metadata filtering
});
Kapan Pakai Apa?
- pgvector — Sudah pakai PostgreSQL, < 1M vectors, transactional
- Pinecone — Managed, > 1M vectors, serverless, production
- Chroma — Prototyping, local development