Compartir a través de


Tipos de datos admitidos (Azure AI Search)

En este artículo se describen los tipos de datos admitidos por Azure AI Search. Los campos y los valores usados en las expresiones de filtro se escriben según el Entity Data Model (EDM). Especificar un tipo de datos EDM es un requisito para la definición de campo.

Nota

Si usa indexadores, consulte Mapa de tipos de datos para indexadores en Azure AI Search para obtener más información sobre cómo los indexadores asignan tipos de datos específicos del origen a tipos de datos EDM en un índice de búsqueda.

Tipos de datos EDM para campos vectoriales

Un campo vectorial tipo debe ser válido para la salida del modelo de inserción. Por ejemplo, si usa text-embeding-ada-002, el formato de salida es Float32 o Collection(Edm.Single). En este escenario, no se puede asignar un tipo de datos Int8 porque la conversión de float a int primitivos está prohibida. Sin embargo, puede convertir de Float32 a Float16 o (Collection(Edm.Half)).

Los campos vectoriales son una matriz de incrustaciones. En EDM, una matriz es una colección.

Tipo de dato Tipo de vector Descripción Uso recomendado
Collection(Edm.Byte) Binario Binario sin signo de 1 bits. Disponible con carácter general en Crear o actualizar índice (2024-07-01). Admite la integración con modelos que emiten incrustaciones binarias, como modelos de inserción binaria v3 de Cohere. o lógica de cuantificación personalizada que emite una salida binaria sin signo de 1 bits. Para los campos de tipo Collection(Edm.Byte), vea Index binary data para obtener ayuda con la especificación de los algoritmos de definición de campo y búsqueda de vectores para datos binarios.
Collection(Edm.Single) Float32 Punto flotante de 32 bits. Disponible con carácter general en Crear o actualizar índice (2024-07-01). Este tipo de datos también se admite en versiones preliminares más recientes y en la versión estable 2023-11-01. Tipo de datos predeterminado en herramientas de Microsoft que crean campos vectoriales en su nombre. Alcanza un equilibrio entre precisión y eficiencia. La mayoría de los modelos de inserción emiten vectores como Float32.
Collection(Edm.Half) Float16 Punto flotante de 16 bits con menor precisión y rango. Disponible con carácter general en Crear o actualizar índice (2024-07-01). Resulta útil para escenarios en los que la memoria y la eficiencia computacional son críticas y donde se acepta sacrificar cierta precisión. A menudo conduce a tiempos de consulta más rápidos y una superficie de memoria reducida en comparación con Float32, aunque con una precisión ligeramente reducida. Puede asignar un tipo de Float16 para indexar Float32 incrustaciones como Float16. También puede usar Float16 para insertar modelos o procesos de cuantificación personalizados que emiten Float16 de forma nativa.
Collection(Edm.Int16) Int16 Entero de 16 bits con signo. Disponible con carácter general en Crear o actualizar índice (2024-07-01). Ofrece una superficie de memoria reducida en comparación con Float32 y compatibilidad con métodos de cuantificación de mayor precisión, a la vez que conserva la precisión suficiente para muchas aplicaciones. Adecuado para casos en los que la eficiencia de la memoria es importante. Requiere que tenga una cuantificación personalizada que genera vectores como Int16.
Collection(Edm.SByte) Int8 Entero de 8 bits con signo. Disponible con carácter general en Crear o actualizar índice (2024-07-01). Proporciona mejoras significativas de memoria y eficiencia computacional en comparación con Float32 o Float16. Sin embargo, es probable que requiera técnicas complementarias (como la cuantificación y el sobremuestreo) para compensar la reducción de precisión y recuperación adecuadamente. Requiere que tenga una cuantificación personalizada que genera vectores como Int8.

Tipos de datos EDM para campos no vectores

Tipo de dato Descripción
Edm.String Datos de texto.
Edm.Boolean Contiene valores true/false.
Edm.Int32 Valores enteros de 32 bits.
Edm.Int64 Valores enteros de 64 bits.
Edm.Double Valores de punto flotante IEEE 754 de precisión doble.
Edm.DateTimeOffset Valores de fecha y hora representados en formato OData V4: yyyy-MM-ddTHH:mm:ss.fffZ o yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. La precisión de los campos de DateTimeOffset está limitada a milisegundos. Si carga DateTimeOffset valores con precisión de submillisegundos, el valor devuelto se redondea hasta milisegundos (por ejemplo, 2024-04-15T10:30:09.7552052Z se devuelve como 2024-04-15T10:30:09.7550000Z). Al cargar valores DateTimeOffset con información de zona horaria en el índice, Azure AI Search normaliza estos valores a UTC. Por ejemplo, 2024-01-13T14:03:00-08:00 se almacena como 2024-01-13T22:03:00Z. Si necesita almacenar información de zona horaria, agregue un campo adicional al índice.
Edm.GeographyPoint Un punto que representa una ubicación geográfica en el mundo. Para los cuerpos de solicitud y respuesta, la representación de los valores de este tipo sigue el formato de tipo "Point" de GeoJSON. Para las direcciones URL, OData usa un formulario literal basado en el estándar WKT. Un literal de punto se construye como geography'POINT(lon lat)'.
Edm.ComplexType Objetos cuyas propiedades se asignan a subcampos que pueden ser de cualquier otro tipo de datos admitido. Este tipo habilita la indexación de datos jerárquicos estructurados, como JSON. Los objetos de un campo de tipo Edm.ComplexType pueden contener objetos anidados, pero el nivel de anidamiento es limitado. Los límites se describen en Límites del servicio.
Collection(Edm.String) Lista de cadenas.
Collection(Edm.Boolean) Lista de valores booleanos.
Collection(Edm.Int32) Lista de valores enteros de 32 bits.
Collection(Edm.Int64) Lista de valores enteros de 64 bits.
Collection(Edm.Double) Lista de valores numéricos de precisión doble.
Collection(Edm.DateTimeOffset) Lista de valores de fecha y hora.
Collection(Edm.GeographyPoint) Lista de puntos que representan ubicaciones geográficas.
Collection(Edm.ComplexType) Lista de objetos de tipo Edm.ComplexType. Hay un límite en el número máximo de elementos de todas las colecciones de tipo Edm.ComplexType de un documento. Consulte Límites del servicio para obtener más información.

Todos los tipos anteriores admiten valores NULL, excepto las colecciones de tipos primitivos y complejos, por ejemplo, Collection(Edm.String). Los campos que aceptan valores NULL se pueden establecer explícitamente en NULL. Se establecen automáticamente en NULL cuando se omiten de un documento que se carga en un índice de Azure AI Search. Los campos de colección se establecen automáticamente en vacío ([] en JSON) cuando se omiten de un documento. Además, no es posible almacenar un valor NULL en un campo de colección.

A diferencia de las colecciones complejas, no hay ningún límite superior específicamente en el número de elementos de una colección de tipos primitivos, pero el límite superior de de 16 MB en el tamaño de carga se aplica a todas las partes de documentos, incluidas las colecciones.

Tipo de datos geoespacial usado en expresiones de filtro

En Azure AI Search, la búsqueda geoespacial se expresa como filtro.

Edm.GeographyPolygon es un polígono que representa una región geográfica del mundo. Aunque este tipo no se puede usar en campos de documento, se puede usar como argumento para la función geo.intersects. El formato literal de las direcciones URL de OData se basa en el WKT (texto conocido) y los estándares de acceso de características simples de OGC. Un literal de polígono se construye como geography'POLYGON((lon lat, lon lat, ...))'.

Importante

Los puntos de un de polígono deben estar en orden contrario a las agujas del reloj. Los puntos de un polígono se interpretan en orden contrario a las agujas del reloj, en relación con el interior del polígono. Por ejemplo, un polígono cerrado de 4 puntos alrededor de Londres sería -0.3°W 51.6°N [superior izquierdo] , -0.3°W 51.4°N [inferior izquierda], 0.6°N 1°E 51.4°N [inferior derecha], 0.1°E 51.6°N [superior derecha], -0.3°W 51.6°N [punto inicial].

Consulte también