Partilhar via


Tipos de dados suportados (Azure AI Search)

Este artigo descreve os tipos de dados suportados pelo Azure AI Search. Os campos e os valores usados em expressões de filtro são digitados de acordo com o Entity Data Model (EDM). A especificação de um tipo de dados EDM é um requisito para a definição de campo.

Observação

Se você estiver usando indexadores , consulte Mapa de tipo de dados para indexadores no Azure AI Search para obter mais informações sobre como os indexadores mapeiam tipos de dados específicos de origem para tipos de dados EDM em um índice de pesquisa.

Tipos de dados EDM para campos vetoriais

Um campo vetorial tipo deve ser válido para a saída do seu modelo de incorporação. Por exemplo, se você usar text-embedding-ada-002, o formato de saída será Float32 ou Collection(Edm.Single). Nesse cenário, você não pode atribuir um tipo de dados Int8 porque a transmissão de float para int primitivos é proibida. No entanto, você pode transmitir de Float32 para Float16 ou (Collection(Edm.Half)).

Os campos vetoriais são uma matriz de incorporações. Em EDM, uma matriz é uma coleção.

Tipo de dados Tipo de vetor Descrição Utilização recomendada
Collection(Edm.Byte) Binário Binário não assinado de 1 bit. Disponível em Criar ou atualizar índice (2024-07-01). Suporta integração com modelos que emitem incorporações binárias, como os modelos de incorporação binária v3 da Cohere. ou lógica de quantização personalizada que emite saída binária não assinada de 1 bit. Para campos do tipo Collection(Edm.Byte), consulte de dados binários de índice para obter ajuda com a especificação da definição de campo e algoritmos de pesquisa vetorial para dados binários.
Collection(Edm.Single) Float32 Ponto flutuante de 32 bits. Disponível em Criar ou atualizar índice (2024-07-01). Este tipo de dados também é suportado em versões de pré-visualização mais recentes e na versão estável 2023-11-01. Tipo de dados padrão nas ferramentas da Microsoft que criam campos vetoriais em seu nome. Atinge um equilíbrio entre precisão e eficiência. A maioria dos modelos de incorporação emite vetores como Float32.
Collection(Edm.Half) Float16 Ponto flutuante de 16 bits com menor precisão e alcance. Disponível em Criar ou atualizar índice (2024-07-01). Útil para cenários onde a memória e a eficiência computacional são críticas e onde sacrificar alguma precisão é aceitável. Muitas vezes leva a tempos de consulta mais rápidos e menor espaço de memória em comparação com Float32, embora com precisão ligeiramente reduzida. Você pode atribuir um tipo de Float16 a indexar Float32 incorporações como Float16. Você também pode usar Float16 para incorporar modelos ou processos de quantização personalizados que emitem Float16 nativamente.
Collection(Edm.Int16) Int16 Inteiro assinado de 16 bits. Disponível em Criar ou atualizar índice (2024-07-01). Oferece espaço de memória reduzido em comparação com Float32 e suporte para métodos de quantização de alta precisão, mantendo a precisão suficiente para muitas aplicações. Adequado para casos em que a eficiência da memória é importante. Requer que você tenha quantização personalizada que produza vetores como Int16.
Collection(Edm.SByte) Int8 Inteiro assinado de 8 bits. Disponível em Criar ou atualizar índice (2024-07-01). Proporciona ganhos significativos de memória e eficiência computacional em comparação com Float32 ou Float16. No entanto, provavelmente requer técnicas suplementares (como quantização e sobreamostragem) para compensar a redução na precisão e recordar adequadamente. Requer que você tenha quantização personalizada que produza vetores como Int8.

Tipos de dados EDM para campos não vetoriais

Tipo de dados Descrição
Edm.String Dados de texto.
Edm.Boolean Contém valores verdadeiros/falsos.
Edm.Int32 Valores inteiros de 32 bits.
Edm.Int64 Valores inteiros de 64 bits.
Edm.Double Valores de ponto flutuante IEEE 754 de precisão dupla.
Edm.DateTimeOffset Valores de data e hora representados no formato OData V4: yyyy-MM-ddTHH:mm:ss.fffZ ou yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. A precisão dos campos DateTimeOffset é limitada a milissegundos. Se você carregar valores de DateTimeOffset com precisão de submilissegundos, o valor retornado será arredondado para milissegundos (por exemplo, 2024-04-15T10:30:09.7552052Z será retornado como 2024-04-15T10:30:09.7550000Z). Quando você carrega valores de DateTimeOffset com informações de fuso horário em seu índice, o Azure AI Search normaliza esses valores para UTC. Por exemplo, 2024-01-13T14:03:00-08:00 é armazenado como 2024-01-13T22:03:00Z. Se você precisar armazenar informações de fuso horário, adicione um campo extra ao seu índice.
Edm.GeographyPoint Um ponto que representa uma localização geográfica no globo. Para corpos de solicitação e resposta, a representação de valores desse tipo segue o formato de tipo "Ponto" GeoJSON. Para URLs, o OData usa um formulário literal baseado no padrão WKT. Um ponto literal é construído como geografia'POINT(lon lat)'.
Edm.ComplexType Objetos cujas propriedades são mapeadas para subcampos que podem ser de qualquer outro tipo de dados suportado. Esse tipo permite a indexação de dados hierárquicos estruturados, como JSON. Os objetos em um campo do tipo Edm.ComplexType podem conter objetos aninhados, mas o nível de aninhamento é limitado. Os limites são descritos em Limites de serviço.
Collection(Edm.String) Uma lista de cadeias de caracteres.
Collection(Edm.Boolean) Uma lista de valores booleanos.
Collection(Edm.Int32) Uma lista de valores inteiros de 32 bits.
Collection(Edm.Int64) Uma lista de valores inteiros de 64 bits.
Collection(Edm.Double) Uma lista de valores numéricos de precisão dupla.
Collection(Edm.DateTimeOffset) Uma lista de valores de data e hora.
Collection(Edm.GeographyPoint) Uma lista de pontos que representam localizações geográficas.
Collection(Edm.ComplexType) Uma lista de objetos do tipo Edm.ComplexType. Há um limite para o número máximo de elementos em todas as coleções do tipo Edm.ComplexType em um documento. Consulte Limites de serviço para obter detalhes.

Todos os tipos acima são anuláveis, exceto para coleções de tipos primitivos e complexos, por exemplo, Collection(Edm.String). Os campos anuláveis podem ser explicitamente definidos como nulos. Eles são automaticamente definidos como nulos quando omitidos de um documento carregado em um índice do Azure AI Search. Os campos de coleta são automaticamente definidos como vazios ([] em JSON) quando são omitidos de um documento. Além disso, não é possível armazenar um valor nulo em um campo de coleção.

Ao contrário de coleções complexas, não há limite superior especificamente para o número de itens em uma coleção de tipos primitivos, mas o limite superior de 16 MB de no tamanho da carga útil se aplica a todas as partes de documentos, incluindo coleções.

Tipo de dados geoespaciais usados em expressões de filtro

No Azure AI Search, a pesquisa geoespacial é expressa como um filtro.

Edm.GeographyPolygon é um polígono que representa uma região geográfica no globo. Embora esse tipo não possa ser usado em campos de documento, ele pode ser usado como um argumento para a função geo.intersects. A forma literal para URLs no OData é baseada no WKT (texto conhecido) e nos padrões de acesso a recursos simples do OGC. Um polígono literal é construído como geografia'POLYGON((lon lat, lon lat, ...)'.

Importante

Os pontos em um polígono devem estar em ordem anti-horário. Os pontos em um polígono são interpretados no sentido anti-horário, em relação ao interior do polígono. Por exemplo, um polígono fechado de 4 pontos em torno de Londres seria -0.3°W 51.6°N [canto superior esquerdo], -0.3°W 51.4°N [canto inferior esquerdo], 0.1°E 51.4°N [canto inferior direito], 0.1°E 51.6°N [canto superior direito], -0.3°W 51.6°N [ponto de partida].

Ver também