Tipi di dati supportati (Ricerca di intelligenza artificiale di Azure)
Questo articolo descrive i tipi di dati supportati da Ricerca di intelligenza artificiale di Azure. I campi e i valori usati nelle espressioni di filtro vengono tipizzati in base all'Entity Data Model (EDM). Specificare un tipo di dati EDM è un requisito per la definizione del campo.
Nota
Se si usa indicizzatori, vedere mapping dei tipi di dati per gli indicizzatori in Ricerca di intelligenza artificiale di Azure per altre informazioni sul 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 campo vettore tipo 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 tipo di dati Int8
perché non è consentito eseguire il cast da float
alle primitive int
. È 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.Byte) |
Binario | Binario senza segno a 1 bit. Disponibile a livello generale in Creare o aggiornare l'indice (2024-07-01). | Supporta l'integrazione con modelli che generano incorporamenti binari, ad esempio modelli di incorporamento binario v3 di Cohere. o logica di quantizzazione personalizzata che genera un output binario senza segno a 1 bit. Per i campi di tipo Collection(Edm.Byte) , vedere Index binary data for help with specifying the field definition and vector search algorithms for binary data .For help with specify the field definition and vector search algorithms for binary data. |
Collection(Edm.Single) |
Float32 |
Virgola mobile a 32 bit. Disponibile a livello generale in Creare o aggiornare l'indice (2024-07-01). Questo tipo di dati è supportato anche nelle versioni di anteprima più recenti e nella versione stabile 2023-11-01 . |
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 livello generale in Creare o aggiornare l'indice (2024-07-01). | Utile per gli scenari in cui la memoria e l'efficienza di calcolo sono fondamentali e in cui il sacrificio di una certa precisione è accettabile. Spesso comporta tempi di query più rapidi e un footprint di memoria ridotto rispetto a Float32 , anche se con un'accuratezza leggermente ridotta. È possibile assegnare un tipo di Float16 all'indice Float32 incorporamenti 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 livello generale in Creare o aggiornare l'indice (2024-07-01). | Offre un footprint di memoria ridotto rispetto ai 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 livello generale in Creare o aggiornare l'indice (2024-07-01). | Offre miglioramenti significativi in termini di memoria e 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 i campi non di spostamento
Tipo di dati | Descrizione |
---|---|
Edm.String |
Dati di testo. |
Edm.Boolean |
Contiene valori true/false. |
Edm.Int32 |
Valori interi a 32 bit. |
Edm.Int64 |
Valori interi 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 campi DateTimeOffset è limitata a millisecondi. Se si caricano valori DateTimeOffset con precisione submillisecond, il valore restituito viene arrotondato fino a millisecondi ( ad esempio, 2024-04-15T10:30:09.7552052Z viene restituito come 2024-04-15T10:30:09.7550000Z ). Quando si caricano valori DateTimeOffset con informazioni sul fuso orario nell'indice, Ricerca di intelligenza artificiale di Azure 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 posizione geografica nel globo. 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. Un valore letterale 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 interi 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 al 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, ad esempio Collection(Edm.String)
. I campi nullable possono essere impostati in modo esplicito su Null. Vengono impostati automaticamente su Null quando vengono omessi da un documento caricato in un indice di Ricerca di intelligenza artificiale di Azure. 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 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 superiore di di 16 MB per le dimensioni del payload si applica a tutte le parti di documenti, incluse le raccolte.
Tipo di dati geospaziali usato nelle espressioni di filtro
In Ricerca di intelligenza artificiale di Azure la ricerca geospaziale viene espressa come filtro.
Edm.GeographyPolygon è un poligono che rappresenta un'area geografica del globo. Anche se questo tipo non può essere usato nei campi del documento, può essere usato come argomento per la funzione geo.intersects
. Il formato letterale per gli URL in OData si basa sugli standard di accesso alle funzionalità WKT (testo noto) e agli standard di accesso alle funzionalità semplici di OGC. Un valore letterale 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].