Vector Veritabanları ve Embedding Arama Sistemleri
Vector veritabanları, yüksek boyutlu vektörlerin depolanması ve benzerlik araması için optimize edilmiş özel veritabanlarıdır. Modern AI uygulamalarının, özellikle RAG sistemlerinin, temel bileşenidir.
Vector Veritabanı Nedir?
Geleneksel veritabanları exact match sorgularına optimize edilmişken, vector veritabanları approximate nearest neighbor (ANN) aramasına odaklanır.
Temel Kavramlar
Embedding: Veri (metin, görüntü, ses) temsilinin sayısal vektör formu
"Yapay zeka" → [0.12, -0.45, 0.89, ..., 0.34] (1536 boyut)
Similarity Search: Sorgu vektörüne en yakın vektörleri bulma
query_vector → Top-K en benzer vektörler
Distance Metrics:
- Cosine Similarity: Yön benzerliği
- Euclidean Distance (L2): Geometrik uzaklık
- Dot Product: İç çarpım
Benzerlik Metrikleri Detaylı Analiz
Cosine Similarity
cos(A, B) = (A · B) / (||A|| × ||B||)
Değer aralığı: [-1, 1]
- 1: Aynı yön
- 0: Dik/ilgisiz
- -1: Zıt yön
Kullanım: Metin similarity, semantic search
Euclidean Distance (L2)
d(A, B) = √(Σ(Aᵢ - Bᵢ)²)
Değer aralığı: [0, ∞) Kullanım: Görüntü similarity, clustering
Dot Product
A · B = Σ(Aᵢ × Bᵢ)
Kullanım: Normalized embedding'ler için cosine'a eşdeğer
Indexing Algoritmaları
1. Brute Force (Flat Index)
Her sorgu için tüm vektörlerle karşılaştırma.
Karmaşıklık: O(n × d)
- n: Vektör sayısı
- d: Boyut
Avantaj: %100 doğruluk Dezavantaj: Büyük veri setlerinde çok yavaş
2. IVF (Inverted File Index)
Vektörleri cluster'lara bölerek arama alanını daraltma.
Algoritma:
- K-means ile centroid'ler oluştur
- Her vektörü en yakın centroid'e ata
- Sorguda sadece en yakın nprobe cluster'ı ara
1Parametreler: 2- nlist: Cluster sayısı (tipik: √n) 3- nprobe: Aranacak cluster sayısı 4 5Trade-off: nprobe ↑ → accuracy ↑, speed ↓
3. HNSW (Hierarchical Navigable Small World)
Graph-based yaklaşım, en popüler yöntem.
Yapı:
1Layer 2: o-------o-------o (sparse) 2 | | | 3Layer 1: o-o-o---o-o-o---o-o-o (medium) 4 | | | | | | | | | 5Layer 0: o-o-o-o-o-o-o-o-o-o-o-o (dense)
Parametreler:
- M: Her node'un maksimum bağlantı sayısı
- ef_construction: Build sırasındaki aday sayısı
- ef_search: Query sırasındaki aday sayısı
Avantajlar:
- Çok hızlı arama: O(log n)
- Yüksek recall
- Dinamik insert/delete
4. Product Quantization (PQ)
Vektörleri sıkıştırarak bellek kullanımını azaltma.
Yöntem:
- Vektörü M alt-vektöre böl
- Her alt-vektörü K centroid'den birine ata
- Orijinal vektör yerine centroid ID'lerini depola
1Orijinal: 1536 dim × 4 byte = 6KB 2PQ (M=96, K=256): 96 × 1 byte = 96 byte 3Sıkıştırma: ~64x
5. Scalar Quantization (SQ)
Float32 → Int8 dönüşümü.
1Orijinal: 1536 × 4 byte = 6KB 2SQ8: 1536 × 1 byte = 1.5KB 3Sıkıştırma: 4x
Popüler Vector Veritabanları Karşılaştırması
Pinecone
Özellikler:
- Fully managed cloud service
- Automatic scaling
- Metadata filtering
- Namespace isolation
Kullanım:
1import pinecone 2 3pinecone.init(api_key="xxx", environment="us-west1-gcp") 4index = pinecone.Index("my-index") 5 6# Upsert 7index.upsert(vectors=[ 8 {"id": "vec1", "values": [0.1, 0.2, ...], "metadata": {"category": "tech"}} 9]) 10 11# Query 12results = index.query(vector=[0.1, 0.2, ...], top_k=10, filter={"category": "tech"})
Weaviate
Özellikler:
- Open source
- Built-in vectorization
- GraphQL API
- Hybrid search (vector + keyword)
Qdrant
Özellikler:
- Rust ile yazılmış, yüksek performans
- Rich filtering
- Payload indexing
- Distributed deployment
Milvus
Özellikler:
- GPU acceleration
- Multi-vector search
- Time travel (versioning)
- Kubernetes native
ChromaDB
Özellikler:
- Developer-friendly
- In-memory + persistent
- Python-first
- Prototyping için ideal
Karşılaştırma Tablosu
| Özellik | Pinecone | Weaviate | Qdrant | Milvus |
|---|---|---|---|---|
| Hosting | Cloud | Both | Both | Both |
| Scalability | Auto | Manual | Manual | Auto |
| Hybrid Search | ✓ | ✓ | ✓ | ✓ |
| GPU Support | - | - | ✓ | ✓ |
| Pricing | Per vector | Free/Paid | Free/Paid | Free/Paid |
Filtering ve Metadata
Pre-filtering vs Post-filtering
Pre-filtering:
1. Metadata filter uygula 2. Filtrelenmiş set içinde vector search
Avantaj: Daha hızlı Dezavantaj: Potansiyel recall kaybı
Post-filtering:
11. Vector search ile top-K × multiplier sonuç bul 22. Metadata filter uygula 33. İlk K sonucu döndür
Avantaj: Daha iyi recall Dezavantaj: Daha yavaş
Hybrid Search
Keyword (BM25) + Vector search kombinasyonu:
final_score = α × vector_score + (1-α) × keyword_score
Performance Optimization
Index Parametreleri
HNSW Optimal Ayarları:
1Yüksek Recall: M=32, ef=200 2Yüksek Speed: M=16, ef=50 3Balanced: M=24, ef=100
Batch İşlemler
1# Kötü: Tek tek insert 2for vec in vectors: 3 index.upsert([vec]) 4 5# İyi: Batch insert 6index.upsert(vectors, batch_size=100)
Connection Pooling
1from pinecone import Pinecone 2 3pc = Pinecone( 4 api_key="xxx", 5 pool_threads=30 # Paralel connection 6)
Kurumsal Mimari Örneği
1┌─────────────────────────────────────────────────────┐ 2│ Application │ 3└──────────────────────┬──────────────────────────────┘ 4 │ 5┌──────────────────────▼──────────────────────────────┐ 6│ Vector Search Service │ 7│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 8│ │ Query │ │ Reranker │ │ Cache │ │ 9│ │ Engine │ │ Service │ │ (Redis) │ │ 10│ └─────────────┘ └─────────────┘ └─────────────┘ │ 11└──────────────────────┬──────────────────────────────┘ 12 │ 13┌──────────────────────▼──────────────────────────────┐ 14│ Vector Database Cluster │ 15│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 16│ │ Shard 1 │ │ Shard 2 │ │ Shard 3 │ │ 17│ └─────────┘ └─────────┘ └─────────┘ │ 18└─────────────────────────────────────────────────────┘
Monitoring ve Observability
Key Metrics
- Query Latency (p50, p95, p99)
- Recall Rate
- QPS (Queries Per Second)
- Index Size
- Memory Usage
Alerting Thresholds
1alerts: 2 - name: high_latency 3 condition: p99_latency > 200ms 4 severity: warning 5 6 - name: low_recall 7 condition: recall < 0.9 8 severity: critical
Sonuç
Vector veritabanları, modern AI uygulamalarının vazgeçilmez bileşenidir. Doğru veritabanı seçimi, indexing stratejisi ve optimizasyonlar ile yüksek performanslı semantic search sistemleri oluşturabilirsiniz.
Veni AI olarak, kurumsal vector search çözümleri sunuyoruz. İhtiyaçlarınız için bizimle iletişime geçin.
