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 utilizados nas expressões de filtro são escritos de acordo com o Modelo de Dados de Entidade (EDM). Especificar um tipo de dados EDM é um requisito para a definição de campo.

Nota

Se estiver a utilizar indexadores, veja Mapa do 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 num índice de pesquisa.

Tipos de dados EDM para campos de vetor

Um tipo de campo de vetor tem de ser válido para a saída do modelo de incorporação. Por exemplo, se utilizar text-embedding-ada-002, o formato de saída é Float32 ou Collection(Edm.Single). Neste cenário, não pode atribuir um Int8 tipo de dados porque a função de fundição de float para int primitivos é proibida. No entanto, pode lançar de Float32 para Float16 ou (Collection(Edm.Half)).

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

Tipo de dados Tipo de vetor Description Utilização recomendada
Collection(Edm.Byte) Binário Binário não assinado de 1 bit. Disponível a partir de Create ou Índice de Atualização (2024-05-01-preview). Suporta a integração com modelos que emitem incorporações binárias, como os modelos de incorporação binária v3 de Cohere. ou a lógica de quantização personalizada que emite uma saída binária não assinada de 1 bit. Para campos do tipo Collection(Edm.Byte), veja Indexar dados binários para obter ajuda com a especificação da definição do campo e algoritmos de pesquisa de vetores para dados binários.
Collection(Edm.Single) Float32 Vírgula flutuante de 32 bits. Disponível a partir de Create ou Índice de Atualização (2023-07-01-Preview). Este tipo de dados também é suportado em versões de pré-visualização mais recentes e na versão 2023-11-01estável . Tipo de dados predefinido nas ferramentas da Microsoft que criam campos de vetor em seu nome. Faz um equilíbrio entre precisão e eficiência. A maioria dos modelos de incorporação emite vetores como Float32.
Collection(Edm.Half) Float16 Vírgula flutuante de 16 bits com menor precisão e intervalo. Disponível a partir de Create ou Índice de Atualização (2024-03-01-preview). Útil para cenários em que a memória e a eficiência computacional são fundamentais e em que sacrificar alguma precisão é aceitável. Muitas vezes, resulta em tempos de consulta mais rápidos e redução da pegada de memória em comparação Float32com , embora com uma precisão ligeiramente reduzida. Pode atribuir um Float16 tipo a incorporações de índice Float32 como Float16. Também pode utilizar Float16 para incorporar modelos ou processos de quantização personalizados que emitem Float16 nativamente.
Collection(Edm.Int16) Int16 Número inteiro assinado de 16 bits. Disponível a partir de Create ou Índice de Atualização (2024-03-01-preview). Oferece uma redução da pegada de memória em comparação Float32 com e suporte para métodos de quantização de maior precisão, mantendo simultaneamente precisão suficiente para muitas aplicações. Adequado para casos em que a eficiência da memória é importante. Requer que tenha quantização personalizada que produz vetores como Int16.
Collection(Edm.SByte) Int8 Número inteiro assinado de 8 bits. Disponível a partir de Create ou Índice de Atualização (2024-03-01-preview). Fornece ganhos significativos de memória e eficiência computacional em comparação Float32 com ou Float16. No entanto, provavelmente requer técnicas suplementares (como quantização e sobreamplagem) para compensar a redução de precisão e recolha adequadamente. Requer que tenha quantização personalizada que produz vetores como Int8.

Tipos de dados EDM para campos não detetores

Tipo de dados Descrição
Edm.String Dados de texto.
Edm.Boolean Contém valores verdadeiro/falso.
Edm.Int32 Valores inteiros de 32 bits.
Edm.Int64 Valores inteiros de 64 bits.
Edm.Double Valores de vírgula 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 DateTimeOffset campos está limitada a milissegundos. Se carregar DateTimeOffset valores com precisão de submilissegundos, o valor devolvido é arredondado para milissegundos (por exemplo, 2024-04-15T10:30:09.7552052Z é devolvido como 2024-04-15T10:30:09.7550000Z). Quando carrega DateTimeOffset valores com informações de fuso horário para o índice, a Pesquisa de IA do Azure normaliza estes valores para UTC. Por exemplo, 2024-01-13T14:03:00-08:00 é armazenado como 2024-01-13T22:03:00Z. Se precisar de armazenar informações de fuso horário, adicione um campo extra ao índice.
Edm.GeographyPoint Um ponto que representa uma localização geográfica no mundo. Para os corpos de pedidos e respostas, a representação de valores deste tipo segue o formato de tipo "Ponto" GeoJSON. Para URLs, o OData utiliza um formulário literal com base na norma WKT. Um literal de ponto é construído como geography'POINT(lon lat)'.
Edm.ComplexType Objetos cujas propriedades mapeiam para subcampos que podem ser de qualquer outro tipo de dados suportado. Este tipo permite a indexação de dados hierárquicos estruturados, como JSON. Os objetos num campo do tipo Edm.ComplexType podem conter objetos aninhados, mas o nível de aninhamento é limitado. Os limites estão descritos em Limites de serviço.
Collection(Edm.String) Uma lista de cadeias.
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/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. Existe um limite para o número máximo de elementos em todas as coleções de tipo Edm.ComplexType num documento. Veja Limites de serviço para obter detalhes.

Todos os tipos acima são anuláveis, exceto coleções de tipos primitivos e complexos, por exemplo, Collection(Edm.String). Os campos nulos podem ser explicitamente definidos como nulos. São automaticamente definidos como nulos quando omitidos de um documento que é carregado para um índice da Pesquisa de IA do Azure. Os campos de coleção 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 num campo de coleção.

Ao contrário das coleções complexas, não existe um limite superior especificamente no número de itens numa coleção de tipos primitivos, mas o limite superior de 16 MB no tamanho do payload aplica-se a todas as partes de documentos, incluindo coleções.

Tipo de dados geoespacial utilizado 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 este tipo não possa ser utilizado em campos de documentos, pode ser utilizado como um argumento para a geo.intersects função. O formulário literal para URLs no OData baseia-se no WKT (texto bem conhecido) e nas normas de acesso de funcionalidades simples do OGC. Um literal de polígono é construído como geography'POLYGON((lon lat, lon lat, ...))'.

Importante

Os pontos num polígono têm de estar por ordem anti-horário. Os pontos num polígono são interpretados por ordem anti-horário, relativamente 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 [inferior esquerdo], 0,1°E 51,4°N [parte inferior direita], 0,1°E 51,6°N [canto superior direito], -0,3°W 51,6°N [ponto de partida].

Ver também