AI Engineering Academy · Ders

Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme

Kullanım senaryonuza uygun aracı seçmek için Pinecone, pgvector, Chroma, Weaviate ve Qdrant'ı maliyet, gecikme, süzme yetenekleri ve operasyonel karmaşıklık açısından karşılaştırın.

4. ders / 413 adım

Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

Vektör Deposu Ekosistemi

vektör veritabanları ekosistemi son birkaç yılda büyük ölçüde genişledi. Seçenekler arasında Pinecone gibi amaca yönelik bulut hizmetleri, pgvector gibi PostgreSQL eklentileri, Chroma, Qdrant ve Weaviate gibi açık kaynaklı sunucular ve FAISS gibi bellek içi kitaplıklar bulunur. Verileriniz dizinlendiğinde daha sonra geçiş yapmak maliyetli olduğundan doğru aracı seçmek önemlidir.

Değerlendirilecek Temel Boyutlar

Vektör depolarını karşılaştırırken beş boyutu değerlendirin: hedef ölçeğinizdeki sorgu gecikmesi, toplu alım için dizin oluşturma aktarım hızı, meta verilere dayalı ön filtreleme için filtreleme yetenekleri, operasyonel karmaşıklık (yönetilen veya kendi sunucunuzda barındırılan) ve depolanan ve sorgulanan milyon vektör başına maliyet. Her boyutta tek bir araç en iyi sonucu vermez.

Pinecone: Yönetilen Basitlik

Pinecone, hiçbir altyapı yönetimi gerektirmeyen, tamamen yönetilen bir bulut vektör veritabanıdır. Yüksek eşzamanlılıklı iş yüklerinde başarılıdır, yerel seyrek-yoğun hibrit arama sunar ve her ölçekte tek haneli milisaniye cinsinden tutarlı sorgular sağlar. Ödünleşim maliyettir: kendi sunucunuzda barındırılan seçeneklerden daha pahalıdır ve tüm veriler Pinecone'un bulutunda bulunduğu için sağlayıcıya bağımlılık oluşturur.

import pinecone

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

# Query with metadata filter
results = index.query(
    vector=[0.1, 0.2, 0.3],
    top_k=10,
    filter={'category': {'$eq': 'finance'}},
    include_metadata=True
)

pgvector: PostgreSQL'de Gömme İşlemleri

pgvector, PostgreSQL'i bir vector veri türüyle ve HNSW veya IVFFlat algoritmalarını kullanan yaklaşık en yakın komşu (ANN) dizinleriyle genişletir. Gömme işlemleriniz ilişkisel verilerinizle aynı veritabanında bulunduğundan ve ek altyapı gerektirmeden vektör aramasıyla yapılandırılmış filtreler arasında güçlü SQL birleştirmeleri sağladığından, PostgreSQL'i zaten çalıştırıyorsanız idealdir.

-- Create table with embedding column
CREATE TABLE documents (
    id SERIAL PRIMARY KEY,
    content TEXT,
    category TEXT,
    embedding vector(1536)
);

-- Create HNSW index for fast ANN search
CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops);

-- Query nearest neighbors with SQL filter
SELECT content, 1 - (embedding <=> '[0.1,0.2,...]')
FROM documents
WHERE category = 'finance'
ORDER BY embedding <=> '[0.1,0.2,...]'
LIMIT 10;

Chroma: Geliştirici Dostu, Önce Yerel

Chroma, hızlı prototip oluşturmak için tasarlanmış açık kaynaklı bir gömme veritabanıdır. Yerel geliştirme için işlem içinde çalışır (sunucu gerekmez) ve üretim için kalıcı sunucu kipini destekler. Aşırı basit API'si nedeniyle Chroma, LangChain eğitimlerinde popülerdir; ancak ölçek büyüdüğünde sınırlamaları vardır: dağıtık kip sunmaz ve filtreleme yetenekleri Pinecone veya Qdrant'a göre daha zayıftır.

import chromadb

client = chromadb.PersistentClient(path='./chroma_db')
collection = client.get_or_create_collection('my_docs')

# Add documents
collection.add(
    documents=['text one', 'text two'],
    metadatas=[{'source': 'doc1'}, {'source': 'doc2'}],
    ids=['id1', 'id2']
)

# Query
results = collection.query(
    query_texts=['search query'],
    n_results=5
)

Qdrant: Filtreleme ve Yük Araması

Qdrant, Rust ile yazılmış ve karmaşık meta veri filtrelemede başarılı olan açık kaynaklı bir vektör veritabanıdır. Filtreleri ANN aramasından sonra uygulayan veritabanlarının aksine Qdrant, puanlamadan önce aday vektörleri yük alanlarına göre önceden filtreler; bu da filtreler seçici olduğunda kesinliği büyük ölçüde artırır. Disk üzerindeki HNSW dizinlerini desteklediğinden RAM'e sığmayan veri kümeleri için uygundur.

from qdrant_client import QdrantClient
from qdrant_client.models import Filter, FieldCondition, MatchValue

client = QdrantClient(url='http://localhost:6333')

# Search with payload filter
results = client.search(
    collection_name='documents',
    query_vector=[0.1, 0.2, 0.3],
    query_filter=Filter(
        must=[
            FieldCondition(
                key='category',
                match=MatchValue(value='finance')
            )
        ]
    ),
    limit=10
)

Weaviate: GraphQL ve Çok Modluluk

Weaviate, kendine özgü bir GraphQL API'sine ve çok modlu nesneler (metin, görseller, ses) için yerleşik desteğe sahip açık kaynaklı bir vektör veritabanıdır. Modüller aracılığıyla gömme modeli sağlayıcılarıyla doğrudan bütünleşir; böylece ham metni alabilir ve gömme API'sini otomatik olarak çağırması için Weaviate'a bırakabilirsiniz. Bu kolaylık, Chroma veya Qdrant'a kıyasla daha karmaşık bir kurulum maliyetiyle gelir.

import weaviate

client = weaviate.Client('http://localhost:8080')

# Near-text search using built-in vectorizer
result = client.query.get(
    'Document', ['content', 'category']
).with_near_text(
    {'concepts': ['financial analysis']}
).with_where({
    'path': ['category'],
    'operator': 'Equal',
    'valueString': 'finance'
}).with_limit(10).do()

FAISS: Büyük Ölçekte Bellek İçi Çalışma

FAISS (Facebook AI Similarity Search), son derece hızlı bellek içi vektör araması sağlayan ve Python bağlamalarına sahip bir C++ kitaplığıdır. Bir veritabanı değildir (kalıcılık veya sunucu içermez); ancak GPU hızlandırmasıyla tek bir makinede milyarlarca ölçekli benzerlik aramasını gerçekleştirebilir. Tüm yığını kontrol ettiğiniz, okuma ağırlıklı ve çevrim dışı toplu arama iş yükleri için doğru seçim FAISS'tir.

import faiss
import numpy as np

dimension = 1536
vectors = np.random.random((100000, dimension)).astype('float32')

# Normalize for cosine similarity
faiss.normalize_L2(vectors)

# Build HNSW index
index = faiss.IndexHNSWFlat(dimension, 32)  # M=32 neighbors
index.add(vectors)

# Search
query = np.random.random((1, dimension)).astype('float32')
faiss.normalize_L2(query)
D, I = index.search(query, k=10)  # top-10 results

Karşılaştırma Testi Oluşturma

Güvenle seçim yapmanın tek yolu kendi verilerinizle karşılaştırma yapmaktır. İyi bir karşılaştırma şunları ölçer: (1) tam veri kümeniz için dizin oluşturma süresi, (2) eşzamanlı yük altında p50, p95 ve p99 yüzdelik dilimlerindeki sorgu gecikmesi, (3) ANN sonuçlarının kaba kuvvetle elde edilen kesin sonuçlarla karşılaştırıldığı recall@K ve (4) hedef ölçeğinizde bellek ve maliyet. Aynı sorguları her aday depoda çalıştırın.

import time
import numpy as np

def benchmark_store(store, queries, k=10):
    latencies = []
    for q in queries:
        start = time.perf_counter()
        store.search(q, k)
        latencies.append(time.perf_counter() - start)
    latencies.sort()
    n = len(latencies)
    print(f'p50: {latencies[n//2]*1000:.1f}ms')
    print(f'p95: {latencies[int(n*0.95)]*1000:.1f}ms')
    print(f'p99: {latencies[int(n*0.99)]*1000:.1f}ms')

Geri Çağırma Oranı ve Gecikme Ödünleşimini Ölçme

ANN dizinleri hız karşılığında geri çağırma oranından ödün verir. Daha yüksek bir HNSW ef_search parametresi daha isabetli komşular bulur ancak daha uzun sürer. Farklı parametre ayarlarında recall@10 değerini (gerçek en iyi 10 komşunun ne kadarının döndürüldüğünü) ölçün ve geri çağırma oranını gecikmeye karşı grafiğe dökün. Çoğu üretim sistemi %95-99 geri çağırma oranını hedefler. Geri çağırma oranının %90'ın altına düşmesi, sorgular hızlı olsa bile kullanıcıların ilgisiz parçalar alması anlamına gelir.

def compute_recall(approx_ids, exact_ids):
    '''Compute recall@K for one query'''
    return len(set(approx_ids) & set(exact_ids)) / len(exact_ids)

def benchmark_recall(index, brute_force, queries, k=10):
    recalls = []
    for q in queries:
        approx = index.search(q, k)
        exact = brute_force.search(q, k)
        recalls.append(compute_recall(approx, exact))
    print(f'Mean recall@{k}: {sum(recalls)/len(recalls):.3f}')

Seçim İçin Karar Çerçevesi

Bu karar ağacını kullanın: sıfır altyapı yönetimine ihtiyacınız varsa ve bütçe kısıtlı değilse Pinecone'u seçin. PostgreSQL'i zaten çalıştırıyorsanız ve veri kümeniz 10 milyon vektörün altındaysa pgvector ekleyin. Karmaşık yük filtrelemeli, açık kaynaklı ve kendi sunucunuzda barındırılan bir çözüm için Qdrant'ı seçin. Hızlı prototip oluşturma ve yerel geliştirme için Chroma ile başlayın ve daha sonra geçiş yapın. Milyarlarca ölçekli çevrim dışı toplu işler için FAISS kullanın.

Hızlı Kontrol

Bu dersteki Yapay Zekâ Mühendisliği kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: Pinecone, pgvector, Chroma, Qdrant, Weaviate ve FAISS'i içeren vektör depoları ekosistemi; gecikme, aktarım hızı, filtreleme, karmaşıklık ve maliyetten oluşan beş değerlendirme boyutu ve altyapınız ile ölçek gereksinimlerinize göre doğru depoyu seçmenizi sağlayan uygulamalı bir karar çerçevesi. Sırada, RAG'in çözmek için geliştirildiği problemi inceleyeceğiz.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme” dersi ücretsiz mi?

Evet — “Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme” dersinde ne öğreneceğim?

Kullanım senaryonuza uygun aracı seçmek için Pinecone, pgvector, Chroma, Weaviate ve Qdrant'ı maliyet, gecikme, süzme yetenekleri ve operasyonel karmaşıklık açısından karşılaştırın. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Neden Vektör Veritabanına İhtiyacınız Var
  2. Pinecone ile Başlangıç
  3. pgvector: PostgreSQL'de Gömme
  4. Vektör Depolarını Seçme ve Karşılaştırmalı Ölçme
← AI Engineering Academy Sayfasına Dön