AI Sözlüğü
Orta· ~2 dk okuma#vector-db#rag#search

Vektör Veritabanı

Vector Database

Vektörleri saklayıp anlam yakınlığına göre çok hızlı arama yapan özelleşmiş veritabanı.

VEKTÖR DB'DE SAKLANIRANAHTAREMBEDDINGBOYUTcat[0.21, -0.45, 0.78, …]1536dog[0.18, -0.41, 0.81, …]1536car[-0.62, 0.33, -0.05, …]1536sun[0.04, 0.92, 0.11, …]1536milyonlarca vektörde en yakını milisaniyede bulur
Tanım

Klasik bir DB satırlardan oluşur ve eşitlikle arar (WHERE name = 'X'). Vektör DB ise vektörleri saklar ve "bu vektöre en yakın 10 tanesi hangileri?" sorusuna milisaniyelerde cevap verir — milyonlarca vektör arasında bile.

Bunu ANN (Approximate Nearest Neighbors — yaklaşık en yakın komşu) algoritmalarıyla yapar: HNSW, IVF, ScaNN. Tam doğru sonucu garanti etmez (yaklaşıktır) ama 100 kat daha hızlıdır. Çoğu kullanım için bu uzlaşı makul.

Popüler seçenekler: Pinecone (yönetilen servis), Weaviate, Qdrant, Chroma (kendin barındır), pgvector (Postgres eklentisi), Milvus, LanceDB. Vektör + meta veri filtreleme ile hibrit aramalar yapabilirsin.

Benzetme

Kitap kütüphanesini düşün. Klasik DB = alfabetik raf (tam başlık biliyorsan hızlı). Vektör DB = "bu kitaba konu olarak benzer kitaplar" rafı — anahtar kelime değil, anlam üzerinden bulur. Üstelik 1 milyon kitabı saniyede tarar.

Gerçek dünyadan örnek

Bir girişimin dahili destek dokümantasyonu var: 5000 wiki sayfası, eğitim videosu transkriptleri, eski destek talepleri. Yeni bir destek botu kuruyorsun: 1. Tüm içeriği parçalara böl, embed et. 2. Vektörleri Qdrant'a yükle (200K vektör, ~5 GB). 3. Çalışan "VPN bağlantı sorunu" yazınca: sorgu vektörlenir, Qdrant en yakın 10 parçayı 50 ms'de döner. 4. Bu parçalar LLM'e bağlam olarak verilir.

Postgres'le bunu denersen tam metin araması 2 saniye sürer ve sonuçlar daha az alakalı olur.

Ne zaman kullan
  • RAG sisteminin arama (retrieval) katmanı
  • Anlamsal arama
  • Öneri motorları (kullanıcı/ürün vektör eşleştirmesi)
  • Anomali tespiti (kümelerin dışındaki vektörler)
  • Görsel ya da ses benzerliği araması
Ne zaman kullanma
  • Sadece tam eşleşme arıyorsan — Postgres/MySQL daha basit
  • 100K'dan az vektör — pgvector ya da bellek içi FAISS yeter, ayrı DB gereksiz
  • Sıkı işlemsel (transactional) garanti gerekiyorsa — vektör DB'ler genelde nihai tutarlılık (eventual consistency) sunar
Sık yapılan hatalar

Sadece benzerliğe güvenmek

İlk 10 sonuç kullanıcı için her zaman doğru olmayabilir. Yeniden sıralama (reranking — cross-encoder) ekleyip sonuçları daha hassas sırala.

Meta veri filtrelemesini atlamak

1M vektörden ilk 10'u al, sonra WHERE user_id = X filtrele — yanlış. Önce filtrele, sonra benzerlik hesapla. Aksi halde başka kullanıcının verisi sızabilir.

İndeks maliyetini hafife almak

HNSW indeksi 1M vektör için 30 dakika + 10 GB RAM ister. Bunu canlı sistemde yapma, toplu güncelleme (batch update) planla.