RAG (Retrieval-Augmented Generation) ve semantik arama projeleriniz için Rust tabanlı Qdrant, Python tabanlı ChromaDB, dağıtık Milvus ve PostgreSQL pgvector motorlarını vektör boyutu, skaler kuantizasyon (INT8/Binary), RAM ayak izi ve VDS donanım maliyeti bazında hesaplayın.
Skaler Kuantizasyon (INT8), bellek tüketimini 4 kat azaltırken arama doğruluğunu (recall) %99'un üzerinde korur.
| Vektör Motoru | Mimari & Dil | RAM Gereksinimi | Disk Alanı | Sorgu Hızı (QPS) | Önerilen VDS | Durum |
|---|---|---|---|---|---|---|
Qdrant (Rust) | Rust / HNSW + On-Disk mmap + Dahili Skaler Kuantizasyon | 0.81 GB | 3.4 GB | ~450 QPS | 2 GB RAM / 1 vCPU ($5/ay) | En Düşük RAM |
ChromaDB (Python) | Python / hnswlib + SQLite (Varsayılan Kuantizasyonsuz) | 3.60 GB | 3.4 GB | ~163 QPS | 4 GB RAM / 2 vCPU ($10/ay) | Hafif / Geliştirme |
PostgreSQL 17 + pgvector | İlişkisel Veritabanı + HNSW / halfvec İndeks Eklentisi | 0.89 GB | 5.8 GB | ~238 QPS | 2 GB RAM / 1 vCPU ($5/ay) | İlişkisel + Vektör |
Milvus Standalone (Go/C++) | Dağıtık Mimari (etcd + MinIO/S3 + Pulsar/Kafka) | 5.12 GB | 8.2 GB | ~550 QPS | 8 GB RAM / 4 vCPU ($20/ay) | Ağır Dağıtık |
Qdrant, on_disk: true ile ham vektörleri NVMe diskte tutarken scalar: int8 ile kuantize edilmiş vektörleri bellekte tutar. Bu sayede 1 milyon vektör yalnızca ~1 GB RAM ile milisaniyeler içinde taranabilir.
# qdrant-docker-compose.yml - Üretim Vektör Arama Yapılandırması
services:
qdrant:
image: qdrant/qdrant:v1.12.0
restart: always
ports:
- "6333:6333" # HTTP REST API
- "6334:6334" # gRPC API
volumes:
- ./qdrant_storage:/qdrant/storage
environment:
- QDRANT__SERVICE__MAX_REQUEST_SIZE_MB=32
- QDRANT__STORAGE__PERFORMANCE__MAX_SEARCH_THREADS=0
- QDRANT__SERVICE__ENABLE_STATIC_CONTENT=false
# Koleksiyon Başlatma (Scalar Quantization & On-Disk Payload):
# POST /collections/my_rag_collection
# {
# "vectors": { "size": 1536, "distance": "Cosine", "on_disk": true },
# "quantization_config": {
# "scalar": { "type": "int8", "quantile": 0.99, "always_ram": true }
# }
# }Yapay zeka çağında LLM modelleri için embedding veritabanı kurmak, geliştiricilerin en sık karşılaştığı altyapı ihtiyaçlarından biridir. Ancak 1536 veya 3072 boyutlu yüz binlerce vektörü ham (FP32 - 4 bayt) olarak RAM'de tutmaya çalışmak, VDS sunucularında devasa bellek faturalarına (32 GB - 64 GB RAM) yol açabilir:
Her 32-bit kayan noktalı sayıyı (float32) 8-bit tam sayıya (int8) eşleyen skaler kuantizasyon, vektörlerin kapladığı RAM alanını tam 4 kat azaltır. En çarpıcı tarafı, arama doğruluğu (recall) kaybının yalnızca%0.5 - %1.0 civarında kalmasıdır.
Qdrant, Rust dilinde yazılmıştır ve bellek yönetimini işletim sisteminin mmapmekanizmasıyla mükemmel koordine eder. Kuantize vektörleri ve HNSW graf indeksini RAM'de tutarken, ham vektörleri ve metadata JSON içeriğini hızlı NVMe SSD üzerinde saklayabilir. Bu sayede 1 milyon vektör küçük bir 4 GB VDS'e sığar.
Milvus, devasa veri merkezleri için etcd, MinIO ve mesaj kuyrukları gerektiren ağır bir dağıtık mimariye sahiptir ve tek sunucuda 2-4 GB sadece arka plan süreçlerine harcar. ChromaDB prototipler için harika olsa da üretim ölçeğinde yüksek bellek tüketir. Qdrant ise tek bir ikili dosya (single binary) olarak VDS'te en dengeli çözümdür.
Eğer mevcut uygulamanız zaten PostgreSQL kullanıyorsa ve vektör aramaları doğrudan ilişkisel tablolarla (kullanıcı yetkileri, FOREIGN KEY bağlantıları, filtrelemeler) yoğun bir JOIN gerektiriyorsa, ayrı bir vektör veritabanı kurmak yerinePostgreSQL 17 + pgvector (HNSW) kullanmak operasyonel karmaşıklığı azaltır.