Vektör dizini boyutu ve sınırların altında kalma

Her vektör alanı için Azure AI Search, alanda belirtilen algoritma parametrelerini kullanarak bir iç vektör dizini oluşturur. Azure AI Search vektör dizini boyutuna kotalar getirdiğinden, sınırların altında kalmanızı sağlamak için vektör boyutunu nasıl tahmin edip izleyeceğinizi bilmeniz gerekir.

Not

Terminoloji hakkında bir not. Dahili olarak, arama dizininin fiziksel veri yapıları ham içerik (belirteçsiz içerik gerektiren alma desenleri için kullanılır), ters dizinler (aranabilir metin alanları için kullanılır) ve vektör dizinleri (aranabilir vektör alanları için kullanılır) içerir. Bu makalede, vektör alanlarınızın her birini destekleyen iç vektör dizinlerinin sınırları açıklanmaktadır.

İpucu

Vektör niceleme ve depolama yapılandırması artık önizleme aşamasındadır. Vektör kotası ve depolama kotası altında kalmak için dar veri türleri, skaler niceleme ve yedekli depolamanın ortadan kaldırılması gibi özellikleri kullanın.

Kota ve vektör dizini boyutuyla ilgili önemli noktalar

Bölüm boyutunu ve miktarını denetleme

Arama hizmeti sınırlarınızın ne olduğundan emin değilseniz, bu bilgileri almanın iki yolu vardır:

  • Azure portalında, arama hizmetine Genel Bakış sayfasında hem Özellikler sekmesi hem de Kullanım sekmesi bölüm boyutunu ve depolama alanını, ayrıca vektör kotası ve vektör dizini boyutunu gösterir.

  • Azure portalının Ölçek sayfasında bölümlerin sayısını ve boyutunu gözden geçirebilirsiniz.

Hizmet oluşturma tarihini denetleme

3 Nisan 2024'ten sonra oluşturulan daha yeni hizmetler, aynı katman faturalama oranına sahip eski hizmetlerden beş ile on kat daha fazla vektör depolama alanı sunar. Hizmetiniz daha eskiyse yeni bir hizmet oluşturmayı ve içeriğinizi geçirmeyi göz önünde bulundurun.

  1. Azure portalında arama hizmetinizi içeren kaynak grubunu açın.

  2. En soldaki bölmedeki Ayarlar altında Dağıtımlar'ı seçin.

  3. Arama hizmeti dağıtımınızı bulun. Çok fazla dağıtım varsa filtreyi kullanarak "arama" araması yapın.

  4. Dağıtımı seçin. Birden fazla hizmetiniz varsa arama hizmetinize çözümlenip çözümlenmediğini görmek için öğesine tıklayın.

    Filtrelenmiş dağıtımlar listesinin ekran görüntüsü.

  5. Dağıtım ayrıntılarını genişletin. Oluşturuldu ve oluşturma tarihini görmeniz gerekir.

    Oluşturma tarihini gösteren dağıtım ayrıntılarının ekran görüntüsü.

  6. Artık arama hizmetinizin yaşını bildiğinize göre, hizmet oluşturmaya göre vektör kotası sınırlarını gözden geçirin:

Vektör dizini boyutunu alma

Vektör ölçümleri için istek, veri düzlemi işlemidir. Hizmet istatistikleri ve tek tek dizinler aracılığıyla hizmet düzeyinde vektör kullanımı elde etmek için Azure portalını, REST API'lerini veya Azure SDK'larını kullanabilirsiniz.

Kullanım bilgilerini Genel Bakış sayfasının Kullanım sekmesinde bulabilirsiniz. Portal sayfaları birkaç dakikada bir yenilenir, bu nedenle bir dizini yakın zamanda güncelleştirdiyseniz sonuçları denetlemeden önce biraz bekleyin.

Aşağıdaki ekran görüntüsü, bir bölüm ve bir çoğaltma için yapılandırılmış eski bir Standart 1 (S1) arama hizmetine yöneliktir.

  • Depolama kotası bir disk kısıtlamasıdır ve arama hizmetindeki tüm dizinleri (vektör ve nonvector) kapsar.
  • Vektör dizini boyutu kotası bir bellek kısıtlamasıdır. Arama hizmetindeki her vektör alanı için oluşturulan tüm iç vektör dizinlerini yüklemek için gereken bellek miktarıdır.

Ekran görüntüsü dizinlerin (vektör ve nonvector) neredeyse 460 megabayt kullanılabilir disk depolama alanı tükettiğine işaret eder. Vektör dizinleri, hizmet düzeyinde neredeyse 93 megabayt bellek tüketir.

Kotaya göre vektör dizini tüketimini gösteren Genel Bakış sayfasının kullanım sekmesinin ekran görüntüsü.

Hem depolama hem de vektör dizini boyutu kotaları, siz bölüm ekledikçe veya kaldırdıkça artar veya azalır. Bölüm sayısını değiştirirseniz kutucukta depolama ve vektör kotasında ilgili bir değişiklik gösterilir.

Not

Diskte vektör dizinleri 93 megabayt değildir. Diskteki vektör dizinleri bellekteki vektör dizinlerinden yaklaşık üç kat daha fazla yer kaplar. Ayrıntılar için bkz . Vektör alanlarının disk depolamayı nasıl etkilediği.

Vektör dizini boyutunu etkileyen faktörler

İç vektör dizininizin boyutunu etkileyen üç ana bileşen vardır:

  • Verilerin ham boyutu
  • Seçili algoritmanın yükü
  • Dizin içindeki belgeleri silme veya güncelleştirme ek yükü

Verilerin ham boyutu

Her vektör genellikle türünde Collection(Edm.Single)bir alanda tek duyarlıklı kayan nokta sayılarından oluşan bir dizidir.

Vektör veri yapıları, aşağıdaki hesaplamada verilerinizin "ham boyutu" olarak temsil edilen depolama gerektirir. Vektör alanlarınızın vektör dizini boyutu gereksinimlerini tahmin etmek için bu ham boyutu kullanın.

Bir vektörünün depolama boyutu, boyutsallığına göre belirlenir. Ham boyutu elde etmek için bir vektör boyutunu bu vektör alanını içeren belge sayısıyla çarpın:

raw size = (number of documents) * (dimensions of vector field) * (size of data type)

EDM veri türü Veri türünün boyutu
Collection(Edm.Single) 4 bayt
Collection(Edm.Half) 2 bayt
Collection(Edm.Int16) 2 bayt
Collection(Edm.SByte) 1 bayt

Seçili algoritmadan bellek yükü

Yaklaşık olarak en yakın her komşu (ANN) algoritması, verimli arama yapmak için bellekte ek veri yapıları oluşturur. Bu yapılar bellek içinde fazladan alan tüketir.

HNSW algoritması için bellek ek yükü %1 ile %20 arasında değişir.

Vektörlerin ham boyutu arttığından daha yüksek boyutlar için bellek yükü daha düşüktür; ek veri yapıları ise grafik içindeki bağlantı hakkında bilgi depoladıkları için sabit bir boyut olarak kalır. Sonuç olarak, ek veri yapılarının katkısı genel boyutun daha küçük bir bölümünü oluşturur.

HNSW parametresinin mdaha büyük değerleri için bellek yükü daha yüksektir ve bu da dizin oluşturma sırasında her yeni vektör için oluşturulan çift yönlü bağlantıların sayısını belirler. Bunun nedeni, belge başına yaklaşık 8 bayt ile 10 bayt'a katkıda bulunarak ile çarpılmasıdır mm.

Aşağıdaki tabloda iç testlerde gözlemlenen ek yük yüzdeleri özetlenmiştir:

Boyutlar HNSW Parametresi (m) Ek Yük Yüzdesi
96 4 %20
200 4 %8
768 4 %2
1536 4 %1

Bu sonuçlar, HNSW algoritması için boyutlar, HNSW parametresi mve bellek yükü arasındaki ilişkiyi gösterir.

Dizin içindeki belgeleri silme veya güncelleştirme ek yükü

Vektör alanı olan bir belge silindiğinde veya güncelleştirildiğinde (güncelleştirmeler dahili olarak silme ve ekleme işlemi olarak gösterilir), temel alınan belge silinmiş olarak işaretlenir ve sonraki sorgular sırasında atlanır. Yeni belgeler dizine eklendikçe ve iç vektör dizini büyüdükçe, sistem bu silinen belgeleri temizler ve kaynakları geri alır. Bu, büyük olasılıkla belgeleri silme ile temel alınan kaynakların serbest kalması arasında bir gecikme gözlemlemeniz anlamına gelir.

Bunu silinen belge oranı olarak adlandırıyoruz. Silinen belge oranı hizmetinizin dizin oluşturma özelliklerine bağlı olduğundan, bu parametreyi tahmin etmek için evrensel bir buluşsal işlem yoktur ve hizmetiniz için geçerli olan oranı döndüren bir API veya betik yoktur. Müşterilerimizin yarısının silinen belge oranının %10'un altında olduğunu gözlemliyoruz. Yüksek sıklıkta silme veya güncelleştirme gerçekleştirme eğilimindeyseniz, daha yüksek bir silinen belge oranı gözlemleyebilirsiniz.

Bu, vektör dizininizin boyutunu etkileyen bir diğer faktördür. Ne yazık ki, geçerli silinen belge oranınızı ortaya çıkaracak bir mekanizmamız yok.

Bellekteki verilerinizin toplam boyutunu tahmin etme

Daha önce açıklanan faktörleri hesaba katarak vektör dizininizin toplam boyutunu tahmin etmek için aşağıdaki hesaplamayı kullanın:

(raw_size) * (1 + algorithm_overhead (in percent)) * (1 + deleted_docs_ratio (in percent))

Örneğin, raw_size hesaplamak için 1.536 boyuta sahip popüler bir Azure OpenAI modeli text-embedding-ada-002 kullandığınızı varsayalım. Bu, bir belgenin her biri 4 bayt olduğundan Edm.Single 1.536 Edm.Single (float) veya 6.144 bayt tüketeceği anlamına gelir. Tek, 1.536 boyutlu vektör alanı olan 1.000 belge toplam 1000 belge x 1536 floats/doc = 1.536.000 float veya 6.144.000 bayt tüketir.

Birden çok vektör alanınız varsa, dizininizdeki her vektör alanı için bu hesaplamayı yapmanız ve bunların tümünü bir araya eklemeniz gerekir. Örneğin, iki 1.536 boyutlu vektör alanı olan 1.000 belge, 1000 belge x 2 alan x 1536 floats/doc x 4 bayt/float = 12.288.000 bayt tüketir.

Vektör dizini boyutunu elde etmek için bu raw_size algoritma ek yükü ve silinen belge oranıyla çarpın. Seçtiğiniz HNSW parametreleri için algoritma ek yükünüz %10 ve silinen belge oranınız %10 ise şunu elde ederiz: 6.144 MB * (1 + 0.10) * (1 + 0.10) = 7.434 MB.

Vektör alanları disk depolamayı nasıl etkiler?

Bu makalenin çoğu, bellekteki vektörlerin boyutu hakkında bilgi sağlar. Diskteki vektör boyutu hakkında bilgi edinmek istiyorsanız, vektör verileri için disk tüketimi bellekteki vektör dizininin yaklaşık üç katıdır. Örneğin, kullanımınız vectorIndexSize 100 megabayt (10 milyon bayt) olduğunda vektör dizinlerinize uyum sağlamak için en az 300 megabayt storageSize kota kullanmış olursunuz