Eliminera valfria vektorinstanser från lagring
Azure AI Search lagrar flera kopior av vektorfält som används i specifika arbetsbelastningar. Om du inte behöver stödja ett specifikt beteende, som att returnera råvektorer i ett frågesvar, kan du ange egenskaper i indexet som utelämnar lagring för den arbetsbelastningen.
Förutsättningar
- Vektorfält i ett sökindex med en
vectorSearch
konfiguration, med hjälp av HNSW(Hierarchical Navigable Small Worlds) eller fullständiga KNN-algoritmer (K-nearest neighbor) och en ny vektorprofil.
Hur vektorfält lagras
För varje vektorfält kan det finnas tre kopior av vektorerna, som var och en har ett annat syfte:
Instans | Förbrukning | Styrd med hjälp av |
---|---|---|
Källvektorer som lagrar JSON som togs emot under dokumentindexering | Används för inkrementell datauppdatering med merge eller mergeOrUpload under dokumentindexering. Används också om du vill att "hämtningsbara" vektorer ska returneras i frågesvaret. |
stored egenskap för vektorfält |
Ursprungliga fullprecisionsvektorer | I befintliga index används dessa för interna indexåtgärder och för fullständig KNN-sökning. För vektorer som använder komprimering används den också för att rescoring (om aktiverad) på en översamplad kandidatuppsättning med resultat från ANN-sökning på vektorfält med hjälp av skalbar eller binär kvantiseringskomprimering . | rescoringOptions.rescoreStorageMethod egenskapen i vectorSearch.compressions . För okomprimerade vektorfält på index som skapats med 2024-11-01-Preview API-versioner och senare utelämnas detta som standard utan påverkan på sökaktiviteter eller kvalitet. |
Vektorer i HNSW-grafen för sökning efter ungefärliga närmaste grannar (ANN) | Används för ANN-frågekörning. Består av antingen fullprecisionsvektorer (när ingen komprimering tillämpas) eller kvantiserade vektorer (när komprimering tillämpas) | Gäller endast HNSW. Dessa datastrukturer krävs för effektiv ANN-sökning. |
Du kan ange egenskaper som tar bort de två första instanserna permanent från vektorlagringen.
Den sista instansen (vektorer och diagram) krävs för körning av ANN-vektorfrågor. Om några komprimeringstekniker som skalär eller binär kvantisering används, tillämpas de på den här datauppsättningen. Om du vill kompensera för förlustkomprimering bör du behålla den andra instansen i syfte att förbättra ANN-sökkvaliteten.
Ange egenskapen stored
Egenskapen stored
är en boolesk egenskap i en definition av vektorfält som avgör om lagringen allokeras för innehåll i hämtningsbara vektorfält (källinstansen). Egenskapen stored
är true som standard. Om du inte behöver råvektorinnehåll i ett frågesvar kan du spara upp till 50 procent lagringsutrymme per fält genom att ändra stored
till false.
Överväganden för att ställa in stored
på false:
Eftersom vektorer inte är läsbara för människor kan du utelämna dem från resultat som skickas till LLMs i RAG-scenarier och från resultat som återges på en söksida. Behåll dem dock om du använder vektorer i en nedströmsprocess som använder vektorinnehåll.
Men om indexeringsstrategin innehåller partiella dokumentuppdateringar, till exempel "merge" eller "mergeOrUpload" i ett befintligt dokument, förhindrar inställningen
stored=false
innehållsuppdateringar av dessa fält under sammanfogningen. För varje "sammanslagning" eller "mergeOrUpload"-åtgärd till ett sökdokument måste du ange vektorfälten i sin helhet, tillsammans med de icke-vektorfält som du uppdaterar, eller så tas vektorn bort.
Viktigt!
Det går inte att ångra inställningen av stored=false
attributionen. Den här egenskapen kan bara anges när du skapar indexet och endast tillåts för vektorfält. Om du uppdaterar ett befintligt index med nya vektorfält kan den här egenskapen inte anges till false
. Om du vill hämta vektorinnehåll senare måste du släppa och återskapa indexet, eller skapa och läsa in ett nytt fält som har den nya attributionen.
För nya vektorfält i ett sökindex anger du stored
till false för att permanent ta bort hämtningsbar lagring för vektorfältet. I följande exempel visas en vektorfältdefinition med stored
egenskapen .
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"
}
]
}
Sammanfattning av viktiga punkter
Gäller för fält som har en vektordatatyp.
Påverkar lagring på disk, inte minne, och det har ingen effekt på frågor. Frågekörningen använder ett separat vektorindex som inte påverkas av
stored
egenskapen eftersom kopian av vektorn alltid lagras.Egenskapen
stored
anges när index skapas på vektorfält och kan inte ångras. Om du vill hämta innehåll senare måste du släppa och återskapa indexet eller skapa och läsa in ett nytt fält som har den nya attributionen.Standardvärden är
stored
inställda på true ochretrievable
inställda på false. I en standardkonfiguration lagras en hämtningsbar kopia, men den returneras inte automatiskt i resultat. Närstored
är sant kan du växlaretrievable
mellan sant och falskt när som helst utan att behöva återskapa ett index. Närstored
är falskt,retrievable
måste vara falskt och kan inte ändras.
Ange egenskapen rescoreStorageMethod
Kommentar
Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Egenskapen rescoreStorageMethod
styr lagringen av fullprecisionsvektorer när komprimering används.
För okomprimerade vektorfält på index som skapats med 2024-11-01-Preview
API-versioner och senare utelämnas detta som standard utan påverkan på sökaktiviteter eller kvalitet. För befintliga vektorfält som skapats före den här API-versionen finns det ingen möjlighet att ta bort den här datakopian på plats.
Vid en vektorkomprimering rescoreStorageMethod
är egenskapen inställd preserveOriginals
på som standard, som behåller fullprecisionsvektorer för översampling och återberäkningsfunktioner föratt minska effekten av förlust av komprimering på HNSW-grafen. Om du inte använder de här funktionerna kan du minska vektorlagringen genom att ange rescoreStorageMethod
till discardOriginals
.
Viktigt!
Inställningen av rescoreStorageMethod
egenskapen är oåterkallelig och har olika nivåer av sökkvalitetsförlust beroende på komprimeringsmetoden. Detta kan anges för index som skapas med 2024-11-01-Preview
eller senare, antingen när index skapas eller när nya vektorfält läggs till.
Om du tänker använda skalär eller binär kvantisering rekommenderar vi att rescoreStorageMethod
du behåller inställningen för att preserveOriginals
maximera sökkvaliteten.
Så här anger du den här egenskapen:
Använd REST-API:er för att skapa index eller skapa eller uppdatera index 2024-11-01 eller ett Azure SDK-betapaket som tillhandahåller funktionen.
Lägg till ett
vectorSearch
avsnitt i ditt index med profiler, algoritmer och komprimering.Under komprimeringar lägger du till
rescoringOptions
medenableRescoring
värdet true,defaultOversampling
anger till ett positivt heltal ochrescoreStorageMethod
anger tillpreserveOriginals
.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 } ] } }