Menjembatani database dan aplikasi AI: memahami embedding dan vector search, mengaktifkan pgvector di PostgreSQL dengan index HNSW, membangun pipeline RAG yang benar, mengenal managed vector DB seperti Pinecone, dan memanfaatkan AI untuk membantu tuning query — plus pertimbangan produksi yang sering terlewat

Setelah episode 23 mengelola biaya, episode ini menghadapi era baru: aplikasi AI (chatbot, semantic search, rekomendasi) tidak mencari dengan kata kunci persis, melainkan dengan makna. Pertanyaan "produk apa yang cocok untuk hiking" mungkin tidak mengandung kata "hiking" di deskripsi produk — tapi database harus bisa menemukannya.
Jawabannya adalah vector database: data direpresentasikan sebagai vektor numerik (embedding) sehingga kemiripan makna menjadi kemiripan jarak. Episode ini membangun fondasi vector search di PostgreSQL dengan pgvector, memetakan pipeline RAG, dan membahas kapan managed vector DB diperlukan.
Embedding adalah fungsi yang mengubah teks/gambar/audio menjadi deret angka (misal 1536 dimensi). Dua teks yang bermakna mirip menghasilkan vektor yang berdekatan secara matematis. Model seperti OpenAI text-embedding-3-small, Cohere, atau open-source seperti BGE menghasilkan embedding ini.
Kemiripan diukur dengan cosine similarity (kesamaan arah/sudut antar vektor) atau Euclidean distance (jarak). Semakin kecil jarak, semakin mirip. Di sinilah semantic search bekerja: pencarian dilakukan pada representasi makna, bukan pada karakter teks.
pgvector adalah extension PostgreSQL yang menambah tipe data vector dan operasi similarity search. Keunggulannya: data vektor hidup berdampingan dengan data relasional biasa — tidak perlu sistem terpisah, transactional, dan memakai backup, monitoring, serta access control yang sudah ada.
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE documents (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536)
);Untuk pencarian, siapkan index HNSW — graf hierarkis yang mempercepat pencarian tetangga terdekat tanpa men-scan semua baris:
CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops);Query pencarian semantic:
SELECT id, content, 1 - (embedding <=> $1) AS similarity
FROM documents
ORDER BY embedding <=> $1
LIMIT 5;Operator <=> adalah cosine distance. Kombinasi dengan filter metadata (misal WHERE tenant_id = 5) memungkinkan search yang di-scope per pengguna — sesuatu yang sulit di managed vector DB murni.
RAG (Retrieval-Augmented Generation) adalah pola dominan aplikasi AI: alih-alih melatih model, kita memberi model konteks yang relevan yang diambil dari database saat itu juga.
Alurnya: dokumen dipecah menjadi chunk, tiap chunk di-embed dan disimpan; saat ada pertanyaan, pertanyaan di-embed juga, dicari top-k chunk paling mirip, lalu chunk tersebut disisipkan ke prompt sebagai konteks. Jawaban model jadi akurat dan bisa mencantumkan sumber.
Sebagai DBA, tugas kalian bukan menulis model, tapi memastikan pipeline ini operasional: embedding pipeline yang idempotent dan bisa di-resume, kapasitas storage embedding (tiap chunk + 1536 float memakan ribuan byte), backup yang konsisten, dan observability latensi retrieval.
Important
Vector bukan pengganti full-text search — keduanya saling melengkapi. Hybrid search (misal Postgres tsvector untuk kata kunci + vektor untuk makna) memberi hasil terbaik bagi banyak aplikasi. Jangan membuang pipeline teks yang sudah jalan demi vektor saja.
Saat volume sangat besar (ratusan juta vektor) atau kalian tidak ingin mengelola sendiri, ada managed vector DB: Pinecone, Weaviate, Qdrant, Milvus. Kelebihan: skala otomatis, index yang sudah matang, dan API simpel. Pertimbangan untuk DBA:
Aturan praktis: mulai dengan pgvector (lebih sederhana, biaya rendah, satu sistem). Pindah ke managed hanya jika pgvector terbukti tidak cukup dari segi skala atau performa.
Sisi menarik lainnya: AI membantu DBA itu sendiri. Tool modern menyediakan:
Posisi DBA: AI adalah asisten, bukan pengganti. Kalian tetap harus memvalidasi saran dengan prinsip episode 6 dan 21 — AI yang menyarankan index salah justru menambah beban. Gunakan AI untuk mempercepat analisis, bukan untuk memutuskan tanpa verifikasi.
m dan ef_construction memengaruhi kualitas vs ukuran — uji dengan data nyata.Inti yang harus dibawa pulang:
Di episode 25 selanjutnya kita menggeser fokus dari transaksi ke analitik: ops untuk data warehouse — Snowflake dan BigQuery, partition dan clustering, pengelolaan metadata, hingga administrasi warehouse skala kecil. Sampai jumpa di episode 25!