Vektör Veritabanı RAG Embedding Pinecone Chroma Weaviate Yapay Zeka

Vektör Veritabanı Nedir? Pinecone, Chroma ve Weaviate Karşılaştırması

person Yapay Zeka Uzmanı

Yüzlerce şirket belgeniz var. Kullanıcı “geçen yıl imzalanan tedarikçi sözleşmesindeki iade koşulları ne?” diye soruyor. Klasik bir SQL veritabanıyla bu soruyu yanıtlamak neredeyse imkânsız: hangi tabloya bakacaksınız, hangi sütunu sorgulayacaksınız? WHERE text LIKE '%iade%' sorgusu belki yüzlerce belge döndürecek, hiçbirinin öncelik sırası olmayacak ve kullanıcının asıl kastettiği belge muhtemelen listenin altında kaybolacak.

İşte bu noktada vektör veritabanları devreye giriyor. RAG (Retrieval-Augmented Generation) mimarisinin kalbi olan bu veritabanları, metnin anlamını sayısal koordinatlara dönüştürüp milisaniyeler içinde en ilgili belgeleri bulmanızı sağlıyor. Bu depoyu bir ajanın “uzun vadeli hafızası” olarak konumlandırmak istersen sıfırdan AI ajan yapımı rehberindeki memory katmanı bağlamı tamamlıyor.

Vektör uzayında anlamsal olarak kümelenmiş renkli veri noktaları — vektör veritabanı görselleştirmesi

Vektör Veritabanı Nedir?

Bir vektör veritabanı, verileri satır-sütun yerine çok boyutlu sayısal vektörler olarak saklayan ve bu vektörler arasında anlamsal benzerlik sorgulayan özel bir veritabanı türüdür.

Anlamamıza yardımcı olacak bir benzetme: Geleneksel veritabanını büyük bir kütüphanenin kartoteks sistemi gibi düşünün. Her şeyin tam adresini bilmeniz gerekiyor; “Osmanlı tarihiyle ilgili ama şiir de içeren, 1950’den önce yazılmış kitapları bul” gibi karma bir isteği kartotekse soramazsınız. Vektör veritabanı ise kütüphanecinin tır, içeriği anlıyor, niyet okuyor ve “bence şunu arıyorsunuz” diyebiliyor.

Teknik olarak şöyle çalışır:

  1. Metnin anlamı embedding’e dönüştürülür: OpenAI, Cohere veya açık kaynak bir embedding modeli metni binlerce boyutlu bir sayı dizisine çevirir. “Köpek” ve “pati” kelimeleri bu uzayda birbirine yakın koordinatlara düşer; “köpek” ve “muhasebe” ise uzak olur.
  2. Bu vektörler veritabanında saklanır: Her belge parçası (chunk) kendi vektörüyle birlikte depolanır.
  3. Sorgu da vektöre çevrilir: Kullanıcının sorusu aynı model tarafından vektöre dönüştürülür.
  4. En yakın komşular bulunur: Veritabanı, sorgu vektörüne en yakın belge vektörlerini döndürür.

Bu “yakınlık” ölçümü genellikle cosine similarity (iki vektör arasındaki açı) veya Öklid mesafesi ile yapılır. Cosine similarity pratikte daha yaygındır; çünkü vektörün büyüklüğünü değil yönünü karşılaştırdığından kısa ve uzun metinler arasındaki anlam benzerliğini daha iyi yakalar.

HNSW: Milyonlarca Vektör Arasında Nasıl Bu Kadar Hızlı?

Ham kuvvetle her vektörü diğeriyle karşılaştırmak O(n) karmaşıklığında olurdu, milyonlarca kayıt için kabul edilemez. Modern vektör veritabanları bunun yerine HNSW (Hierarchical Navigable Small World) gibi ANN (Approximate Nearest Neighbor) algoritmalarını kullanır.

HNSW, şehir haritaları gibi katmanlı bir navigasyon grafiği inşa eder: üst katmanda otoyollar var, en alta inildikçe sokak detayına ulaşılıyor. Arama önce üst kattan başlayıp hızla doğru bölgeye iner, sonra ince detayda çalışır. Sonuç: milisaniyeler içinde milyonlarca vektör arasında %95+ doğrulukta arama.

SQL veritabanı (satır-sütun tablo yapısı) ile vektör veritabanı (çok boyutlu uzayda benzerlik araması) karşılaştırması

Neden RAG için Vektör Veritabanı Şart?

RAG (Retrieval-Augmented Generation) mimarisi şöyle çalışır: kullanıcı bir soru sorar, sistem bu soruyla ilgili belgeleri bir bilgi tabanından çeker ve LLM bu belgeler bağlamında yanıt üretir. Peki bu “çekme” adımı nasıl gerçekleşir?

Keyword search yetmiyor. “Fesih maddesindeki cezai şart” gibi bir soruyu BM25 veya ElasticSearch gibi anahtar kelime arama motorlarıyla bulabilirsiniz, ama ancak belgede aynen “cezai şart” yazıyorsa. Belge “tazminat yükümlülüğü” diyorsa, sistem bu bağlantıyı kuramaz. Anlamsal arama bu sorunu çözer.

LLM context window kısıtlı. GPT-4 veya Claude’a tüm belge arşivini vermek mümkün değil; context window’a sığmaz, sığsa bile maliyet patlıyor. Vektör veritabanı burada filtre görevi görür: soruyla ilgili en önemli 5-10 belge parçasını çeker, LLM sadece bunlarla çalışır. Bu hem hızı artırır hem maliyeti düşürür hem de yanıt kalitesini yükseltir.

Tipik RAG pipeline şöyle görünür:

Belge → Parçalara böl (chunk) → Embedding üret → Vektör DB'ye kaydet
Kullanıcı sorusu → Embedding üret → Vektör DB'de ara → En yakın N chunk → LLM → Yanıt

RAG’ı daha derin anlamak isterseniz: RAG nedir, nasıl çalışır?

3 Popüler Vektör Veritabanı Karşılaştırması

Ekosistemde onlarca seçenek var (Qdrant, Milvus, pgvector, Redis Vector…), ama üç isim sürekli öne çıkıyor: Pinecone, Chroma ve Weaviate. Her biri farklı bir kullanım profili için optimize edilmiş.

Pinecone, Yönetilen Bulut Çözümü

Pinecone, “veritabanını yönetmek istemiyorum, sadece kullanmak istiyorum” diyen geliştirici için yapılmış tam yönetimli (managed) bir hizmet.

Nasıl çalışır: Bir API anahtarı alıyorsunuz, index oluşturuyorsunuz, vektörlerinizi gönderiyorsunuz. Sunucu kurulumu, ölçeklendirme, yedekleme, hiçbirini düşünmüyorsunuz.

import pinecone

pc = pinecone.Pinecone(api_key="YOUR_API_KEY")
index = pc.Index("my-index")

# Vektör ekle
index.upsert(vectors=[
    {"id": "doc1", "values": [0.1, 0.2, ...], "metadata": {"text": "belge içeriği"}}
])

# Sorgula
results = index.query(vector=[0.1, 0.3, ...], top_k=5, include_metadata=True)

Ücretsiz katman: 1 index, 100.000 vektör, 5 GB depolama. Küçük projeler için yeterli; büyüyünce pod-based veya serverless planlara geçiş yapılıyor.

Serverless vs Pod-based: Pinecone’un yeni serverless mimarisi kullandığın kadar öde modeliyle çalışıyor; pod-based ise sabit kapasiteli özel cluster’lar sunuyor. Yüksek ve öngörülemeyen trafikte serverless avantajlı, düşük gecikme gerektiren uygulamalarda pod-based tercih edilebilir.

Güçlü yönler: Operasyonel yük sıfır, global replikasyon, enterprise-grade SLA, LangChain/LlamaIndex ile native entegrasyon.

Zayıf yönler: Vendor lock-in (verileriniz Pinecone altyapısında), ücretsiz katman limitleri, self-host seçeneği yok, aylık maliyet büyüyebilir.

Kim için: Prodüksiyona hızlı çıkmak isteyen startuplar, DevOps kaynağı olmayan küçük ekipler, AI özelliğini SaaS ürününe entegre edenler.


Chroma, Açık Kaynak, Yerel Geliştirme Odaklı

Chroma, “şu an prototip yapıyorum, buluta çıkmak istemiyorum, sadece çalışsın” diyen geliştirici için en doğal seçim.

Kurulum: İki satır.

pip install chromadb
import chromadb

client = chromadb.Client()  # in-memory modu
# veya
client = chromadb.PersistentClient(path="./chroma_db")  # disk modu

collection = client.create_collection("belgelerim")

# Metin ekle — embedding otomatik üretiliyor
collection.add(
    documents=["RAG nedir", "Vektör veritabanı nasıl çalışır"],
    ids=["doc1", "doc2"]
)

# Sorgula
results = collection.query(query_texts=["anlamsal arama"], n_results=2)

Dikkat edin: Chroma varsayılan olarak embedding’i kendi üretiyor (Sentence Transformers ile). OpenAI embedding’i kullanmak istiyorsanız ek yapılandırma gerekiyor.

Üç mod: In-memory (program kapandığında veri kaybı), persistent (diske kayıt), HTTP server (FastAPI sunucusu olarak çalışır, uzaktan bağlanılır).

LangChain/LlamaIndex entegrasyonu: Chroma her iki framework’te de birinci sınıf vatandaş; örnekler doğrudan Chroma kullanıyor.

Güçlü yönler: Tamamen ücretsiz ve açık kaynak, internet bağlantısı gerektirmez, prototip için sıfır sürtünme, yerel AI kurulumlarıyla mükemmel uyum.

Zayıf yönler: Büyük ölçekli prodüksiyonda performans ve yönetim zorlukları, enterprise destek yok, Pinecone veya Weaviate’in ileri özelliklerinden yoksun (hibrit arama, gelişmiş filtreleme).

Kim için: Öğrenciler, araştırmacılar, yerel RAG deneyleri, prototip aşaması, Ollama ile yerel LLM kullanan gizlilik odaklı projeler.


Weaviate, Açık Kaynak + Prodüksiyon Hazır

Weaviate, Chroma’nın esnekliği ile Pinecone’un ölçeğini birleştirmeye çalışan açık kaynak bir vektör veritabanı.

Kurulum seçenekleri: Docker ile lokal, Kubernetes ile kendi sunucunda, ya da Weaviate Cloud (managed).

# Docker ile hızlı başlangıç
docker run -p 8080:8080 semitechnologies/weaviate
import weaviate

client = weaviate.connect_to_local()

# Schema oluştur
client.collections.create(
    name="Belge",
    vectorizer_config=weaviate.Configure.Vectorizer.text2vec_openai()
)

# Nesne ekle
collection = client.collections.get("Belge")
collection.data.insert({"content": "Vektör veritabanı anlamsal arama sağlar"})

# Hybrid search (BM25 + vektör)
results = collection.query.hybrid(
    query="anlamsal arama nasıl çalışır",
    limit=5
)

Weaviate’in öne çıkan özellikleri:

  • Hibrit arama: BM25 keyword search ve vektör aramasını tek sorguda birleştiriyor. Hem tam kelime eşleşmesini hem de anlamsal benzerliği değerlendiriyor, tek başına her birinden daha iyi sonuçlar çıkıyor.
  • Multi-modal: Metin ve görsel vektörlerini aynı collection’da saklayabiliyorsunuz.
  • Yerleşik modüller: text2vec-openai, text2vec-cohere, text2vec-huggingface gibi modüller embedding üretimini otomatikleştiriyor.
  • GraphQL API: Karmaşık ilişkisel sorgular için güçlü bir seçenek.
  • Filtreleme: Vektör aramasını metadata filtreleriyle birleştirmek son derece esnek.

Güçlü yönler: Self-host edilebilir (veri egemenliği), hibrit arama, çok zengin API, enterprise-grade özellikler açık kaynak olarak.

Zayıf yönler: Chroma’ya kıyasla daha karmaşık kurulum ve yapılandırma, öğrenme eğrisi dik, küçük projeler için fazla kapsamlı hissettiriyor.

Kim için: Orta ve büyük ölçekli prodüksiyon sistemleri, veri egemenliği önemli olan kurumlar, hibrit arama ihtiyacı olanlar.


Karşılaştırma Tablosu

ÖzellikPineconeChromaWeaviate
FiyatÜcretsiz tier + ücretliTamamen ücretsizAçık kaynak ücretsiz / Cloud ücretli
Self-hostHayırEvetEvet
KurulumAPI key → çalışırpip install → çalışırDocker / Kubernetes
ÖlçeklenebilirlikÇok yüksek (managed)Düşük-ortaYüksek (kendi altyapında)
Hibrit aramaKısmiHayırEvet (BM25 + vektör)
LangChain entegrasyonuNativeNativeNative
Multi-modalHayırHayırEvet
Öğrenme eğrisiDüşükÇok düşükOrta-yüksek

Hangisini Seçmeliyim?

Doğru seçim kullanım senaryonuza bağlı. Karar ağacı şöyle:

→ Prototip yapıyor veya öğreniyorsanız: Chroma Hızlı başlayın, fikir doğrulayın, ölçek endişesi olmadan deneyin. LangChain veya LlamaIndex üzerinden çalışan tüm resmi RAG tutorial’ları Chroma kullanıyor, topluluğun yardımına kolayca ulaşırsınız.

→ Prodüksiyona hızlı çıkmak istiyorsanız ve operasyon ekibiniz yoksa: Pinecone Ücretsiz tier ile başlayın, trafik arttıkça scale edin. Serverless mimarisi ile ani yük artışlarını yönetmek zorunda kalmıyorsunuz. SLA garantisi önemli olan B2B ürünler için mantıklı seçim.

→ Büyük ölçek + self-host + hibrit arama istiyorsanız: Weaviate Verilerinizin kendi sunucunuzda kalması gerekiyorsa (finans, sağlık, savunma), Weaviate’in self-host seçeneği kritik. Aynı zamanda hem tam kelime eşleşmesi hem anlamsal arama gerektiren uygulamalar için hibrit arama vazgeçilmez.

→ Yerel AI + gizlilik öncelikliyse: Chroma + Ollama İnternet bağlantısı olmadan çalışan, tamamen yerel bir RAG sistemi kurmak için Ollama ile yerel LLM ve Chroma kombinasyonu en pratik çözüm. Embedding de yerel model (örn. nomic-embed-text) ile üretilebilir, hiçbir veri dışarı çıkmaz.

Maliyet perspektifi: 1 milyon vektör için Pinecone serverless yaklaşık $70-100/ay tutabilir. Aynı yük için bir sunucuda Weaviate çalıştırmak $20-30/ay’a gelebilir, ama operasyon maliyetini hesaba katmayı unutmayın.

Sonuç

Vektör veritabanları, yapay zeka uygulamalarının vazgeçilmez bir parçası haline geldi. RAG pipeline’ı kurmak istiyorsanız, doğru veritabanı seçimi hem maliyet hem performans hem de geliştirme hızını doğrudan etkiliyor.

Üç araç arasındaki fark şu şekilde:

  • Chroma ile 30 dakikada çalışan bir prototip yaparsınız.
  • Pinecone ile operasyonel yük olmadan prodüksiyona çıkarsınız.
  • Weaviate ile kurumsal ölçekte kendi altyapınızda büyük bir sistem inşa edersiniz.

Embedding kavramını derinlemesine anlamak, hangi embedding modelini seçeceğinize karar vermenize de yardımcı olacaktır. Yapay zeka terimleri sözlüğümüzde tüm temel kavramları bulabilirsiniz. RAG mimarisinin tüm adımlarını öğrenmek için de rehber yazımıza göz atın.

Sonraki adım

Vektör veritabanı seçtikten sonra ekosistemin geri kalanını şu kaynaklarla tamamlayabilirsin: