Vektör depolamayı ve işlemeyi iyileştirmek için bir yaklaşım seçin

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.

Eklemeler veya heterojen içeriğin sayısal gösterimi, vektör arama iş yüklerinin temelini oluşturur. Bununla birlikte, ekleme boyutlarının ölçeklendirilmesi zor ve işlenmesi pahalıdır. Önemli ölçüde araştırma ve ürünleştirme, ölçeği geliştirmek ve işleme sürelerini azaltmak için birden çok çözüm üretmektedir. Azure Yapay Zeka Arama, daha hızlı ve daha ucuz vektör iş yükleri için bu özelliklerin bir dizisine dokunur.

Bu makale, vektör boyutunu ve sorgu işleme sürelerini azaltmanıza yardımcı olabilecek Azure Yapay Zeka Arama tüm iyileştirme tekniklerini kapsar.

Arama dizinindeki vektör alanı tanımlarında vektör iyileştirme ayarlarını belirtirsiniz. Bu makalede açıklanan özelliklerin çoğu genel olarak en son kararlı REST API sürümü ve bu sürümü hedefleyen Azure SDK paketlerinde kullanılabilir.

Seçenekleri değerlendirme

Vektör alanları tarafından kullanılan depolama miktarını azaltmak için Azure Yapay Zeka Arama yaklaşımlarını gözden geçirin. Bu yaklaşımlar birbirini dışlamaz, bu nedenle vektör boyutunu en fazla azaltmak için bunları birleştirebilirsiniz.

Bellekteki ve diskteki vektör boyutunu en az çabayla sıkıştırdığından yerleşik niceleme önerilir. Bu yaklaşım çoğu senaryoda en fazla faydayı sağlama eğilimindedir. Buna karşılık, dar türler (float16 hariç) bunları oluşturmak için özel çaba gerektirir ve stored bellek kadar pahalı olmayan disk depolama alanına kaydeder.

Yaklaşım Bu yaklaşımı neden kullanmalısınız?
Skaler veya ikili niceleme ekleme Yerel float32 veya float16 eklemelerini int8 (skaler) veya bayt (ikili) olarak sıkıştırır. Bu seçenek, sorgu performansında düşüş olmadan bellekte ve diskte depolamayı azaltır. int8 veya bayt gibi daha küçük veri türleri, daha büyük eklemelere sahip olanlardan daha az içerik bakımından zengin vektör dizinleri oluşturur. Yerleşik sıkıştırma, bilgi kaybını dengelemek için, daha ilgili sonuçlar döndürmek için sıkıştırılmamış eklemeler ve fazla örnekleme kullanarak sorgu sonrası işleme seçenekleri içerir. Yeniden boyutlandırma ve fazla örnekleme, float32 veya float16 alanlarının yerleşik nicelemesinin belirli özellikleridir ve özel nicelemeden geçen eklemelerde kullanılamaz.
MRL özellikli metin ekleme-3 modelleri için boyutları kesme Metin ekleme-3 modellerinde daha az boyut kullanın. OpenAI Azure bu modeller, farklı sıkıştırma düzeylerinde birden çok vektör gösterimi üreten Matryoshka Temsili Öğrenme (MRL) tekniğinde yeniden eğitilir. Bu yaklaşım, en az anlam bilgisi kaybıyla daha hızlı aramalar ve daha düşük depolama maliyetleri oluşturur. Azure Yapay Zeka Arama'de MRL, skaler ve ikili niceleme desteği sağlar. Herhangi bir niceleme yöntemini kullandığınızda, metin eklemelerin boyutsallığını azaltmak için vektör alanlarınızda bir truncateDimension özellik de belirtebilirsiniz.
Vektör alanlarına daha küçük ilkel veri türleri atama Float16, int16, int8 ve bayt (ikili) gibi dar veri türleri bellekte ve diskte daha az alan tüketir. Ancak, vektörleri dar bir veri biçiminde veren bir ekleme modeline sahip olmanız gerekir. Alternatif olarak, küçük veri çıkışları veren özel niceleme mantığına sahip olmanız gerekir. Daha az çaba gerektiren üçüncü bir kullanım örneği, çoğu model tarafından üretilen yerel float32 eklemelerini float16'ya yeniden kaydetmektir. İkili vektörler hakkında bilgi için bkz. dizin ikili vektörleri.
Alınabilir vektörlerin isteğe bağlı depolama alanını ortadan kaldırın Sorgu yanıtında döndürülen vektörler, sorgu yürütme sırasında kullanılan vektörlerden ayrı olarak depolanır. Vektör döndürmeniz gerekmiyorsa, alan başına genel disk depolama alanını yüzde 50'ye kadar azaltmak için alınabilir depolamayı kapatabilirsiniz.

Bu seçeneklerin tümünü boş bir dizinde tanımlayın. Bunlardan herhangi birini uygulamak için Azure portalını, REST API'lerini veya bu API sürümünü hedefleyen bir Azure SDK paketini kullanın.

Dizini tanımladıktan sonra belgeleri ayrı bir adım olarak yükleyip dizine alabilirsiniz.

Örnek: Vektör sıkıştırma tekniğine göre vektör boyutu

Vector niceleme ve depolama seçenekleri kullanarak Python, vektör depolama nicelemesi, dar veri türleri ve depolama özellikleri kullanımına göre değişen birden fazla arama dizini oluşturan bir Python kod örneğidir.

Bu kod, her vektör depolama iyileştirme seçeneği için depolama ve vektör dizini boyutunu oluşturur ve karşılaştırır. Bu sonuçlardan , nicelemenin vektör boyutunu en çok azalttığını görebilirsiniz, ancak birden çok seçenek kullanırsanız en büyük depolama tasarrufu elde edilir.

Dizin adı Depolama boyutu Vektör boyutu
compressiontest-temel 21,3613 MB 4,8277 MB
sıkıştırmatest-skaler-sıkıştırma 17,7604 MB 1,2242 MB
compressiontest-narrow 16,5567 MB 2,4254 MB
sıkıştırmatesti-saklanmadı 10,9224 MB 4,8277 MB
compressiontest-tüm-seçenekler 4,9192 MB 1,2242 MB

Arama Hizmeti REST API'leri depolama alanını ve vektör boyutunu dizin düzeyinde rapor eder, bu nedenle alanları değil dizinleri karşılaştırmanız gerekir. Vektör boyutunu almak için Indexes - get Statistics (REST API) veya Azure SDK’ları eşdeğer bir API kullanın.