Tipi di dati supportati (azure ai Search)

Questo articolo descrive i tipi di dati supportati dai Search di intelligenza artificiale di Azure. I campi e i valori usati nelle espressioni di filtro vengono tipizzati in base al modello EDM (Entity Data Model). Specificare un tipo di dati EDM è un requisito per la definizione del campo.

Nota

Se si usano indicizzatori, vedere Mapping dei tipi di dati per gli indicizzatori in Azure AI Search per altre informazioni su come gli indicizzatori eseguono il mapping dei tipi di dati specifici dell'origine ai tipi di dati EDM in un indice di ricerca.

Tipi di dati EDM per i campi vettoriali

Un tipo di campo vettoriale deve essere valido per l'output del modello di incorporamento. Ad esempio, se si usa text-embedding-ada-002, il formato di output è Float32 o Collection(Edm.Single). In questo scenario non è possibile assegnare un Int8 tipo di dati perché il cast da float a int primitive non è consentito. Tuttavia, è possibile eseguire il cast da Float32 a Float16 o (Collection(Edm.Half)).

I campi vettoriali sono una matrice di incorporamenti. In EDM, una matrice è una raccolta.

Tipo di dati Tipo vettore Descrizione Uso consigliato
Collection(Edm.Single) Float32 Virgola mobile a 32 bit. Disponibile a partire da Crea o aggiorna indice (2023-07-01-Preview). Questo tipo di dati è supportato anche nelle versioni di anteprima più recenti e nella versione 2023-11-01stabile . Tipo di dati predefinito negli strumenti Microsoft che creano campi vettoriali per conto dell'utente. Colpisce un equilibrio tra precisione ed efficienza. La maggior parte dei modelli di incorporamento genera vettori come Float32.
Collection(Edm.Half) Float16 Virgola mobile a 16 bit con precisione e intervallo inferiori. Disponibile a partire da Crea o aggiorna indice (2024-03-01-preview). Utile per gli scenari in cui l'efficienza di calcolo e memoria sono fondamentali e in cui la sacrificare una certa precisione è accettabile. Spesso comporta tempi di query più rapidi e footprint di memoria ridotto rispetto a Float32, anche se con un'accuratezza leggermente ridotta. È possibile assegnare un Float16 tipo agli incorporamenti degli indici Float32 come Float16. È anche possibile usare Float16 per incorporare modelli o processi di quantizzazione personalizzati che generano Float16 in modo nativo.
Collection(Edm.Int16) Int16 Intero con segno a 16 bit. Disponibile a partire da Crea o aggiorna indice (2024-03-01-preview). Offre un footprint di memoria ridotto rispetto a Float32 e il supporto per i metodi di quantizzazione con precisione più elevata, mantenendo comunque una precisione sufficiente per molte applicazioni. Adatto per i casi in cui l'efficienza della memoria è importante. Richiede la quantizzazione personalizzata che restituisce vettori come Int16.
Collection(Edm.SByte) Int8 Intero con segno a 8 bit. Disponibile a partire da Crea o aggiorna indice (2024-03-01-preview). Fornisce miglioramenti significativi per la memoria e l'efficienza di calcolo rispetto a Float32 o Float16. Tuttavia, è probabile che richieda tecniche supplementari (come la quantizzazione e l'overcampionamento) per compensare la riduzione della precisione e il richiamo in modo appropriato. Richiede la quantizzazione personalizzata che restituisce vettori come Int8.

Tipi di dati EDM per campi non di ctor

Tipo di dati Descrizione
Edm.String Dati di testo.
Edm.Boolean Contiene valori true/false.
Edm.Int32 Valori integer a 32 bit.
Edm.Int64 Valori integer a 64 bit.
Edm.Double Valori a virgola mobile IEEE 754 a precisione doppia.
Edm.DateTimeOffset Valori di data e ora rappresentati nel formato OData V4: yyyy-MM-ddTHH:mm:ss.fffZ o yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. La precisione dei DateTimeOffset campi è limitata a millisecondi. Se si caricano DateTimeOffset valori con precisione submillisecond, il valore restituito viene arrotondato per enumerazione fino a millisecondi (ad esempio, 2024-04-15T10:30:09.7552052Z viene restituito come 2024-04-15T10:30:09.7550000Z). Quando si caricano DateTimeOffset valori con informazioni sul fuso orario nell'indice, Azure AI Search normalizza questi valori in formato UTC. Ad esempio, 2024-01-13T14:03:00-08:00 viene archiviato come 2024-01-13T22:03:00Z. Se è necessario archiviare le informazioni sul fuso orario, aggiungere un campo aggiuntivo all'indice.
Edm.GeographyPoint Punto che rappresenta una località geografica del mondo. Per i corpi di richiesta e risposta, la rappresentazione dei valori di questo tipo segue il formato di tipo GeoJSON "Point". Per gli URL, OData usa un formato letterale basato sullo standard WKT. Il valore letterale di un punto viene costruito come geography'POINT(lon lat)'.
Edm.ComplexType Oggetti le cui proprietà sono mappate a sottocampi che possono essere di qualsiasi altro tipo di dati supportato. Questo tipo consente l'indicizzazione di dati gerarchici strutturati, ad esempio JSON. Gli oggetti in un campo di tipo Edm.ComplexType possono contenere oggetti annidati, ma il livello di annidamento è limitato. I limiti sono descritti in Limiti del servizio.
Collection(Edm.String) Elenco di stringhe.
Collection(Edm.Boolean) Elenco di valori booleani.
Collection(Edm.Int32) Elenco di valori interi a 32 bit.
Collection(Edm.Int64) Elenco di valori integer a 64 bit.
Collection(Edm.Double) Elenco di valori numerici a precisione doppia.
Collection(Edm.DateTimeOffset) Elenco di valori di data e ora.
Collection(Edm.GeographyPoint) Elenco di punti che rappresentano le posizioni geografiche.
Collection(Edm.ComplexType) Elenco di oggetti di tipo Edm.ComplexType. Esiste un limite per il numero massimo di elementi in tutte le raccolte di tipo Edm.ComplexType in un documento. Per informazioni dettagliate , vedere Limiti del servizio .

Tutti i tipi precedenti sono nullable, ad eccezione delle raccolte di tipi primitivi e complessi, Collection(Edm.String)ad esempio . I campi di tipo nullable possono essere impostati esplicitamente su Null. Vengono automaticamente impostati su Null quando vengono omessi da un documento caricato in un indice di azure per intelligenza artificiale Search. I campi della raccolta vengono impostati automaticamente su vuoto ([] in JSON) quando vengono omessi da un documento. Inoltre, non è possibile archiviare un valore Null in un campo di raccolta.

A differenza delle raccolte complesse, non esiste un limite massimo specifico per il numero di elementi in una raccolta di tipi primitivi, ma il limite massimo di 16 MB per le dimensioni del payload si applica a tutte le parti dei documenti, incluse le raccolte.

Tipo di dati geospaziali usato nelle espressioni di filtro

In Azure AI Search, la ricerca geospaziale viene espressa come filtro.

Edm.GeographyPolygon è un poligono che rappresenta un'area geografica del mondo. Anche se questo tipo non può essere usato nei campi del documento, può essere usato come argomento per la geo.intersects funzione. Il formato letterale per gli URL in OData si basa sugli standard WKT (testo noto) e sugli standard di accesso alle funzionalità semplici di OGC. Il valore letterale di un poligono viene costruito come geography'POLYGON((lon lat, lon lat, ...))'

Importante

I punti in un poligono devono essere in ordine antiorario. I punti in un poligono vengono interpretati in ordine antiorario, rispetto all'interno del poligono. Ad esempio, un poligono chiuso a 4 punti intorno a Londra sarebbe -0,3°W 51,6°N [in alto a sinistra] , -0,3°W 51,4°N [in basso a sinistra], 0,1°E 51,4°N [in basso a destra], 0,1°E 51,6°N [in alto a destra], -0,3°W 51,6°N [punto iniziale].

Vedi anche