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 värden som används i filteruttryck skrivs enligt Entitetsdatamodell (EDM). Att ange en EDM-datatyp är ett krav för fältdefinition.
Not
Om du använder indexerareläser du Datatypkarta 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
Ett vektorfält typ måste vara giltigt för utdata från inbäddningsmodellen. Om du till exempel använder text-embedding-ada-002 är utdataformatet Float32
eller Collection(Edm.Single)
. I det här scenariot kan du inte tilldela en Int8
datatyp eftersom gjutning från float
till int
primitiver är förbjuden. Du kan dock casta 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 | Beskrivning | Rekommenderad användning |
---|---|---|---|
Collection(Edm.Byte) |
Binär | 1-bitars osignerad binär fil. Allmänt tillgängligt i Skapa eller uppdatera index (2024-07-01). | Stöder integrering med modeller som genererar binära inbäddningar, till exempel Cohere:s binära inbäddningsmodeller för v3. eller anpassad kvantiseringslogik som genererar 1-bitars osignerade binära utdata. Fält av typen Collection(Edm.Byte) finns i Index binära data för hjälp med att ange fältdefinitions- och vektorsökningsalgoritmer för binära data. |
Collection(Edm.Single) |
Float32 |
32-bitars flyttal. Allmänt tillgängligt i Skapa eller uppdatera index (2024-07-01). 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 räckvidd. Allmänt tillgängligt i Skapa eller uppdatera index (2024-07-01). | 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 med Float32 , men med något minskad noggrannhet. Du kan tilldela en Float16 typ för att indexera Float32 inbäddningar som Float16 . Du kan också använda Float16 för inbäddning av modeller eller anpassade kvantiseringsprocesser som genererar Float16 internt. |
Collection(Edm.Int16) |
Int16 |
16-bitars signerat heltal. Allmänt tillgängligt i Skapa eller uppdatera index (2024-07-01). | Ger minskat 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 signerat heltal. Allmänt tillgängligt i Skapa eller uppdatera index (2024-07-01). | Ger betydande minnes- och beräkningseffektivitetsvinster jämfört med Float32 eller Float16 . Det kräver dock sannolikt kompletterande tekniker (som kvantisering och översampling) för att kompensera för minskning av precision och återkalla 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 true/false-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 för undermillisekunder avrundas det returnerade värdet upp till millisekunder (till exempel returneras 2024-04-15T10:30:09.7552052Z 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. Till exempel lagras 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 bokstavligt formulär baserat på WKT-standarden. En punktliteral konstrueras som geografi'POINT(lon lat)'. |
Edm.ComplexType |
Objekt vars egenskaper mappas till underfält som kan vara av valfri 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 över datumtidsvärden. |
Collection(Edm.GeographyPoint) |
En lista över punkter som representerar geografiska platser. |
Collection(Edm.ComplexType) |
En lista över 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 typerna ovan ä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 nyttolaststorleken 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 funktionen geo.intersects
. Det literala formuläret för URL:er i OData baseras på WKT (välkänd text) och OGC:s enkla funktionsåtkomststandarder. En polygonliteral konstrueras som geography'POLYGON((lon lat, lon lat, ...))'.
Viktig
Punkter i en polygon måste vara i motsols ordning. Punkter i en polygon tolkas i motsols ordning i förhållande till polygonens insida. Till exempel en 4-punkts stängd polygon runt London skulle vara -0,3°W 51,6°N [övre vänstra] , -0,3°W 51,4°N [nedre vänstra], 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].