Vektör dizini boyutu ve sınırları

Not

Azure Yapay Zeka Arama Azure portalı, REST API'leri ve Azure SDK’ları aracılığıyla kullanılabilir. Ayrıca kuruluş içeriğini Microsoft Foundry portalındaki aracılar için yeniden kullanılabilir, izin kullanan bilgi bankalarına dönüştüren yönetilen bilgi katmanı Foundry IQ'yu temel alır.

Her vektör alanı için Azure Yapay Zeka Arama, alanda belirtilen algoritma parametrelerini kullanarak bir iç vektör dizini oluşturur. Azure Yapay Zeka Arama 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.

Dahili olarak, arama dizininin fiziksel veri yapıları şunlardır:

  • Ham içerik (tokenize edilmemiş içerik gerektiren erişim desenleri için kullanılır)
  • Ters dizinler (aranabilir metin alanları için kullanılır)
  • Vektör dizinleri (aranabilir vektör alanları için kullanılır)

Bu makalede, vektör alanlarınızın her birini destekleyen iç vektör dizinlerinin sınırları açıklanmaktadır.

İpucu

Vektör iyileştirme teknikleri genel olarak kullanılabilir. Vektör kotanızı ve depolama kotası tüketiminizi azaltmak için dar veri türleri, skaler ve ikili niceleme ve yedekli depolamanın ortadan kaldırılması gibi özellikleri kullanın.

Kota ve vektör dizini boyutuyla ilgili önemli noktalar

  • Vektör dizini boyutu bayt cinsinden ölçülür.

  • Hizmetinizin toplam depolama alanı tüm vektör dizin dosyalarınızı içerir. Azure Yapay Zeka Arama, vektör dizin dosyalarının farklı kopyalarını farklı amaçlarla korur. Bu kopyalardan bazılarını ortadan kaldırarak vektör dizinlerinin depolama ek yükünü azaltmak için başka seçenekler sunuyoruz.

  • Vektör kotaları, bölüm başına arama hizmetinin tamamında uygulanır. Bölümler eklerseniz vektör kotası da artar. Bölüm başına vektör kotaları daha yeni hizmetlerde daha yüksektir. Daha fazla bilgi için bkz . Vektör dizini boyutu sınırları.

  • Tüm algoritmalar vektör dizini boyutu kotası kullanmaz. Vektör kotaları, Yaklaşık En Yakın Komşu (ANN) aramasının bellek gereksinimlerine göre oluşturulur. Hiyerarşik Gezinilebilir Küçük Dünya (HNSW) algoritmasıyla oluşturulan vektör alanlarının, grafik tabanlı dolaşmaların rastgele erişim özelliği nedeniyle sorgu yürütme sırasında bellekte bulunması gerekir. Kapsamlı K-En Yakın Komşular (KNN) algoritmasını kullanan vektör alanları, sorgu yürütme sırasında sayfalara dinamik olarak belleğe yüklenir ve bu nedenle vektör kotasını kullanmaz.

** Kontrol et bölüm boyutunu ve miktarını

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 depolamayı, 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.

Vektör sınırınız , hizmet oluşturma tarihinize bağlı olarak değişir.

Vektör dizini boyutunu denetleme

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.

Dizin başına vektör boyutu

Dizin başına vektör dizini boyutunu almak için Dizinlerin>.

Vektör kotasının bellek kısıtlamalarına dayandığını hatırlayın. HNSW algoritması kullanılarak oluşturulan vektör dizinleri için, aranabilir tüm vektör dizinleri belleğe kalıcı olarak yüklenir. Kapsamlı KNN algoritması kullanılarak oluşturulan dizinler için vektör dizinleri, sorgu zamanında sırayla öbekler halinde yüklenir. Kapsamlı KNN dizinleri için bellek yerleşimi gereksinimi yoktur. Bellekteki yüklenen sayfaların ömrü metin aramasına benzer ve toplam depolama alanı dışında kapsamlı KNN dizinleri için geçerli olan başka ölçüm yoktur.

Aşağıdaki ekran görüntüsünde aynı vektör dizininin iki sürümü gösterilmektedir. Bir sürüm, vektör grafiğinin bellekte yerleşik olduğu HNSW algoritması kullanılarak oluşturulur. Ayrıntılı KNN algoritması kullanılarak başka bir sürüm oluşturulur. Kapsamlı KNN ile özel bir bellek içi vektör dizini yoktur, bu nedenle portal vektör dizini boyutu için 0 MB gösterir. Bu vektörler hala mevcuttur ve toplam depolama boyutuna dahil edilirler, ancak vektör dizini boyutu metriğini izleyen bellek içi kaynağı kapsamazlar.

Farklı algoritmaları temel alan vektör dizini boyutunu gösteren dizin portalı sayfasının ekran görüntüsü.

Hizmet başına vektör boyutu

Arama hizmetinin bir bütün olarak vektör dizini boyutunu almak için Genel Bakış sayfasının Kullanım sekmesini seçin. 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ış olan 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ü Collection(Edm.Single) olan 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örnün boyutsallığı, depolama boyutunu belirler. 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ü

Her 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 yükü, sıkıştırılmamış float32 (Edm.Single) vektörleri için 1% ile 20% arasında değişir.

Boyutsallık arttıkça bellek ek yükü yüzdesi azalır. Bunun nedeni vektörlerin ham boyutunun artması, graf bağlantı bilgilerini depolayan diğer veri yapılarının ise belirli mbir için sabit bir boyut olarak kalmasıdır. Sonuç olarak, bu ek veri yapılarının göreli etkisi genel vektör boyutuna göre azalır.

Bellek yükü, dizin oluşturma sırasında her yeni vektör için oluşturulan çift yönlü bağlantı sayısını belirten HNSW parametresinin mdaha büyük değerleriyle artar. Bunun nedeni, her bağlantının belge başına yaklaşık 8 ila 10 bayt katkıda bulunması ve toplam ek yükün m ile orantılı olarak ölçeklendirilmesidir.

Aşağıdaki tabloda, sıkıştırılmamış vektör alanları için 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
3072 4 %0,5

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

Skaler veya ikili niceleme gibi sıkıştırma tekniklerini kullanan vektör alanlarında ek yük yüzdesi, toplam vektör dizini boyutunun daha büyük bir yüzdesini tüketir gibi görünür. Verilerin boyutu azaldıkça, grafik bağlantı bilgilerini depolamak için kullanılan sabit boyutlu veri yapılarının göreli etkisi daha önemli hale gelir.

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 verilerin toplam boyutunu tahmin edin

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 bir, 1.536 boyutlu vektör alanına sahip 1.000 belge toplamda 1000 belge x 1536 ondalık sayı/belge = 1.536.000 ondalık sayı 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/belge x 4 bayt/float = 12.288.000 bayt tüketmektedir.

Vektör dizini boyutunu elde etmek için bu raw_size'ı algoritma ek yükü ve silinen belge oranı ile ç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. Vektör dizinlerinin depolama yükü hakkında bilgi için bkz. İsteğe bağlı vektör örneklerini depolamadan kaldırma.