Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Note
Azure AI Zoeken is beschikbaar via de Azure-portal, REST API's en Azure-SDK's. Het vormt ook een basis voor Foundry IQ, de beheerde kennislaag die bedrijfsinhoud transformeert in herbruikbare, machtigingsbewuste knowledge bases voor agents in de Microsoft Foundry-portal.
Insluitingen, of de numerieke weergave van heterogene inhoud, vormen de basis van vectorzoekworkloads. Door de grootte van insluitingen zijn ze echter moeilijk te schalen en duur te verwerken. Significant onderzoek en productisering hebben meerdere oplossingen geproduceerd voor het verbeteren van schaal en het verminderen van verwerkingstijden. Azure AI Zoeken kan profiteren van een aantal van deze capaciteiten voor snellere en goedkopere vectorworkloads.
In dit artikel worden alle optimalisatietechnieken in Azure AI Zoeken besproken waarmee u de vectorgrootte en queryverwerkingstijden kunt verminderen.
U geeft vectoroptimalisatie-instellingen op in vectorvelddefinities in een zoekindex. De meeste functies die in dit artikel worden beschreven, zijn algemeen beschikbaar in de latest stabiele REST API-versie en Azure SDK pakketten die gericht zijn op die versie.
De opties evalueren
Bekijk de benaderingen in Azure AI Zoeken voor het verminderen van de hoeveelheid opslagruimte die door vectorvelden wordt gebruikt. Deze benaderingen sluiten elkaar niet wederzijds uit, dus u kunt ze combineren voor maximale vermindering van de vectorgrootte.
We raden ingebouwde kwantisatie aan, omdat deze vectorgrootte comprimeert in het geheugen en op schijf met minimale inspanning. Deze benadering biedt meestal het meeste voordeel in de meeste scenario's. Daarentegen vereisen smalle typen (met uitzondering van float16) speciale inspanningen om ze te maken en stored bespaart u op schijfopslag, wat niet zo duur is als geheugen.
| Aanpak | Waarom deze benadering gebruiken |
|---|---|
| Scalaire of binaire kwantisatie toevoegen | Systeemeigen float32- of float16-insluitingen comprimeren naar int8 (scalaire) of byte (binair). Deze optie vermindert de opslag in het geheugen en op de schijf zonder de prestaties van query's te verminderen. Kleinere gegevenstypen, zoals int8 of byte, produceren vectorindexen die minder inhoudsrijk zijn dan die met grotere insluitingen. Om informatieverlies te compenseren, bevat ingebouwde compressie opties voor verwerking na query's met behulp van niet-gecomprimeerde insluitingen en oversampling om relevantere resultaten te retourneren. Herrankering en oversampling zijn specifieke kenmerken van ingebouwde kwantisatie van float32- of float16-velden en kunnen niet worden gebruikt voor insluitingen die aangepaste kwantisatie ondergaan. |
| Dimensies afkappen voor MRL-compatibele modellen voor insluiten van tekst-3 | Gebruik minder dimensies in text-embedding-3-modellen. Op Azure OpenAI worden deze modellen opnieuw getraind op de techniek Matryoshka Representation Learning (MRL) die meerdere vectorweergaven produceert op verschillende compressieniveaus. Deze benadering produceert snellere zoekopdrachten en lagere opslagkosten met minimaal verlies van semantische informatie. In Azure AI Zoeken ondersteunt MRL scalaire en binaire kwantisatie. Wanneer u een van beide kwantisatiemethoden gebruikt, kunt u ook een truncateDimension eigenschap opgeven voor uw vectorvelden om de dimensionaliteit van tekst insluitingen te verminderen. |
| Kleinere primitieve gegevenstypen toewijzen aan vectorvelden | Smalle gegevenstypen, zoals float16, int16, int8 en byte (binair), verbruiken minder ruimte in het geheugen en op schijf. U moet echter een insluitmodel hebben dat vectoren uitvoert in een smalle gegevensindeling. U moet ook aangepaste kwantisatielogica hebben waarmee kleine gegevens worden uitgevoerd. Een derde use case waarvoor minder inspanning is vereist, is het herschalen van inheemse float32-insluitingen die door de meeste modellen worden geproduceerd naar float16. Zie Binaire vectoren indexeren voor informatie over binaire vectoren. |
| Optionele opslag van ophaalbare vectoren elimineren | Vectoren die in een queryantwoord worden geretourneerd, worden afzonderlijk opgeslagen van vectoren die worden gebruikt tijdens het uitvoeren van de query. Als u geen vectoren hoeft te retourneren, kunt u ophaalbare opslag uitschakelen om de totale schijfopslag per veld met maximaal 50 procent te verminderen. |
Definieer al deze opties voor een lege index. Als u een van deze pakketten wilt implementeren, gebruikt u de Azure-portal, REST API's of een Azure SDK-pakket dat is gericht op die API-versie.
Nadat u de index hebt gedefinieerd, kunt u documenten laden en indexeren als een afzonderlijke stap.
Voorbeeld: Vectorgrootte per vectorcompressietechniek
Vector kwantisatie en opslagopties met behulp van Python is een Python codevoorbeeld waarmee meerdere zoekindexen worden gemaakt die variƫren op basis van het gebruik van kwantisatie van vectoropslag, narrow-gegevenstypen en opslageigenschappen.
Met deze code maakt en vergelijkt u de opslag- en vectorindexgrootte voor elke optie voor optimalisatie van vectoropslag. In deze resultaten kunt u zien dat kwantisatie de meeste vectorgrootte vermindert, maar de grootste opslagbesparingen worden bereikt als u meerdere opties gebruikt.
| Indexnaam | Opslaggrootte | Vectorgrootte |
|---|---|---|
| compressietestbasislijn | 21,3613 MB | 4,8277 MB |
| compressietest-schaalcompressie | 17,7604 MB | 1,2242 MB |
| compressietest-smal | 16,5567 MB | 2,4254 MB |
| Compressiontest-geen-opgeslagen | 10,9224 MB | 4,8277 MB |
| compressietest-alle-opties | 4,9192 MB | 1,2242 MB |
De REST API's van de Search Service rapporteren opslag en vectorgrootte op indexniveau, dus u moet indexen vergelijken, niet velden. Gebruik Indexen - Statistieken ophalen (REST API) of een equivalente API in de Azure-SDK's om vectorgrootte op te halen.