Aracılığıyla paylaş


Azure DocumentDB'de Half-Precision vektör dizinleme

Yarım Hassasiyetli vektör dizinleme nedir?

Yarı duyarlıklı vektör dizinleme, vektör eklemelerini standart 32 bit kayan noktalar yerine 16 bit kayan noktalı sayılar kullanarak depolamanıza ve dizinlemenize olanak tanır. Bu iyileştirme hem bellek kullanımı hem de depolama maliyetlerinde önemli ölçüde azalmaya yol açar ve daha büyük veri kümeleriyle ve daha yüksek boyutlu vektörlerle çalışmayı daha uygun hale getirir. Ayrıca, veri yoğunluğu en iyi duruma getirilerek birçok vektör arama senaryosunda geliştirilmiş sorgu performansına katkıda bulunabilir.

Önemli Avantajlar

  • Artan BoyutSallık Desteği: Yarı duyarlık ile artık en fazla 4.000 boyuta sahip vektörleri dizinleyebilirsiniz (önceki sınır olan 2.000'den bir artış).
  • Azaltılmış Depolama Ayak İzi: Vektörlerin 16 bit biçiminde depolanması, tam duyarlıklı vektörlere kıyasla gereken depolama miktarını önemli ölçüde azaltır. Bu, özellikle büyük ölçekli vektör veritabanları için önemli maliyet tasarruflarına yol açabilir.
  • Yapılandırılabilir Performans ve Duyarlık: Arama sonuçlarınızda ince ayar yapmak için sorgu yürütme sırasında bir fazla örnekleme parametresi sağlarız. Bu, alma hızını ve azaltılmış hassasiyetin olası etkisini dengelemenizi sağlar.

Yarım Hassasiyetli vektör dizini oluşturma

Koleksiyonunuz için vektör dizini tanımlarken, içinde "compression": "half"seçeneğini belirterek yarı duyarlıklı sıkıştırmayı cosmosSearchOptions etkinleştirebilirsiniz.

db.runCommand({
  "createIndexes": "<vector_collection_name>",
  "indexes": [
    {
      "key": { "<vector_field_name>": "cosmosSearch" },
      "name": "<index_name>",
      "cosmosSearchOptions": {
        "kind": "vector-hnsw", // or vector-ivf
        "similarity": "cos",
        "dimensions": integer_value, // max 4000
        "compression": "half"
      }
    }
  ]
});

Oversampling ile aramayı iyileştirme

Yarım hassasiyetli sıkıştırma kullanan bir vektör dizinini sorgularken, birleştirme aşamasında oversampling ve $search parametrelerini kullanabilirsiniz. Bu parametre, 16 bit gösterimi tarafından ortaya çıkabilecek duyarlık kaybını azaltmaya yardımcı olur.

oversampling faktörü, yarım hassasiyet dizininden almak istediğiniz sonuç sayısından (k) daha fazla potansiyel en yakın komşu almanıza olanak tanır. Bu adaylar daha sonra, son dereceli sonuçlarda daha yüksek doğruluk sağlamak için özgün tam duyarlık vektörleri kullanılarak karşılaştırılır.

Örneğin, en benzer 10 (k=10) vektöre ulaşmak için en iyi yöntemoversampling gibi bir değere ayarlamak olabilir. "oversampling": 1.5 ile, sistem ilk olarak yarım duyarlıklı dizinden 15 aday alır ve ardından tam duyarlıklı verileri kullanarak en iyi 10 adayı değerlendirir.

db.collection.aggregate([
  {
    "$search": {
      "cosmosSearch": {
        "vector": query_vector,
        "path": path_to_property,
        "k":  num_results_to_return,
        "oversampling": double_value
      }
    }
  },
  {
    "$project": {
      "similarityScore": { "$meta": "searchScore" },
      "_id": 0
    }
  }
]);

Uyarı

Faktör, oversampling minimum değeri olan bir 1.0 olmalıdır. Bu faktör yalnızca ile oluşturulan vektör dizinleri için "compression": "half"geçerlidir.

Half-Precision ile Ürün Niceleştirme karşılaştırması

Hem Half-Precision hem de Ürün Nicelemesi (PQ), Azure DocumentDB'de vektör dizinlerini sıkıştırır, ancak sıkıştırmayı nasıl elde ettikleri ve aramayı nasıl etkiledikleri bakımından farklılık gösterir:

Özellik Yarı-Hassasiyet Ürün Niceleştirmesi (PQ)
Sıkıştırma Yöntemi Her vektör boyutunu 16 bit'e küçültür. Vektör alanını alt alanlara böler ve her birinin miktarını belirtir.
Maksimum Boyutlar 4.000'e kadar En fazla 16.000
Kesinlik Değişikliği Daha düşük bit derinliği nedeniyle hafif kayıp. Potansiyel olarak daha büyük kayıplar, pqCompressedDims aracılığıyla yapılandırılabilir.
Arama Hızı Daha küçük dizin nedeniyle orta düzeyde hız artışı. Yüksek oranda sıkıştırılmış vektörler nedeniyle önemli hız artışı.
Dizin Oluşturma Zamanı Nispeten hızlı. Centroid eğitimi (pqSampleSize) nedeniyle daha uzun olabilir.
Dizin Desteği HNSW, IVF. DiskANN.
Configuration Basit, etkinleştirin compression: "half". Diğer parametreler: pqCompressedDims, pqSampleSize.
Fazla Örnekleme Kullanımı Küçük hassasiyet kaybına yardımcı olur. Daha büyük sıkıştırmadan doğruluğu kurtarmak için gereklidir.
İdeal Kullanım Örnekleri Orta düzeyde bellek azaltımı, boyutların artması, kabul edilebilir hassasiyet ödünü. Büyük veri kümeleri, yüksek boyutlar, hızlı arama öncelikli, fazla örnekleme ile yönetilen kesinlik.

Sonraki adım