Types de données pris en charge (Recherche Azure AI)

Cet article décrit les types de données pris en charge par Recherche IA Azure. Les champs et les valeurs utilisées dans les expressions de filtre sont typés en fonction de la Entity Data Model (EDM). La spécification d’un type de données EDM est une exigence pour la définition de champ.

Note

Si vous utilisez indexeurs, consultez mappage de types de données pour les indexeurs dans recherche Azure AI pour plus d’informations sur la façon dont les indexeurs mappent des types de données spécifiques à la source aux types de données EDM dans un index de recherche.

Types de données EDM pour les champs vectoriels

Un champ de vecteur type doit être valide pour la sortie de votre modèle d’incorporation. Par exemple, si vous utilisez l’incorporation de texte-ada-002, le format de sortie est Float32 ou Collection(Edm.Single). Dans ce scénario, vous ne pouvez pas affecter un type de données Int8, car la conversion de float vers des primitives int est interdite. Toutefois, vous pouvez effectuer un cast de Float32 vers Float16 ou (Collection(Edm.Half)).

Les champs vectoriels sont un tableau d’incorporations. Dans EDM, un tableau est une collection.

Type de données Type de vecteur Description Utilisation recommandée
Collection(Edm.Byte) Binaire Binaire non signé 1 bits. En disponibilité générale dans créer ou mettre à jour un index (2024-07-01). Prend en charge l’intégration avec les modèles qui émettent des incorporations binaires, telles que modèles d’incorporation binaire v3 de Cohere. ou une logique de quantisation personnalisée qui émet une sortie binaire non signée 1 bits. Pour connaître les champs de type Collection(Edm.Byte), consultez Index des données binaires pour obtenir de l’aide sur la spécification de la définition de champ et des algorithmes de recherche vectorielle pour les données binaires.
Collection(Edm.Single) Float32 Virgule flottante 32 bits. En disponibilité générale dans créer ou mettre à jour un index (2024-07-01). Ce type de données est également pris en charge dans les versions préliminaires plus récentes et dans la version stable 2023-11-01. Type de données par défaut dans les outils Microsoft qui créent des champs vectoriels en votre nom. Atteint un équilibre entre précision et efficacité. La plupart des modèles incorporés émettent des vecteurs comme Float32.
Collection(Edm.Half) Float16 Virgule flottante 16 bits avec une précision et une plage inférieures. En disponibilité générale dans créer ou mettre à jour un index (2024-07-01). Utile pour les scénarios où l’efficacité de la mémoire et du calcul est critique et où le sacrifice d’une certaine précision est acceptable. Souvent, les temps de requête sont plus rapides et l’encombrement mémoire réduit par rapport à Float32, bien qu’avec une précision légèrement réduite. Vous pouvez affecter un type de Float16 à l’index Float32 incorporations en tant que Float16. Vous pouvez également utiliser Float16 pour incorporer des modèles ou des processus de quantisation personnalisés qui émettent Float16 en mode natif.
Collection(Edm.Int16) Int16 Entier signé 16 bits. En disponibilité générale dans créer ou mettre à jour un index (2024-07-01). Offre une empreinte mémoire réduite par rapport à Float32 et la prise en charge des méthodes de quantisation plus précise tout en conservant une précision suffisante pour de nombreuses applications. Adapté aux cas où l’efficacité de la mémoire est importante. Exige que vous ayez une quantisation personnalisée qui génère des vecteurs en tant que Int16.
Collection(Edm.SByte) Int8 Entier signé 8 bits. En disponibilité générale dans créer ou mettre à jour un index (2024-07-01). Fournit des gains significatifs en mémoire et en calcul par rapport à Float32 ou Float16. Toutefois, il nécessite probablement des techniques supplémentaires (comme la quantisation et le surachantillonnage) pour compenser la réduction de la précision et du rappel de manière appropriée. Exige que vous ayez une quantisation personnalisée qui génère des vecteurs en tant que Int8.

Types de données EDM pour les champs non-vecteurs

Type de données Description
Edm.String Données texte.
Edm.Boolean Contient des valeurs true/false.
Edm.Int32 Valeurs entières 32 bits.
Edm.Int64 Valeurs entières 64 bits.
Edm.Double Valeurs à virgule flottante IEEE 754 double précision.
Edm.DateTimeOffset Valeurs de date et d’heure représentées au format OData V4 : yyyy-MM-ddTHH:mm:ss.fffZ ou yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. La précision des champs DateTimeOffset est limitée à millisecondes. Si vous chargez des valeurs DateTimeOffset avec une précision de sous-milliseconde, la valeur retournée est arrondie à millisecondes (par exemple, 2024-04-15T10:30:09.7552052Z est retournée en tant que 2024-04-15T10:30:09.7550000Z). Lorsque vous chargez des valeurs DateTimeOffset avec des informations de fuseau horaire dans votre index, Recherche Azure AI normalise ces valeurs au format UTC. Par exemple, 2024-01-13T14:03:00-08:00 est stockée en tant que 2024-01-13T22:03:00Z. Si vous devez stocker des informations de fuseau horaire, ajoutez un champ supplémentaire à votre index.
Edm.GeographyPoint Point représentant un emplacement géographique sur le globe. Pour les corps de requête et de réponse, la représentation des valeurs de ce type suit le format de type GeoJSON « Point ». Pour les URL, OData utilise un formulaire littéral basé sur la norme WKT. Un littéral de point est construit en tant que geography’POINT(lon lat)'.
Edm.ComplexType Objets dont les propriétés sont mappées aux sous-champs qui peuvent être d’un autre type de données pris en charge. Ce type permet l’indexation de données hiérarchiques structurées telles que JSON. Les objets d’un champ de type Edm.ComplexType peuvent contenir des objets imbriqués, mais le niveau d’imbrication est limité. Les limites sont décrites dans Limites du service.
Collection(Edm.String) Liste de chaînes.
Collection(Edm.Boolean) Liste des valeurs booléennes.
Collection(Edm.Int32) Liste des valeurs entières 32 bits.
Collection(Edm.Int64) Liste des valeurs entières 64 bits.
Collection(Edm.Double) Liste de valeurs numériques double précision.
Collection(Edm.DateTimeOffset) Liste des valeurs d’heure de date.
Collection(Edm.GeographyPoint) Liste de points représentant des emplacements géographiques.
Collection(Edm.ComplexType) Liste d’objets de type Edm.ComplexType. Il existe une limite quant au nombre maximal d’éléments dans toutes les collections de types Edm.ComplexType dans un document. Pour plus d’informations, consultez limites de service.

Tous les types ci-dessus sont nullables, à l’exception des collections de types primitifs et complexes, par exemple, Collection(Edm.String). Les champs nullables peuvent être définis explicitement sur Null. Elles sont automatiquement définies sur Null lorsqu’elles sont omises à partir d’un document chargé dans un index Recherche IA Azure. Les champs de collection sont automatiquement définis sur vides ([] au format JSON) lorsqu’ils sont omis à partir d’un document. En outre, il n’est pas possible de stocker une valeur Null dans un champ de collection.

Contrairement aux collections complexes, il n’existe aucune limite supérieure spécifique au nombre d’éléments d’une collection de types primitifs, mais la limite supérieure de 16 Mo sur la taille de charge utile s’applique à toutes les parties de documents, y compris les collections.

Type de données géospatiales utilisé dans les expressions de filtre

Dans Recherche IA Azure, la recherche géospatiale est exprimée sous la forme d’un filtre.

Edm.GeographyPolygon est un polygone représentant une région géographique sur le globe. Bien que ce type ne puisse pas être utilisé dans les champs de document, il peut être utilisé comme argument pour la fonction geo.intersects. Le formulaire littéral pour les URL dans OData est basé sur le WKT (texte connu) et les normes d’accès aux fonctionnalités simples de l’OGC. Un littéral de polygone est construit en tant que geography’POLYGON((lon lat, lon lat, ...))'.

Important

Les points d’un polygone doivent être dans l’ordre inverse. Les points d’un polygone sont interprétés dans l’ordre inverse, par rapport à l’intérieur du polygone. Par exemple, Un polygone fermé de 4 points autour de Londres serait -0,3°W 51,6°N [haut à gauche] , -0,3°W 51,4°N [bas à gauche], 0,0 1°E 51.4°N [bas à droite], 0,1°E 51.6°N [haut à droite], -0,3°W 51.6°N [point de départ].

Voir aussi