Vector Database
Vektör veritabanı, gömmeleri kimlikler ve üst verilerle birlikte saklar ve hızlı en yakın komşu araması için dizinler; RAG ve görsel aramanın erişim katmanıdır.
Bir vektör veritabanı, modellerin metin, görüntü, ses veya video için ürettiği sayısal vektörler olan gömüleri, her öğenin kimliği ve meta verileriyle birlikte saklar ve milyonlarca ya da milyarlarca öğe arasında "saklanan hangi vektörler buna en yakın?" sorgusunu milisaniyeler içinde yanıtlar. Bir vektör arama dizinini veritabanı özellikleriyle birleştirir: ekleme, güncelleme ve silme işlemleri, meta verilere göre filtreleme, kalıcılık, erişim denetimi ve makineler arasında çoğaltma. Vektör veritabanları, getirim destekli üretim (RAG), anlamsal arama ve öneri sistemlerinin getirim adımını sağlar.
Vektör Veritabanı Nasıl Çalışır#
Yazma yolunda, veritabanının dışında çalışan veya veritabanına yerleşik bir gömme modeli her öğeyi bir vektöre dönüştürür; veritabanı da bu vektörü kaynak dosya, tarih, kamera veya müşteri gibi meta veri yüküyle birlikte saklar. Bir sorguyu saklanan tüm vektörlerle karşılaştırmak kesin sonuç verir, ancak büyük ölçekte yavaştır; bu nedenle veritabanı yaklaşık en yakın komşu (ANN) dizini oluşturur. HNSW, her vektörü katmanlı bir grafikte yakın komşularına bağlar ve arama bu grafikte açgözlü biçimde ilerler; ters dosya (IVF) dizinleri, vektörleri k-means kümeleme ile gruplandırır ve yalnızca sorguya en yakın kümeleri tarar; vektör niceleme yöntemleri ise ürün niceleme gibi yöntemlerle her vektörü birkaç bayta sıkıştırır. Okuma yolunda sorgu aynı modelle gömülür ve kosinüs benzerliği, nokta çarpımı veya Öklid uzaklığı gibi bir ölçütle karşılaştırılır. Veritabanı, çok sayıda sistemin hibrit aramada anahtar sözcük sonuçlarıyla birleştirdiği ilk k ID'yi, puanları ve yükleri döndürür.
Bu örnekte, bir Python sürecinin içinde bellekte çalışan açık kaynaklı bir vektör veritabanı olan Chroma kullanılıyor:
import chromadb
# Bellek içi istemci; chromadb.PersistentClient(path="db") verileri diskte tutar
client = chromadb.Client()
collection = client.create_collection("inspection_notes")
# Chroma, her belgeyi varsayılan gömme modeliyle gömer ve vektörleri dizinler
collection.add(
ids=["n1", "n2", "n3"],
documents=[
"Hairline crack found near the weld on bracket B7",
"Paint scratch on the left door panel",
"Porosity in the weld seam of the frame rail",
],
metadatas=[{"line": "A"}, {"line": "B"}, {"line": "B"}],
)
# Tek bir üretim hattıyla sınırlandırılmış en yakın komşu araması
results = collection.query(query_texts=["welding defects"], n_results=1, where={"line": "B"})
print(results["ids"][0], results["documents"][0])Sorgu, B hattındaki kaynak gözenekliliğini anlatan n3 notunu döndürür. Meta veri filtresi, A hattındaki çatlak notunu değerlendirme dışı bırakır; oysa bu notun metni de "kaynak kusurları" ifadesine aynı derecede yakındır.
Vektör Veritabanları ve İlgili Sistemler#
- FAISS gibi vektör arama kütüphaneleri: HNSW, IVF ve ürün niceleme dahil olmak üzere sunucu, meta veri depolama veya çoğaltma gerektirmeyen süreç içi dizinler. Bazı vektör veritabanları bu kütüphaneler üzerine kuruludur.
- Amaca özel vektör veritabanları: Yönetilen hizmet olarak Pinecone; baştan gömüler için tasarlanmış açık kaynaklı projeler olarak Milvus, Qdrant, Weaviate ve Chroma.
- pgvector gibi vektör eklentileri: PostgreSQL'e HNSW ve IVFFlat dizinleriyle vektör sütunları ekleyerek gömülerin ilişkisel verilerin yanında tutulmasını sağlar. Elasticsearch, OpenSearch, MongoDB Atlas ve Redis de anahtar sözcük aramalarının yanında benzer vektör alanları sunar.
- Özellik depoları: Eğitim ve çıkarım için model girdi özelliklerini varlık anahtarına göre sunar. Kayıtları benzerliğe göre değil, kimliğe göre arar.
- Veri gölleri: Vektör veritabanının kimlik veya yol üzerinden başvurduğu görüntüler ve günlükler gibi ham dosyaları barındırır.
Gerçek Dünya Uygulamaları#
- Yapay zekâ ajanları için bellek: RAG işlem hatları ve ajanlar, bir büyük dil modelinin gerektiğinde getirebilmesi için belge parçalarını ve geçmiş konuşmaları saklar.
- Perakende görsel araması: "Benzerini bul" özellikleri her ürün fotoğrafını gömer ve müşterinin baktığı ürüne en yakın öğeleri döndürür.
- Anomali tespiti: Saklanan en yakın komşularının tümü uzakta olan yeni bir örnek, örneğin bir işlem veya sensör ölçümü, olağandışı olarak işaretlenir.
Görüntü koleksiyonlarında vektörleri üretmek için bir görüntü modeli gerekir. Ultralytics YOLO26, modeli her görüntü üzerinde çalıştırıp sondan bir önceki katmandan havuzlanmış bir öznitelik vektörü döndüren model.embed() aracılığıyla bunu sağlar. Bu vektör, birbirine çok benzeyen görüntüleri algılamak veya benzer görüntüleri aramak için görüntü yolu ve çekim meta verilerinin yanında saklanmaya hazırdır; Ultralytics Platform'daki Benzer Görüntüleri Bul özelliği de bu tür aramaya dayanır.
Boyutlandırma ve Ayarlama#
Dizin ayarları, duyarlılık ile çıkarım gecikmesi arasında ödünleşim yaratır: HNSW'nin arama genişliği (ef_search) ve IVF'nin taranan küme sayısı (nprobe), daha yavaş sorgular pahasına daha fazla gerçek komşu bulur; bu nedenle ekipler bu ayarları örnek sorgular üzerindeki kesin aramaya göre ayarlar. Bellek, donanım maliyetini belirler. Bir milyon adet 768 boyutlu float32 gömme, herhangi bir dizin ek yükü olmadan 3,07 GB (1.000.000 x 768 x 4 bayt) yer kaplar; vektörlerde int8 skaler niceleme bu miktarı 768 MB'a indirir ve Matryoshka gömmeleri daha da azaltmak için daha az boyuta kısaltılabilir.










