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

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

Notes

Si vous utilisez des indexeurs, consultez Mappage des types de données pour les indexeurs dans Azure AI Recherche 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 type de champ vectoriel doit être valide pour la sortie de votre modèle d’incorporation. Par exemple, si vous utilisez text-embedding-ada-002, le format de sortie est Float32 ou Collection(Edm.Single). Dans ce scénario, vous ne pouvez pas affecter un Int8 type de données, car le cast de float en int primitives est interdit. Toutefois, vous pouvez effectuer un cast de vers Float32Float16 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.Single) Float32 Virgule flottante 32 bits. Disponible à partir de Créer ou mettre à jour un index (2023-07-01-Preview). Ce type de données est également pris en charge dans les versions préliminaires plus récentes et dans la version 2023-11-01stable . Type de données par défaut dans les outils Microsoft qui créent des champs vectoriels en votre nom. Trouve un équilibre entre précision et efficacité. La plupart des modèles d’incorporation émettent des vecteurs en tant que Float32.
Collection(Edm.Half) Float16 Virgule flottante 16 bits avec une précision et une plage inférieures. Disponible à partir de Créer ou mettre à jour un index (2024-03-01-preview). Utile dans les scénarios où l’efficacité de la mémoire et des calculs est essentielle et où sacrifier une certaine précision est acceptable. Entraîne souvent des temps de requête plus rapides et une empreinte mémoire réduite par rapport à Float32, mais avec une précision légèrement réduite. Vous pouvez affecter un Float16 type à des incorporations d’index Float32 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. Disponible à partir de Créer ou mettre à jour un index (2024-03-01-preview). Offre une empreinte mémoire réduite par rapport à et la Float32 prise en charge des méthodes de quantisation plus précises tout en conservant une précision suffisante pour de nombreuses applications. Convient aux cas où l’efficacité de la mémoire est importante. Nécessite 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. Disponible à partir de Créer ou mettre à jour un index (2024-03-01-preview). Fournit des gains d’efficacité de mémoire et de calcul significatifs par rapport à Float32 ou Float16. Toutefois, elle nécessite probablement des techniques supplémentaires (comme la quantisation et le suréchantillonnage) pour compenser la réduction de la précision et le rappel de manière appropriée. Nécessite 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 de 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 DateTimeOffset champs est limitée à quelques millisecondes. Si vous chargez DateTimeOffset des valeurs avec une précision inférieure au milliliseconde, la valeur retournée est arrondie à quelques millisecondes (par exemple, 2024-04-15T10:30:09.7552052Z est retournée en tant que 2024-04-15T10:30:09.7550000Z). Lorsque vous chargez DateTimeOffset des valeurs avec des informations de fuseau horaire dans votre index, Azure AI Recherche normalise ces valeurs au format UTC. Par exemple, 2024-01-13T14:03:00-08:00 est stocké sous la forme 2024-01-13T22:03:00Z. Si vous avez besoin de stocker des informations de fuseau horaire, ajoutez un champ supplémentaire à votre index.
Edm.GeographyPoint Point représentant un emplacement géographique de la planète. Pour les corps de requête et de réponse, la représentation des valeurs de ce type suit le format de type « Point » GeoJSON. Pour les URL, OData utilise un formulaire littéral basé sur la norme WKT. Un littéral de point est construit comme geography'POINT(lon lat)'.
Edm.ComplexType Objets dont les propriétés sont mappées à des sous-champs qui peuvent être de n’importe quel 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 de service.
Collection(Edm.String) Liste de chaînes.
Collection(Edm.Boolean) Liste de valeurs booléennes.
Collection(Edm.Int32) Liste de valeurs entières 32 bits.
Collection(Edm.Int64) Liste de valeurs entières 64 bits.
Collection(Edm.Double) Liste de valeurs numériques à double précision.
Collection(Edm.DateTimeOffset) Liste des valeurs de date et heure.
Collection(Edm.GeographyPoint) Liste de points représentant des emplacements géographiques.
Collection(Edm.ComplexType) Liste d’objets de type Edm.ComplexType. Le nombre maximal d’éléments dans toutes les collections de type Edm.ComplexType d’un document est limité. Pour plus d’informations, consultez Limites de service.

Tous les types ci-dessus peuvent avoir la valeur Null, à l’exception des collections de types primitifs et complexes, par exemple . Collection(Edm.String) Les champs autorisant la valeur Null peuvent être définis explicitement sur null. Elles sont automatiquement définies sur null lorsqu’elles sont omises d’un document chargé dans un index de Recherche Azure AI. Les champs de collection sont automatiquement définis sur vides ([] au format JSON) lorsqu’ils sont omis 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 de taille de charge utile s’applique à toutes les parties des documents, y compris aux collections.

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

Dans Azure AI Recherche, 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 la planète. Bien que ce type ne puisse pas être utilisé dans les champs de document, il peut être utilisé comme argument de la geo.intersects fonction. Le formulaire littéral pour les URL dans OData est basé sur le WKT (bien connu) et les normes d’accès aux fonctionnalités simples de l’OGC. Un littéral de polygone est construit comme geography'POLYGON((lon lat, lon lat, ...))'.

Important

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

Voir aussi