İsteğe bağlı vektör örneklerini depolama alanından kaldırma
Azure AI Search, belirli iş yüklerinde kullanılan vektör alanlarının birden çok kopyasını depolar. Sorgu yanıtında ham vektörleri döndürme gibi belirli bir davranışı desteklemeniz gerekmiyorsa, dizinde söz konusu iş yükü için depolamayı atlayan özellikleri ayarlayabilirsiniz.
Önkoşullar
- Hiyerarşik Gezinilebilir Küçük Dünyalar (HNSW) veya kapsamlı K-en yakın komşu (KNN) algoritmaları ve yeni bir vektör profili kullanılarak yapılandırmalı bir arama dizinindeki
vectorSearch
vektör alanları.
Vektör alanları nasıl depolanır?
Her vektör alanı için, her biri farklı bir amaca hizmet eden üç vektör kopyası olabilir:
Örnek | Kullanım | Kullanılarak denetlendi |
---|---|---|
Belge dizin oluşturma sırasında alınan JSON dosyasını depolayan kaynak vektörleri | Belge dizini oluşturma sırasında veya mergeOrUpload ile merge artımlı veri yenileme için kullanılır. Sorgu yanıtında "alınabilir" vektörlerin döndürülmesini istiyorsanız da kullanılır. |
stored vektör alanlarındaki özellik |
Özgün tam duyarlık vektörleri | Mevcut dizinlerde bunlar iç dizin işlemleri ve kapsamlı KNN araması için kullanılır. Sıkıştırma kullanan vektörler için, skaler veya ikili niceleme sıkıştırması kullanılarak vektör alanlarında ANN aramasından eldeilen aşırı örneklenmiş aday sonuç kümesinde yeniden puanlama (etkinse) için de kullanılır. | rescoringOptions.rescoreStorageMethod özelliğine sahiptir vectorSearch.compressions . API sürümleri ve sonraki sürümlerle 2024-11-01-Preview oluşturulan dizinlerde sıkıştırılmamış vektör alanları için, arama etkinlikleri veya kalite üzerinde hiçbir etkisi olmadan bu varsayılan olarak atlanır. |
Yaklaşık En Yakın Komşular (ANN) araması için HNSW grafiğindeki vektörler | ANN sorgu yürütmesi için kullanılır. Tam duyarlıklı vektörlerden (sıkıştırma uygulanmadığında) veya nicelenmiş vektörlerden (sıkıştırma uygulandığında) oluşur | Yalnızca HNSW için geçerlidir. Bu veri yapıları verimli ANN araması için gereklidir. |
Vektör depolamadan ilk iki örneği kalıcı olarak atabilecek özellikler ayarlayabilirsiniz.
ANN vektör sorgu yürütmesi için son örnek (vektörler ve graf) gereklidir. Skaler veya ikili niceleme gibi sıkıştırma teknikleri kullanılırsa, bunlar bu veri kümesine uygulanır. Kayıplı sıkıştırmayı dengelemek istiyorsanız, ANN arama kalitesini geliştirmek için yeniden puanlama amacıyla ikinci örneği tutmanız gerekir.
stored
Özelliğini ayarlama
stored
özelliği, bir vektör alanı tanımında depolamanın alınabilir vektör alanı içeriği (kaynak örnek) için ayrılıp ayrılmadığını belirleyen bir boole özelliğidir. stored
özelliği varsayılan olarak true değeridir. Sorgu yanıtında ham vektör içeriğine ihtiyacınız yoksa false olarak değiştirerek stored
alan başına yüzde 50'ye kadar depolama alanı kaydedebilirsiniz.
False olarak ayarlamak stored
için dikkat edilmesi gerekenler:
Vektörler insan tarafından okunamadığından, BUNLARı RAG senaryolarında LLM'lere gönderilen sonuçlardan ve bir arama sayfasında işlenen sonuçlardan atlayabilirsiniz. Ancak vektörleri vektör içeriğini kullanan bir aşağı akış işleminde kullanıyorsanız bunları koruyun.
Ancak, dizin oluşturma stratejiniz var olan bir belgede "merge" veya "mergeOrUpload" gibi kısmi belge güncelleştirmeleri içeriyorsa, ayar
stored=false
birleştirme sırasında bu alanlarda içerik güncelleştirmelerini engeller. Arama belgesine yapılan her "birleştirme" veya "mergeOrUpload" işleminde vektör alanlarını, güncelleştirdiğiniz seçici olmayan alanlarla birlikte sağlamanız gerekir; aksi durumda vektör bırakılır.
Önemli
İlişkilendirmeyi stored=false
ayarlamak geri alınamaz. Bu özellik yalnızca dizini oluşturduğunuzda ayarlanabilir ve yalnızca vektör alanlarında izin verilir. Var olan bir dizini yeni vektör alanlarıyla güncelleştirmek bu özelliği olarak false
ayarlayamaz. Vektör içeriğini daha sonra almak istiyorsanız, dizini bırakmanız ve yeniden oluşturmanız veya yeni ilişkilendirmeye sahip yeni bir alan oluşturup yüklemeniz gerekir.
Arama dizinindeki yeni vektör alanları için, vektör alanının alınabilir depolama alanını kalıcı olarak kaldırmak için false olarak ayarlayın stored
. Aşağıdaki örnekte özelliğiyle bir vektör alanı tanımı gösterilmektedir stored
.
PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name": "demo-index",
"fields": [
{
"name": "vectorContent",
"type": "Collection(Edm.Single)",
"retrievable": false,
"stored": false,
"dimensions": 1536,
"vectorSearchProfile": "vectorProfile"
}
]
}
Önemli noktaların özeti
Vektör veri türüne sahip alanlar için geçerlidir.
Disk üzerindeki depolamayı etkiler, belleği etkilemez ve sorgular üzerinde hiçbir etkisi yoktur. Sorgu yürütme özelliğinden
stored
etkilenmeyen ayrı bir vektör dizini kullanır çünkü bu vektör kopyası her zaman depolanır.stored
özelliği vektör alanlarında dizin oluşturma sırasında ayarlanır ve geri alınamaz. İçeriği daha sonra almak istiyorsanız, dizini bırakmanız ve yeniden oluşturmanız veya yeni ilişkilendirmeye sahip yeni bir alan oluşturup yüklemeniz gerekir.Varsayılanlar
stored
true veretrievable
false olarak ayarlanır. Varsayılan yapılandırmada, alınabilir bir kopya depolanır, ancak sonuçlarda otomatik olarak döndürülemez. True olduğundastored
, bir dizini yeniden oluşturmak zorunda kalmadan istediğiniz zaman true ile false arasında geçişretrievable
yapabilirsiniz. False olduğundastored
falseretrievable
olmalıdır ve değiştirilemez.
rescoreStorageMethod
Özelliğini ayarlama
Not
Bu özellik şu anda genel önizlemededir. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.
özelliği, rescoreStorageMethod
sıkıştırma kullanıldığında tam duyarlıklı vektörlerin depolanmasını denetler.
API sürümleri ve sonraki sürümlerle 2024-11-01-Preview
oluşturulan dizinlerde sıkıştırılmamış vektör alanları için, arama etkinlikleri veya kalite üzerinde hiçbir etkisi olmadan bu varsayılan olarak atlanır. Bu API sürümünden önce oluşturulan mevcut vektör alanları için bu veri kopyasını kaldırma olanağı yoktur.
Vektör sıkıştırmada rescoreStorageMethod
, özellik varsayılan olarak olarak ayarlanır preserveOriginals
ve bu özellik, HNSW grafiğinde kayıplı sıkıştırmanın etkisini azaltmak için aşırı örnekleme ve yeniden puanlama özellikleri içintam duyarlıklı vektörleri korur. Bu özellikleri kullanmıyorsanız, olarak ayarlayarak rescoreStorageMethod
discardOriginals
vektör depolama alanını azaltabilirsiniz.
Önemli
Özelliğin rescoreStorageMethod
ayarlanması geri alınamaz ve sıkıştırma yöntemine bağlı olarak farklı arama kalitesi kaybı düzeyleri olacaktır. Bu, dizin oluşturma veya yeni vektör alanları ekleme sırasında veya daha sonra oluşturulan 2024-11-01-Preview
dizinlerde ayarlanabilir.
Skaler veya ikili niceleme kullanmayı planlıyorsanız, arama kalitesini en üst düzeye preserveOriginals
çıkarmak için ayarının olarak tutulmasını rescoreStorageMethod
öneririz.
Bu özelliği ayarlamak için:
Dizin Oluştur veya Dizin Oluştur veya Güncelleştir 2024-11-01-preview REST API'lerini veya özelliği sağlayan bir Azure SDK beta paketini kullanın.
Profiller, algoritmalar ve sıkıştırmalarla dizininize bir
vectorSearch
bölüm ekleyin.Sıkıştırmalar altında,
rescoringOptions
enableRescoring
öğesini true olarak ayarla,defaultOversampling
pozitif bir tamsayı olarak ayarla verescoreStorageMethod
olarakpreserveOriginals
ayarlayın.PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile", "algorithm": "myHnsw", "compression": "myScalarQuantization" } ], "algorithms": [ { "name": "myHnsw", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 }, "exhaustiveKnnParameters": null } ], "compressions": [ { "name": "myScalarQuantization", "kind": "scalarQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "preserveOriginals" }, "scalarQuantizationParameters": { "quantizedDataType": "int8" }, "truncationDimension": null } ] } }