Datatyper som stöds (Azure AI Search)

I den här artikeln beskrivs de datatyper som stöds av Azure AI-Search. Fält och de värden som används i filteruttryck skrivs enligt entitetsdatamodellen (EDM). Att ange en EDM-datatyp är ett krav för fältdefinition.

Anteckning

Om du använder indexerare läser du Datatypskarta för indexerare i Azure AI-Search för mer information om hur indexerare mappar källspecifika datatyper till EDM-datatyper i ett sökindex.

EDM-datatyper för vektorfält

En typ av vektorfält måste vara giltig för utdata från inbäddningsmodellen. Om du till exempel använder text-embedding-ada-002 är Float32 utdataformatet eller Collection(Edm.Single). I det här scenariot kan du inte tilldela en Int8 datatyp eftersom omvandling från float till int primitiver är förbjuden. Du kan dock konvertera från Float32 till Float16 eller (Collection(Edm.Half)).

Vektorfält är en matris med inbäddningar. I EDM är en matris en samling.

Datatyp Typ av vektor Description Rekommenderad användning
Collection(Edm.Single) Float32 32-bitars flyttal. Tillgängligt från och med Skapa eller Uppdatera index (2023-07-01-Preview). Den här datatypen stöds också i nyare förhandsversioner och i den stabila versionen 2023-11-01. Standarddatatyp i Microsoft-verktyg som skapar vektorfält åt dig. Skapar en balans mellan precision och effektivitet. De flesta inbäddningsmodeller genererar vektorer som Float32.
Collection(Edm.Half) Float16 16-bitars flyttal med lägre precision och intervall. Tillgängligt från och med Skapa eller Uppdatera index (2024-03-01-preview). Användbart för scenarier där minnes- och beräkningseffektivitet är kritiska och där det är acceptabelt att offra viss precision. Leder ofta till snabbare frågetider och minskat minnesfotavtryck jämfört Float32med , men med något minskad noggrannhet. Du kan tilldela en Float16 typ till indexbäddningar Float32 som Float16. Du kan också använda Float16 för att bädda in modeller eller anpassade kvantiseringsprocesser som genererar Float16 internt.
Collection(Edm.Int16) Int16 16-bitars heltal med tecken. Tillgängligt från och med Skapa eller Uppdatera index (2024-03-01-preview). Ger mindre minnesfotavtryck jämfört med Float32 och stöd för kvantiseringsmetoder med högre precision samtidigt som tillräcklig precision bibehålls för många program. Lämplig för fall där minneseffektivitet är viktigt. Kräver att du har anpassad kvantisering som matar ut vektorer som Int16.
Collection(Edm.SByte) Int8 8-bitars heltal med tecken. Tillgängligt från och med Skapa eller Uppdatera index (2024-03-01-preview). Ger betydande minnes- och beräkningseffektivitet jämfört med Float32 eller Float16. Det kräver dock sannolikt kompletterande tekniker (till exempel kvantisering och översampling) för att kompensera för minskning av precision och återkallande på lämpligt sätt. Kräver att du har anpassad kvantisering som matar ut vektorer som Int8.

EDM-datatyper för icke-bevektorfält

Datatyp Beskrivning
Edm.String Textdata.
Edm.Boolean Innehåller sant/falskt-värden.
Edm.Int32 32-bitars heltalsvärden.
Edm.Int64 64-bitars heltalsvärden.
Edm.Double IEEE 754-flyttalsvärden med dubbel precision.
Edm.DateTimeOffset Datum- och tidsvärden som representeras i OData V4-format: yyyy-MM-ddTHH:mm:ss.fffZ eller yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. Precisionen för DateTimeOffset fält är begränsad till millisekunder. Om du laddar upp DateTimeOffset värden med precision undermillisekunder avrundas det returnerade värdet upp till millisekunder (till exempel 2024-04-15T10:30:09.7552052Z returneras som 2024-04-15T10:30:09.7550000Z). När du laddar upp DateTimeOffset värden med tidszonsinformation till ditt index normaliserar Azure AI Search dessa värden till UTC. Lagras till exempel 2024-01-13T14:03:00-08:00 som 2024-01-13T22:03:00Z. Om du behöver lagra information om tidszonen lägger du till ett extra fält i indexet.
Edm.GeographyPoint En punkt som representerar en geografisk plats i världen. För begärande- och svarsorgan följer representationen av värden av den här typen formatet GeoJSON-typen "Point". För URL:er använder OData ett literalt formulär baserat på WKT-standarden. En punktliteral konstrueras som geography'POINT(lon lat)'.
Edm.ComplexType Objekt vars egenskaper mappas till underfält som kan vara av någon annan datatyp som stöds. Den här typen möjliggör indexering av strukturerade hierarkiska data, till exempel JSON. Objekt i ett fält av typen Edm.ComplexType kan innehålla kapslade objekt, men kapslingsnivån är begränsad. Gränserna beskrivs i Tjänstbegränsningar.
Collection(Edm.String) En lista med strängar.
Collection(Edm.Boolean) En lista med booleska värden.
Collection(Edm.Int32) En lista med 32-bitars heltalsvärden.
Collection(Edm.Int64) En lista med 64-bitars heltalsvärden.
Collection(Edm.Double) En lista med numeriska värden med dubbel precision.
Collection(Edm.DateTimeOffset) En lista med datum-tidsvärden.
Collection(Edm.GeographyPoint) En lista över punkter som representerar geografiska platser.
Collection(Edm.ComplexType) En lista med objekt av typen Edm.ComplexType. Det finns en gräns för det maximala antalet element i alla samlingar av typen Edm.ComplexType i ett dokument. Mer information finns i Tjänstbegränsningar .

Alla ovanstående typer är nullbara, förutom samlingar av primitiva och komplexa typer, till exempel Collection(Edm.String). Null-fält kan uttryckligen anges till null. De anges automatiskt till null när de utelämnas från ett dokument som laddas upp till ett Azure AI-Search index. Samlingsfält anges automatiskt till tomma ([] i JSON) när de utelämnas från ett dokument. Det går inte heller att lagra ett null-värde i ett samlingsfält.

Till skillnad från komplexa samlingar finns det ingen övre gräns specifikt för antalet objekt i en samling primitiva typer, men den övre gränsen på 16 MB för nyttolaststorlek gäller för alla delar av dokument, inklusive samlingar.

Geospatial datatyp som används i filteruttryck

I Azure AI-Search uttrycks geospatial sökning som ett filter.

Edm.GeographyPolygon är en polygon som representerar en geografisk region i världen. Även om den här typen inte kan användas i dokumentfält kan den användas som ett argument för geo.intersects funktionen. Det literala formuläret för URL:er i OData baseras på WKT (välkänd text) och OGC:s enkla åtkomststandarder för funktioner. En polygonliteral konstrueras som geography'POLYGON((lon lat, lon lat, ...))'.

Viktigt

Punkter i en polygon måste vara i motsols ordning. Punkter i en polygon tolkas i motsols ordning, i förhållande till insidan av polygonen. Till exempel en 4-punkts sluten polygon runt London skulle vara -0,3°W 51,6°N [övre vänstra] , -0,3°W 51,4°N [nedre vänstra], 0.0. 1°E 51.4°N [nedre högra], 0.1°E 51.6°N [övre högra], -0.3°W 51.6°N [startpunkt].

Se även