pgvector: Pencarian Semantik Tanpa Menambah Infrastruktur
Setiap kali topik pencarian semantik muncul, saran pertama yang keluar selalu: pasang Pinecone, Weaviate, atau Qdrant.
Untuk kebanyakan proyek, itu menambah satu layanan lagi untuk dirawat, dibayar, dan dimonitor โ padahal PostgreSQL yang sudah jalan bisa melakukannya.
Memasang
CREATE EXTENSION IF NOT EXISTS vector;
Sebagian besar layanan Postgres terkelola sudah menyediakannya. Untuk server sendiri, satu perintah instalasi paket.
Memakainya dari Django
pip install pgvector django
from django.db import models
from pgvector.django import VectorField, HnswIndex
class Potongan(models.Model):
dokumen = models.ForeignKey("Dokumen", on_delete=models.CASCADE)
isi = models.TextField()
embedding = VectorField(dimensions=1536)
class Meta:
indexes = [
HnswIndex(
name="potongan_embedding_idx",
fields=["embedding"],
m=16,
ef_construction=64,
opclasses=["vector_cosine_ops"],
),
]
Mencari
from pgvector.django import CosineDistance
def cari_mirip(vektor_pertanyaan, jumlah=5):
return (
Potongan.objects
.annotate(jarak=CosineDistance("embedding", vektor_pertanyaan))
.order_by("jarak")[:jumlah]
)
Keunggulan yang sering diremehkan
Bisa digabung dengan filter biasa. Ini kelebihan terbesarnya. Kamu bisa mencari berdasarkan makna sekaligus menyaring dengan kolom biasa, dalam satu query.
Potongan.objects
.filter(dokumen__pemilik=request.user)
.filter(dokumen__dibuat__gte=bulan_lalu)
.annotate(jarak=CosineDistance("embedding", vektor))
.order_by("jarak")[:5]
Di vector database terpisah, hal ini biasanya berarti dua query dan penggabungan manual di sisi aplikasi.
Ikut transaksi database. Kalau penyimpanan gagal, semuanya di-rollback bersama. Tidak ada kondisi di mana dokumen tersimpan tapi embedding-nya hilang.
Ikut backup yang sudah ada. Tidak ada layanan tambahan yang perlu dicadangkan terpisah.
Kapan pgvector tidak cukup
Jujur soal batasannya: kalau kamu punya puluhan juta vektor dan butuh latensi di bawah sepuluh milidetik, vector database khusus memang lebih unggul. Mereka dibangun untuk itu.
Tapi kalau jumlahnya di bawah satu juta โ dan itu mencakup hampir semua aplikasi internal, dokumentasi produk, dan basis pengetahuan perusahaan โ pgvector cepat dan jauh lebih sederhana.
Saran praktis
Mulai dengan pgvector. Ukur. Pindah kalau memang terbukti tidak cukup. Jangan menambah layanan untuk masalah yang belum kamu miliki.
Baca Juga
Membangun AI Agent yang Benar-benar Dipakai
Kebanyakan proyek AI agent gagal bukan karena modelnya kurang pintar, tapi karena masalahnya salah pilih.
RAG: Membuat AI Menjawab dari Dokumenmu Sendiri
Model bahasa tidak tahu isi dokumen perusahaanmu. RAG adalah cara memberitahunya โ tanpa melatih ulang apa pun.
Otomasi Tanpa Coding dengan n8n: Panduan Mulai
Tidak semua otomasi layak ditulis dengan kode. Kadang seret-lepas sudah cukup โ dan jauh lebih mudah dirawat.
Komentar (0)
Belum ada komentar. Jadilah yang pertama!
Tinggalkan Komentar
Komentar akan tampil setelah disetujui.