Mimari (IT)Sistem Mühendisi

Küresel olarak dağıtılmış, gerçek zamanlı vektör benzerlik arama altyapısını senkronize edin. Bu altyapı, heterojen kenar ve bulut ortamlarında multimodal AI modellerinden gelen milyar ölçeğinde yüksek boyutlu gömme nesnelerini dizinlemekle birlikte, ayarlanabilir geri çağırma hassasiyeti ile 10 ms altı yaklaşık en yakın komşu alımını sağlamak, sorgu yerellik desenlerine dayalı dinamik dizin parçalama uygulamak ve yüksek hızlı gömme güncellemeleri sırasında vektör deposu ile gerçek kaynak işlem veritabanları arasında nihai tutarlılığı sürdürmek için arama işlemlerini engellemeyecek şekilde tasarlanmalıdır?

Hintsage yapay zeka asistanı ile mülakatları geçin

Sorunun Cevabı

Soru Tarihçesi

Sözcüksel aramadan anlamsal elde etmeye geçiş, son on yılda veri altyapısı gereksinimlerini temelden değiştirdi. Erken bilgi elde etme, ters dizinler ve TF-IDF puanlama üzerine dayanıyordu, ancak modern multimodal AI sistemleri, çoğu zaman 1000 boyutu aşan yüksek boyutlu vektör alanlarında yakınlık aramaları gerektiriyor. Bu kayma, transformer tabanlı modellerin çoğalmasıyla daha da yoğunlaştı, bu da geleneksel veritabanlarının verimli bir şekilde brute-force tarayamayacağı milyarlarca yoğun gömme nesnesi üretti. Zorluk, basit depolamadan coğrafi olarak dağıtılmış düğümler arasında yaklaşık en yakın komşu grafiklerini sürdürmeye geçerken, işlem kaynak sistemleri ile tutarlılığı koruma durumuna evrildi.

Sorun

Vektör veritabanları, CAP teoremi altında benzersiz kısıtlamalarla karşılaşır çünkü kesin k-en yakın komşu hesaplaması, veri kümesinin küresel bilgisini gerektirdiğinden, bölme toleransı ve düşük gecikme, milyar vektör ölçeğinde karşıt hale gelir. Yüksek boyutlu gömme nesneleri önemli ölçüde bellek tüketir - genellikle 1024 boyutlu float32 kullanarak her vektör için 4KB - bu da kenar dağıtımını karmaşıklaştıran veri çekim sorunları oluşturur. Ayrıca, "boyut karmaşası" ağaç tabanlı mekansal dizinleri etkisiz hale getirir, bu da HNSW gibi graf tabanlı algoritmaların gerekliliğini ortaya çıkarır; bunlar da kısmi güncellemeleri pahalı hale getirir. PostgreSQL'deki değişken işlemsel veriler ile değişmeyen vektör dizinleri arasında tutarlılığı sağlamak, çift yazma anormalliklerini tanıtırken, düğüm çoğaltması; indekslerin karşıt bölgeler arasında çoğaltılması da gömme yüklenme boyutları nedeniyle bant genişliği maliyetlerini artırır.

Çözüm

Ürün kuantizasyon sıkıştırması ile hiyerarşik gezilebilir küçük dünya grafikleri kullanan hücresel bir mimari, %90 bellek ayak izi azaltırken 10 ms altı sorguları mümkün kılar. Bölgesel vektör hücreleri, Apache Kafka akışları aracılığıyla gömme nesneleri alır ve Debezium CDC konektörleriyle kaynak gerçeklik veritabanlarının dizin oluşturma yükündan izole kalmasını sağlar. Dinamik parçalama, sorguları belirli parçalara yönlendirmek için yerellik duyarlı hashing kullanır ve arama alanını milyar adaydan milyonlara düşürür. Vektör sürümleme ve yumuşak silme mezar taşları ile nihai tutarlı bir model, engellemeyen dizin güncellemelerine olanak tanırken, Raft konsensüsü, merkezileşmeden sıcak sorgu yolunda hücreler arasında meta veri değişikliklerini koordine eder.

Hayattan Bir Durum

Sorun Tanımı

Küresel bir görsel ticaret platformu "LuxeSearch", moda ve mobilya kategorilerinde 400 milyon ürün SKU'su bulunduruyor ve kullanıcıların aynı veya tamamlayıcı öğeleri bulmaları için fotoğraf yüklediği görsel benzerlik aramasını gerektiriyor. Miras Elasticsearch altyapısı, 768 boyutlu CLIP gömmeleri arasındaki kosinüs benzerlik hesaplamalarının hesaplama yükü altında çöktü, bu da yoğun trafik sırasında 800 ms gecikme artışlarına neden oldu. Dahası, ürün meta verisi güncellemeleri, anlık satışlar sırasında saniyede 50,000 işlem oranında gerçekleşiyor ve bu durum, eşzamanlı güncellemelerin arama işlemleri ile çarpıştığı zaman dizin bozulmalarına neden oluyor ve saatte 2 milyon dolardan fazla gelir kaybına yol açıyor.

Çözüm 1: Monolitik küresel küme

Başlangıç önerisi, us-east-1'de tek bir Milvus kümesi dağıtılarak sorgu sonuç setleri için küresel CDN kenar önbellekleme sağladı. Bu yaklaşım, güçlü tutarlılık garantileri sundu ve tek bir dizin durumu koruyarak operasyonel yükü basitleştirdi. Ancak, APAC kullanıcıları için bölge arası gecikme 180 ms'yi aştı ve bu da 50 ms altı mobil uygulama gereksinimlerini ihlal etti, ve tatil alışverişi sezonunda kesinti maliyetlerinin keskin bir şekilde artması nedeniyle tek bir arıza noktası riski kabul edilemez hale geldi.

Çözüm 2: Gece yarısı toplu bölgesel dizinler

Alternatif bir mimari, S3 anlık görüntülerinden gece yarısı toplu işler aracılığıyla yeniden yapılandırılan bölgesel FAISS dizinlerini önerdi. Bu, yerel CPU çıkarımı aracılığıyla 5 ms'in altındaki sorgu gecikmesini sağladı ve aramalar sırasında ağ gidiş gelişlerini ortadan kaldırdı. Ne yazık ki, 24 saatlik veri bayatlığı, "hayalet ürünler" ile ilgili müşteri şikayetlerine yol açtı ve dizin yeniden yapılandırma için gereken altı saatlik bakım pencereleri, %99.99'luk çalışabilirlik SLA'sını ihlal etti.

Seçilen Çözüm

Ekip, Redis kullanarak otonom vektör hücreleri uyguladı ve sorgu hacmine göre ilk %10'luk ürün grubunu içeren sıcak dizinler için RedisSearch modülünü dahil etti, soğuk veriler için S3'te depolanan mem-mapped HNSW grafiklerini destekledi. Debezium, PostgreSQL değişikliklerini Kafka'ya aktarır, bölgeye özel dizin oluşturuculara ince detaylı HNSW güncellemeleri uygulamak üzere iletir. Ürün kuantizasyonu, 768 boyutlu float32 vektörlerini %98 geri çağırma @10 hassasiyeti ile 96-bayt kodlarına indirger. Bu çözüm, 500 ms içinde okuma-yazma tutarlılığı sağlayarak 100K gömme güncellemelerini sorgu engellemeden yönetiyor ve tüm 12 küresel bölgede 8 ms p99 gecikmesini koruyor.

Sonuç

Üretim operasyonunun altı ayının ardından, mimari %99.97 kullanılabilirlik sağladı, günde 50 milyon görsel aramayı destekledi ve akıllı katmanlama sayesinde altyapı maliyetlerini monolitik öneriye göre %40 oranında azalttı. Geri çağırma @10 metriği %99.2 seviyesinde stabilize oldu ve iş gereksinimlerini aştı, sistem, kara cuma sırasında manuel müdahale veya önbellek saldırıları olmaksızın %300'lük bir trafik zirvesini başarıyla karşıladı.

Adayların Sıkça Gözden Kaçırdığı Noktalar

Yüksek boyutlu alanlarda Öklid mesafesi neden etkisiz hale gelir ve bu dizin seçimini nasıl etkiler?

100 boyutu aşan yüksek boyutlu alanlarda, en yakın ve en uzak komşular arasındaki oran, hipersferin yüzeyindeki hacim yoğunluğunun artması nedeniyle 1'e yakınsar, bu da Öklid mesafelerini istatistiksel olarak ayırt edilemez ve mekansal olarak anlamsız hale getirir. Bu fenomen, arama dallarını etkili bir şekilde budamak için anlamlı mesafe farklılaşmasına dayanarak çalışan ağaç tabanlı mekansal bölümlendirmeyi geçersiz kılar; dolayısıyla, HNSW veya FAISS IVF dizinleri gibi graf tabanlı yöntemler gerekli hale gelir çünkü bunlar mutlak koordinat mesafeleri yerine göreli komşuluk bağlantılığı aracılığıyla yakınlıkta gezinir, ancak önemli ölçüde daha fazla bellek ve karmaşık artımlı bakım prosedürleri gerektirir.

İşlem veritabanı ve vektör dizini eşzamanlı olarak güncellenirken "çift yazma sorunu" ile nasıl başa çıkıyorsunuz?

Çift yazma sorunu, dağıtık işlemler OLTP deposu ve vektör veritabanı arasında başarısız olduğunda ortaya çıkar; bu da arama sonuçlarının silinen ögeleri döndürmesine veya kısmi taahhüt durumları nedeniyle yeni gömme nesneleri atlamasına neden olur. İki aşamalı taahhüt protokolleri uygulamak yerine, mimarlar PostgreSQL'nin iş verisi değişikliği ile aynı ACID işlemi içindeki bir çıkış kutusu tablosuna yazmasını sağlamak için çıkar kutusu deseni uygulamalıdır. Debezium, bu çıkış kutusunu okur ve vektör dizin oluşturuculara tam olarak bir kez teslimat sağlamak için asenkron olarak Kafka'ya yayımlar; vektör girişleri monotonik sürüm numaralarını içerir ve arama API'si sonuçları, güncel olmayan sürümleri hariç tutmak için OLTP meta veri deposunu doğrulayarak filtreler, böylece sorguları engellemeden tutarsızlıkları etkili bir şekilde maskelemektedir.

Artımlı güncellemeler sırasında graf tabanlı ANN dizinlerinin bellek etkileri nelerdir ve yazma amplifikasyonunu nasıl azaltırsınız?

HNSW ve benzeri grafik yapıları, kenar ekleme sırasında kilitleme veya yazma üzerine yazma mekanizmaları gerektirir ve bu, hiyerarşik dolaşabilirlik özelliğini korumak için yüzlerce kenarın yeniden bağlantılandırılmasını gerektirdiğinden önemli ölçüde yazma amplifikasyonu oluşturur. Bellek kısıtlamasının olduğu ortamlarda, bu, çalışma seti DRAM kapasitesini aştığında, sorgu gecikmesini öngörülemeyen bir şekilde düşüren sayfa hataları ve çöp toplama baskısını oluşturur. Azaltma stratejileri arasında, sıcak grafik katmanlarının bellekte ve soğuk katmanların kalıcı bellek veya hızlı NVMe SSD'lerde bulunmasını sağlayan katmanlı depolamayı kullanmak; güncellemeleri düşük trafik dönemlerinde asenkron olarak birleştiren mikro parçalar halinde düzenlemek; ve sıkıştırılmış vektörlerin grafik topolojisini belirlediği, ham vektörlerin yalnızca nihai yeniden derecelendirme sırasında alındığı kuantizasyon farkındalığına sahip grafik inşa etme uygulamak; bu, bellek akışını %70 oranında azalttığı gibi hedef geri çağırma metriklerini de korur.