Selam arkadaşlar! Bugün AI dünyasının en yeni topic’lerinden birini konuşacağız: Vector Database. ChatGPT, GitHub Copilot, Google’ın semantic search’ü… Hepsinin arkasında vector database’ler var. Geleneksel veritabanları neden yetersiz kalıyor? Vector database’ler bu sorunu nasıl çözüyor? Gelin birlikte bakalım!
Problem: Anlamsal Benzerlik
Klasik veritabanlarında “SELECT * FROM products WHERE name = ‘laptop’” yazarsınız. Exact match arar, “laptop” kelimesini bulur. Ama ya kullanıcı “notebook” yazdıysa? Ya da “portable computer”? Klasik database bunların aynı şey olduğunu anlamaz!
İşte vector database’ler bu problemi çözüyor. “Laptop”, “notebook”, “portable computer” - bunların hepsi vector space’te birbirine yakın noktalar.
Vector Nedir Bu Bağlamda?
AI dünyasında vector, bir şeyin matematiksel temsili. Bir kelime, cümle, görüntü, ses… Her şey vector’e (embedding’e) dönüştürülebilir.
Örneğin “kedi” kelimesi [0.2, -0.5, 0.8, …] gibi 768 boyutlu bir vector olabilir. “Köpek” de başka bir vector. Ve bu iki vector matematiksel olarak birbirine yakın! Çünkü ikisi de evcil hayvan.
Bu vector’ları kim üretiyor? Embedding model’ler! OpenAI’ın text-embedding-ada, Google’ın Universal Sentence Encoder, Facebook’un FAISS… Bunlar text’i vector’e çeviriyor.
Geleneksel Database vs Vector Database
Geleneksel Database:
- Structured data (tablo, satır, sütun)
- Exact match queries
- SQL ile sorgulama
- B-tree, Hash index kullanır
Vector Database:
- Unstructured data’yı vector olarak saklar
- Similarity search (en yakın komşular)
- Vector operations (cosine similarity, Euclidean distance)
- Special index yapıları (HNSW, IVF, LSH)
Nasıl Çalışır?
Vector database’in çalışma mantığı şöyle:
- Embedding Generation: Raw data’yı (text, image) embedding model’e verirsiniz, vector alırsınız
- Indexing: Vector’ları özel index yapılarıyla organize eder
- Query: Arama yaparken, query’yi de vector’e çevirirsiniz
- Similarity Search: Query vector’üne en yakın K tane vector’ü bulur
- Return Results: En benzer sonuçları döner
Mesela “AI hakkında makale” arıyorsunuz. Bu text vector’e çevrilir, database’de buna en yakın vector’lar (yani en alakalı makaleler) bulunur.
Index Yapıları
Milyonlarca vector içinde nasıl hızlı arama yapılıyor? Özel index yapıları sayesinde:
HNSW (Hierarchical Navigable Small World): Graph-based index. Çok hızlı ama memory intensive.
IVF (Inverted File Index): Vector’lero cluster’lara böler. Önce hangi cluster’da olabileceğine bakar.
LSH (Locality Sensitive Hashing): Hash fonksiyonlarıyla benzer vector’lero aynı bucket’a koyar.
Flat Index: Brute force - tüm vector’lerle karşılaştırır. Yavaş ama %100 dogru.
Similarity Metrics
İki vector’ün ne kadar benzer olduğunu nasıl ölçüyoruz?
Cosine Similarity: İki vector arasındaki açıyı ölçer. Text embedding’ler için popüler.
Euclidean Distance: Düz mesafe. Görüntü işlemede yaygın.
Dot Product: Hızlı hesaplama. Normalized vector’lar için cosine similarity ile aynı.
Manhattan Distance: L1 distance. Bazı özel durumlar için kullanılır.
Popüler Vector Database’ler
Pinecone: Cloud-native, fully managed. Kolay kullanım, auto-scaling.
Weaviate: Open source, GraphQL support, multi-modal.
Qdrant: Rust ile yazılmış, yüksek performans, on-premise deployment.
Milvus: Open source, mature, büyük scale için optimize.
ChromaDB: Lightweight, developer-friendly, Python-first.
pgvector: PostgreSQL extension. Mevcut Postgres setup’ınıza ekleyin.
Vector Database + LLM
LLM’lerin (ChatGPT gibi) en büyük problemi: Hallucination ve outdated knowledge. Vector database’ler bu problemi çözüyor!
RAG Pattern:
- User sorusu vector’e çevrilir
- Vector DB’den relevant document’lar bulunur
- Bu document’lar LLM’e context olarak verilir
- LLM, bu context’le accurate cevap üretir
Örnek: “Şirketimizin 2023 geliri neydi?” sorusu için, vector DB’den 2023 finansal raporu bulunur, LLM’e verilir, doğru cevap üretilir.
Ne Zaman Vector Database Kullanmalı?
Kullanın eğer:
- Semantic search yapacaksanız
- Recommendation system kuruyorsanız
- LLM’e context sağlayacaksanız
- Unstructured data’yı searchable yapacaksanız
- Similarity-based operations gerekiyorsa
Kullanmayın eğer:
- Sadece exact match yeterliyse
- Structured data ve SQL yeterliyse
- Real-time transaction gerekiyorsa
- Strong consistency şartsa
Sonuç
Vector database’ler, AI çağının kaçınılmaz bir parçası. Semantic search, RAG, recommendation systems… Hepsi vector database’lere dayanıyor.
Geleneksel database’ler ölmedi tabii ki - structured data için hala en iyiler. Ama unstructured data (text, image, audio) söz konusu olduğunda, vector database’ler rakipsiz.
Benim tavsiyem: Hemen production’a geçmeyin ama mutlaka deneyin. pgvector ile PostgreSQL’inizde başlayın, concept’i anlayın. Sonra use case’inize göre dedicated solution’lara bakın.