Delen via


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

  1. 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)
  2. 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 van Collection(Edm.Half)) zonder extra werk.

    Model insluiten Systeemeigen uitvoer Dit type toewijzen in Azure AI Search
    tekst-insluiten-ada-002 Float32 Collection(Edm.Single) of Collection(Edm.Half)
    tekst-insluiten-3-klein Float32 Collection(Edm.Single) of Collection(Edm.Half)
    tekst-insluiten-3-groot Float32 Collection(Edm.Single) of Collection(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.

  3. 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

  1. 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.

  2. 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.