Smalle gegevenstypen toewijzen aan vectorvelden in Azure AI Search
Een eenvoudige manier om de vectorgrootte te verkleinen, is door insluitingen op te slaan in een kleinere gegevensindeling. De meeste insluitmodellen leveren 32-bits drijvendekommanummers op, maar als u uw vectoren kwantificeert of als uw insluitmodel dit systeemeigen ondersteunt, kan uitvoer float16, int16 of int8 zijn, wat aanzienlijk kleiner is dan float32. U kunt deze kleinere vectorgrootten aanpassen door een smal gegevenstype toe te wijzen aan een vectorveld. In de vectorindex verbruiken smalle gegevenstypen minder opslag.
Gegevenstypen worden toegewezen aan velden in een indexdefinitie. U kunt Azure Portal, de Search REST API's of een Azure SDK-pakket gebruiken dat de functie biedt.
Vereisten
- Een insluitmodel dat kleine gegevensindelingen uitvoert, zoals tekst-insluiten-3 of Cohere V3-insluitingsmodellen.
Ondersteunde smalle gegevenstypen
Bekijk de gegevenstypen die worden gebruikt voor vectorvelden voor aanbevolen gebruik:
Collection(Edm.Single)
32-bits drijvende komma (standaard)Collection(Edm.Half)
16-bits drijvende komma (smal)Collection(Edm.Int16)
16-bits ondertekende gehele getallen (smal)Collection(Edm.SByte)
8-bits ondertekende gehele getallen (smal)Collection(Edm.Byte)
8-bits geheel getal zonder teken (alleen toegestaan met verpakte binaire gegevenstypen)
Bepaal in die lijst welk gegevenstype geldig is voor de uitvoer van het insluitmodel of voor vectoren die aangepaste kwantisatie ondergaan.
De volgende tabel bevat koppelingen naar verschillende insluitingsmodellen die een smal gegevenstype (
Collection(Edm.Half)
) kunnen gebruiken zonder extra kwantisatie. U kunt casten van float32 naar float16 (met behulp vanCollection(Edm.Half)
) zonder extra werk.Model insluiten Systeemeigen uitvoer Dit type toewijzen in Azure AI Search tekst-insluiten-ada-002 Float32
Collection(Edm.Single)
ofCollection(Edm.Half)
tekst-insluiten-3-klein Float32
Collection(Edm.Single)
ofCollection(Edm.Half)
tekst-insluiten-3-groot Float32
Collection(Edm.Single)
ofCollection(Edm.Half)
Cohere V3 insluitmodellen met int8 embedding_type Int8
Collection(Edm.SByte)
Andere smalle gegevenstypen kunnen worden gebruikt als uw model insluitingen verzendt in de kleinere gegevensindeling of als u aangepaste kwantisatie hebt waarmee vectoren worden geconverteerd naar een kleinere indeling.
Zorg ervoor dat u de compromissen van een smal gegevenstype begrijpt.
Collection(Edm.Half)
heeft minder informatie, wat resulteert in een lagere resolutie. Als uw gegevens homogeen of dicht zijn, kan het verlies van extra details of nuance leiden tot onaanvaardbare resultaten op het moment van de query, omdat er minder details zijn die kunnen worden gebruikt om nabijgelegen vectoren van elkaar te onderscheiden.
Het gegevenstype toewijzen
Definieer en bouw een index. U kunt de Azure-portal gebruiken, Index maken of bijwerken (REST API) of een Azure SDK-pakket voor deze stap.
Deze velddefinitie maakt gebruik van een smal gegevenstype, Collection(Edm.Half)
dat een float32-insluiting kan accepteren die is opgeslagen als een float16-waarde. Zoals waar is voor alle vectorvelden en dimensions
vectorSearchProfile
worden ingesteld. De specifieke kenmerken van de vectorSearchProfile
gegevens zijn niet van belang voor het gegevenstype.
U wordt aangeraden de waarden van het veld visueel in te stellen en stored
waar in te stellen retrievable
als u de waarden van het veld visueel wilt controleren. Bij een volgende herbouw kunt u deze eigenschappen wijzigen in false voor verminderde opslagvereisten.
{
"name": "nameEmbedding",
"type": "Collection(Edm.Half)",
"searchable": true,
"filterable": false,
"retrievable": true,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"synonymMaps": [],
"dimensions": 1536,
"vectorSearchProfile": "myHnswProfile"
}
Zoals u weet, zijn vectorvelden niet filterbaar, sorteerbaar of facetbaar. Ze kunnen niet worden gebruikt als sleutels en gebruiken geen analyses of synoniemenkaarten.
Werken met een productieindex
Gegevenstypen worden toegewezen aan nieuwe velden wanneer ze worden gemaakt. U kunt het gegevenstype van een bestaand veld niet wijzigen en u kunt een veld niet verwijderen zonder de index opnieuw op te bouwen. Voor bestaande indexen die al in productie zijn, is het gebruikelijk om dit probleem te omzeilen door nieuwe velden te maken met de gewenste revisies en vervolgens verouderde velden te verwijderen tijdens het opnieuw samenstellen van een geplande index.
Resultaten controleren
Controleer of de veldinhoud overeenkomt met het gegevenstype. Ervan uitgaande dat het vectorveld is gemarkeerd als
retrievable
, gebruikt u Search Explorer of Search - POST om inhoud van vectorvelden te retourneren.Als u de grootte van de vectorindex wilt controleren, raadpleegt u de kolom vectorindexgrootte op de pagina Zoekbeheerindexen > in Azure Portal of gebruikt u de GET Statistics (REST API) of een equivalente Azure SDK-methode om de grootte op te halen.
Notitie
Het gegevenstype van het veld wordt gebruikt om de fysieke gegevensstructuur te maken. Als u later een gegevenstype wilt wijzigen, kunt u de index verwijderen en opnieuw opbouwen of een tweede veld maken met de nieuwe definitie.