Tilldela smala datatyper till vektorfält i Azure AI Search
Ett enkelt sätt att minska vektorstorleken är att lagra inbäddningar i ett mindre dataformat. De flesta inbäddningsmodeller matar ut 32-bitars flyttalsnummer, men om du kvantifierar dina vektorer, eller om inbäddningsmodellen stöder det internt, kan utdata vara float16, int16 eller int8, som är betydligt mindre än float32. Du kan hantera dessa mindre vektorstorlekar genom att tilldela en smal datatyp till ett vektorfält. I vektorindexet förbrukar smala datatyper mindre lagringsutrymme.
Datatyper tilldelas till fält i en indexdefinition. Du kan använda Azure Portal, REST API:er för sökning eller ett Azure SDK-paket som tillhandahåller funktionen.
Förutsättningar
- En inbäddningsmodell som matar ut små dataformat, till exempel inbäddningsmodeller för textinbäddning-3 eller Cohere V3.
Smala datatyper som stöds
Granska de datatyper som används för vektorfält för rekommenderad användning:
Collection(Edm.Single)
32-bitars flyttals (standard)Collection(Edm.Half)
16-bitars flyttals (smal)Collection(Edm.Int16)
16-bitars signerat heltal (smalt)Collection(Edm.SByte)
8-bitars signerat heltal (smalt)Collection(Edm.Byte)
8-bitars osignerat heltal (tillåts endast med paketerade binära datatyper)
I den listan avgör du vilken datatyp som är giltig för inbäddningsmodellens utdata eller för vektorer som genomgår anpassad kvantisering.
Följande tabell innehåller länkar till flera inbäddningsmodeller som kan använda en smal datatyp (
Collection(Edm.Half)
) utan extra kvantisering. Du kan casta från float32 till float16 (med )Collection(Edm.Half)
utan extra arbete.Inbäddningsmodell Interna utdata Tilldela den här typen i Azure AI Search text-embedding-ada-002 Float32
Collection(Edm.Single)
ellerCollection(Edm.Half)
text-embedding-3-small Float32
Collection(Edm.Single)
ellerCollection(Edm.Half)
text-embedding-3-large Float32
Collection(Edm.Single)
ellerCollection(Edm.Half)
Cohere V3-inbäddningsmodeller med int8 embedding_type Int8
Collection(Edm.SByte)
Andra smala datatyper kan användas om din modell genererar inbäddningar i det mindre dataformatet, eller om du har anpassad kvantisering som konverterar vektorer till ett mindre format.
Se till att du förstår kompromisserna för en smal datatyp.
Collection(Edm.Half)
har mindre information, vilket resulterar i lägre upplösning. Om dina data är homogena eller kompakta kan det leda till oacceptabla resultat vid frågetillfället om du förlorar extra detaljer eller nyanser eftersom det finns mindre information som kan användas för att skilja mellan närliggande vektorer.
Tilldela datatypen
Definiera och skapa ett index. Du kan använda Azure Portal, Skapa eller Uppdatera index (REST API) eller ett Azure SDK-paket för det här steget.
Den här fältdefinitionen använder en smal datatyp, Collection(Edm.Half)
, som kan acceptera en float32-inbäddning som lagras som ett float16-värde. Som är sant för alla vektorfält dimensions
och vectorSearchProfile
anges. Detaljerna i är oväsentliga vectorSearchProfile
för datatypen.
Vi rekommenderar att du anger retrievable
och stored
till true om du vill kontrollera fältvärdena visuellt. Vid en efterföljande återskapande kan du ändra dessa egenskaper till false för minskade lagringskrav.
{
"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"
}
Kom ihåg att vektorfält inte är filterbara, sorterbara eller fasettbara. De kan inte användas som nycklar och använder inte analysverktyg eller synonymkartor.
Arbeta med ett produktionsindex
Datatyper tilldelas i nya fält när de skapas. Du kan inte ändra datatypen för ett befintligt fält och du kan inte släppa ett fält utan att återskapa indexet. För etablerade index som redan finns i produktion är det vanligt att kringgå det här problemet genom att skapa nya fält med önskade revisioner och sedan ta bort föråldrade fält under en planerad återskapande av index.
Kontrollera resultat
Kontrollera att fältinnehållet matchar datatypen. Förutsatt att vektorfältet har markerats som
retrievable
använder du Sökutforskaren eller Sök – POST för att returnera innehåll i vektorfält.Om du vill kontrollera storleken på vektorindexet läser du kolumnen för vektorindexstorlek på sidan Sökhanteringsindex > i Azure Portal eller använder METODEN GET Statistics (REST API) eller motsvarande Azure SDK för att hämta storleken.
Kommentar
Fältets datatyp används för att skapa den fysiska datastrukturen. Om du vill ändra en datatyp senare kan du antingen släppa och återskapa indexet eller skapa ett andra fält med den nya definitionen.