Tipos de dados com suporte (Pesquisa de IA do Azure)

Este artigo descreve os tipos de dados compatíveis com o Pesquisa de IA do Azure. Os campos e os valores usados em expressões de filtro são digitados de acordo com o EDM (Modelo de Dados de Entidade). Especificar 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 Pesquisa para obter mais informações sobre como os indexadores mapeiam tipos de dados específicos da origem para tipos de dados EDM em um índice de pesquisa.

Tipos de dados EDM para campos de vetor

Um tipo de campo de vetor deve ser válido para a saída do modelo de inserçã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 porque a conversão Int8 de float para int primitivas é proibida. No entanto, você pode converter de Float32 para Float16 ou (Collection(Edm.Half)).

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

Tipo de dados Tipo de vetor Descrição Uso recomendado
Collection(Edm.Single) Float32 Ponto flutuante de 32 bits. Disponível a partir de Criar ou Atualizar Índice (2023-07-01-Preview). Esse tipo de dados também tem suporte em versões de visualização mais recentes e na versão 2023-11-01estável . Tipo de dados padrão nas ferramentas da Microsoft que criam campos de vetor em seu nome. Atinge um equilíbrio entre precisão e eficiência. A maioria dos modelos de inserção emite vetores como Float32.
Collection(Edm.Half) Float16 Ponto flutuante de 16 bits com precisão e intervalo mais baixos. Disponível a partir de Criar ou Atualizar Índice (2024-03-01-preview). Útil para cenários em que a memória e a eficiência computacional são críticas e onde sacrificar alguma precisão é aceitável. Geralmente leva a tempos de consulta mais rápidos e volume de memória reduzido em comparação com Float32, embora com precisão ligeiramente reduzida. Você pode atribuir um Float16 tipo a inserções de índice Float32 como Float16. Você também pode usar Float16 para inserir modelos ou processos de quantização personalizados que emitem Float16 nativamente.
Collection(Edm.Int16) Int16 Inteiro com sinal de 16 bits. Disponível a partir de Criar ou Atualizar Índice (2024-03-01-preview). Oferece volume de memória reduzido em comparação com e suporte para Float32 métodos de quantização de maior precisão, mantendo a precisão suficiente para muitos aplicativos. Adequado para casos em que a eficiência de memória é importante. Requer que você tenha uma quantização personalizada que produz vetores como Int16.
Collection(Edm.SByte) Int8 Inteiro com sinal de 8 bits. Disponível a partir de Criar ou Atualizar Índice (2024-03-01-preview). Fornece ganhos significativos de memória e eficiência computacional em comparação com Float32 ou Float16. No entanto, provavelmente requer técnicas complementares (como quantização e excesso de deslocamento) para compensar a redução de precisão e recall adequadamente. Requer que você tenha uma quantização personalizada que produz vetores como Int8.

Tipos de dados EDM para campos não vetores

Tipo de dados Descrição
Edm.String Dados de texto.
Edm.Boolean Contém valores true/false.
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 DateTimeOffset campos é limitada a milissegundos. Se você carregar DateTimeOffset valores com precisão de submillisecond, 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 DateTimeOffset valores com informações de fuso horário no índice, a IA do Azure Pesquisa 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 índice.
Edm.GeographyPoint Um ponto que representa uma localização geográfica em todo o mundo. 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 com base no padrão WKT. Um literal de ponto é criado como geography'POINT(lon lat)'.
Edm.ComplexType Objetos cujas propriedades são mapeadas para subcampos que podem ser de qualquer outro tipo de dados com suporte. Esse tipo permite a indexação de dados hierárquicos estruturados, como JSON. 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 boolianos.
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 no 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 coleções de tipos primitivos e complexos, por exemplo, Collection(Edm.String). Os campos que permitem valores nulos podem ser definidos explicitamente como nulos. Eles são automaticamente definidos como nulos quando omitidos de um documento carregado em um índice de Pesquisa de IA do Azure. Os campos de coleção são definidos automaticamente 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 das coleções complexas, não há limite superior especificamente no número de itens em uma coleção de tipos primitivos, mas o limite superior de 16 MB no tamanho da carga se aplica a todas as partes de documentos, incluindo coleções.

Tipo de dados geoespacial usado em expressões de filtro

No Pesquisa de IA do Azure, a pesquisa geoespacial é expressa como um filtro.

Edm.GeographyPolygon é um polígono que representa uma região geográfica em todo o mundo. Embora esse tipo não possa ser usado em campos de documento, ele pode ser usado como um argumento para a geo.intersects função . O formulário literal para URLs no OData baseia-se no WKT (texto conhecido) e nos padrões simples de acesso a recursos do OGC. Um literal de polígono é criado como geography'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 em ordem anti-horário, em relação ao interior do polígono. Por exemplo, um polígono fechado de 4 pontos ao redor 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 [canto inferior direito], 0,1°E 51,6°N [canto superior direito], -0,3°W 51,6°N [ponto de partida].

Confira também