Share via


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 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 tipo de campo vectorial debe ser válido para la salida del modelo de inserción. Por ejemplo, si usa text-embedding-ada-002, el formato de salida es Float32 o Collection(Edm.Single). En este escenario, no se puede asignar un Int8 tipo de datos porque la conversión desde 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 datos Tipo de vector Descripción Uso recomendado
Collection(Edm.Byte) Binary Binario sin signo de 1 bits. Disponible a partir de Create o índice de actualización (2024-05-01-preview) . Admite la integración con modelos que emiten incrustaciones binarias, como los modelos de incrustación binaria v3 de Cohere. o la lógica de cuantificación personalizada que emite una salida binaria sin signo de 1 bits. Para ver los campos de tipo Collection(Edm.Byte), vea Indexar datos binarios para obtener ayuda con la especificación de la definición de campo y los algoritmos de búsqueda vectorial para datos binarios.
Collection(Edm.Single) Float32 Punto flotante de 32 bits. Disponible a partir de Create o índice de actualización (2023-07-01-Preview) . Este tipo de datos también se admite en versiones preliminares más recientes y en la versión 2023-11-01estable . 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 a partir de Create o índice de actualización (2024-03-01-preview) . 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 Float16 tipo para insertar Float32 índices como Float16. También puede usar Float16 para insertar modelos o procesos de cuantificación personalizados que emitan Float16 de forma nativa.
Collection(Edm.Int16) Int16 Entero de 16 bits con signo. Disponible a partir de Create o índice de actualización (2024-03-01-preview) . 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 los 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 a partir de Create o índice de actualización (2024-03-01-preview) . 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 la precisión y la recuperación adecuadamente. Requiere que tenga una cuantificación personalizada que genera vectores como Int8.

Tipos de datos EDM para campos novectores

Tipo de datos 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 el formato OData V4: yyyy-MM-ddTHH:mm:ss.fffZ o yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. La precisión de DateTimeOffset los campos 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 DateTimeOffset valores 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 todo el mundo. En el caso de 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 de 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 en todas las colecciones de tipo Edm.ComplexType de un documento. Consulte Límites de servicio para obtener más información.

Todos los tipos anteriores admiten valores NULL, excepto para colecciones de tipos primitivos y complejos, por ejemplo, Collection(Edm.String). Los campos que aceptan valores NULL pueden establecerse 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 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 globo. Aunque este tipo no se puede usar en campos de documento, se puede usar como argumento para la geo.intersects función. El formato literal de las direcciones URL de OData se basa en los estándares de acceso de características simples de WKT (texto conocido) y OGC. Un literal de polígono se construye como geography'POLYGON((lon lat, lon lat, ...))'.

Importante

Los puntos de un 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 izquierda] , -0,3°W 51,4°N [inferior izquierda], 0.0. 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