Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A Pesquisa de IA do Azure dá suporte à compartimentalização escalar e binária para reduzir o tamanho dos vetores em um índice de pesquisa. A quantização é recomendada porque reduz o uso tanto da memória quanto do armazenamento em disco para embeddings float16 e float32. Para compensar os efeitos da compressão com perdas, você pode adicionar sobreamostragem e redefinição de pontuação.
Para usar a quantização interna, siga estas etapas:
- Comece com campos vetoriais e uma
vectorSearchconfiguração para um índice - Adicionar
vectorSearch.compressions - Adicione uma configuração de
scalarQuantizationoubinaryQuantizatione forneça um nome a ela - Defina propriedades opcionais para atenuar os efeitos da indexação com perdas
- Crie um novo perfil de vetor que usa a configuração nomeada
- Crie o campo vetorial com o novo perfil de vetor
- Carregue o índice com dados do tipo float32 ou float16 que são quantizados durante o processo de indexação com a configuração que você definiu.
- Opcionalmente, consulte dados quantizados usando o parâmetro oversampling. Se o campo vetorial não especificar superamostragem em sua definição, você poderá adicioná-lo no momento da consulta.
Dica
Azure AI Search: Reduza os custos de vetores em até 92,5%% com novas técnicas de compressão compara estratégias de compressão e explica as economias em armazenamento e custos. Ele também inclui métricas para medir a relevância com base no NDCG (ganho cumulativo com desconto normalizado), demonstrando que você pode compactar seus dados sem sacrificar a qualidade da pesquisa.
Pré-requisitos
- Campos de vetores em um índice de pesquisa, com uma configuração que especifica o algoritmo Hierarchical Navigable Small Worlds (HNSW) ou o algoritmo K-Nearest Neighbor (KNN) exaustivo e um novo perfil de vetor.
Técnicas de quantização suportadas
A quantização se aplica a campos vetoriais que recebem vetores do tipo float. Nos exemplos deste artigo, o tipo de dados de campo é Collection(Edm.Single) para inserções float32 de entrada, mas também há suporte para float16. Quando os vetores são recebidos em um campo com compactação configurada, o mecanismo executa a quantização para reduzir o volume dos dados de vetor na memória e no disco.
Dois tipos de quantização são suportados:
A quantização escalar comprime valores flutuantes em tipos de dados mais restritos. A Pesquisa de IA atualmente dá suporte ao int8, que é de 8 bits, reduzindo o tamanho do índice vetorial quatro vezes.
A compartimentalização binária converte floats em bits binários, o que ocupa 1 bit. Isso resulta em um tamanho de índice vetorial até 28 vezes menor.
Observação
Embora os serviços gratuitos ofereçam suporte à quantização, eles não demonstram a economia de armazenamento total devido à cota de armazenamento limitada.
Como funciona a quantização escalar na Pesquisa de IA do Azure
A quantização escalar reduz a resolução de cada número em cada vetor de incrustação. Em vez de descrever cada número como um número de ponto flutuante de 16 bits ou 32 bits, ele usa um inteiro de 8 bits. Ele identifica um intervalo de números (normalmente 99º percentil mínimo e máximo) e os divide em um número finito de níveis ou compartimento, atribuindo a cada compartimento um identificador. Na compartimentalização escalar de 8 bits, há 2^8 ou 256 compartimentos possíveis.
Cada componente do vetor é mapeado para o valor representativo mais próximo dentro desse conjunto de níveis de compartimentalização em um processo semelhante ao arredondamento de um número real para o inteiro mais próximo. No vetor de 8 bits quantificado, o número do identificador fica no lugar do valor original. Após a quantização, cada vetor é representado por um array de identificadores para as faixas às quais seus componentes pertencem. Esses vetores quantificados exigem muito menos bits para armazenar em comparação com o vetor original, reduzindo assim os requisitos de armazenamento e o volume de memória.
Como funciona a compartimentalização binária na Pesquisa de IA do Azure
A compartimentalização binária compacta vetores de alta dimensão, representando cada componente como um único bit, 0 ou 1. Esse método reduz drasticamente o volume de memória e acelera as operações de comparação de vetores, que são cruciais para tarefas de pesquisa e recuperação. Os testes de parâmetro de comparação mostram uma redução de até 96% no tamanho do índice vetorial.
É particularmente eficaz para inserções com dimensões maiores que 1024. Para dimensões menores, recomendamos testar a qualidade da quantização binária ou tentar a quantização escalar. Além disso, descobrimos que a quantização binária tem um desempenho muito bom quando as inserções são centradas em torno de zero. Os modelos de inserção mais populares oferecidos por OpenAI, Cohere e Mistral são centralizados em torno de zero.
Técnicas de reavaliação suportadas
A reavaliação é uma técnica opcional usada para compensar a perda de informações devido à quantização vetorial. Durante a execução da consulta, ele usa a superamostragem para pegar vetores extras e informações complementares para reavaliar os resultados iniciais encontrados pela consulta. As informações suplementares são vetores originais descompactados de precisão total - ou somente para quantização binária - você tem a opção de reavaliar usando os candidatos de documentos quantizados binários em relação ao vetor de consulta.
Somente grafos HNSW permitem a reclassificação. O KNN exaustivo não dá suporte à reclassificação porque, por definição, todos os vetores são verificados no momento da consulta, o que torna a reclassificação e a sobreamostragem irrelevantes.
As opções de reclassificação são especificadas no índice, mas você pode realizar a reclassificação no momento da consulta adicionando o parâmetro de consulta de superamostragem.
| Object | Propriedades |
|---|---|
| Index | Adicione RescoringOptions à seção compactação de vetores. Os exemplos neste artigo usam RescoringOptions. |
| Query | Adicione oversampling nas definições de RawVectorQuery ou VectorizableTextQuery. Adicionar oversampling invoca a reavaliação no momento da consulta. |
Observação
A reavaliação de nomes dos parâmetros foi alterada nas últimas várias versões. Se você estiver usando uma API de visualização mais antiga, examine as instruções de atualização para lidar com alterações interruptivas.
O processo generalizado para repontuação é:
- A consulta vetor é executada em campos de vetor compactados.
- A consulta vetorial retorna os k principais candidatos superamostrados.
- Os candidatos k com sobreamostragem são reclassificados usando os vetores originais não compactados para compartimentalização escalar ou o produto de ponto da compartimentalização binária.
- Após a repontuação, os resultados são ajustados para que as correspondências mais relevantes apareçam primeiro.
A superamostragem para vetores quantizados escalares requer a disponibilidade dos vetores originais com precisão total. A sobreamostragem para vetores compartimentalizados binários pode usar vetores de precisão total (preserveOriginals) ou o produto de ponto do vetor binário (discardOriginals). Se você estiver otimizando o armazenamento de vetores, mantenha os vetores de precisão total no índice se precisar deles para fins de reavaliação. Para obter mais informações, consulte Eliminar instâncias de vetor opcionais do armazenamento.
Adicionar "compressões" a um índice de pesquisa
Esta seção explica como especificar uma vectorsSearch.compressions seção no índice. O exemplo a seguir mostra uma definição de índice parcial com uma coleção de campos que inclui um campo de vetor.
O exemplo de compactação inclui ambos scalarQuantization ou binaryQuantization. Você pode especificar quantas configurações de compactação forem necessárias e atribuir as que deseja a um perfil de vetor.
A sintaxe para vectorSearch.Compressions varia entre as APIs REST estáveis e de pré-visualização, com a pré-visualização adicionando mais opções para otimização de armazenamento, além das mudanças na sintaxe existente. A compatibilidade com versões anteriores é preservada por meio de mapeamentos internos de API, mas recomendamos a adoção das propriedades mais recentes no código destinado às versões 2024-11-01-preview e futuras.
Use a API REST Criar Índice ou Criar ou Atualizar Índice para definir as configurações de compactação.
POST https://[servicename].search.windows.net/indexes?api-version=2025-09-01
{
"name": "my-index",
"description": "This is a description of this index",
"fields": [
{ "name": "Id", "type": "Edm.String", "key": true, "retrievable": true, "searchable": true, "filterable": true },
{ "name": "content", "type": "Edm.String", "retrievable": true, "searchable": true },
{ "name": "vectorContent", "type": "Collection(Edm.Single)", "retrievable": false, "searchable": true, "dimensions": 1536,"vectorSearchProfile": "vector-profile-1"},
],
"vectorSearch": {
"profiles": [
{
"name": "vector-profile-1",
"algorithm": "use-hnsw",
"compression": "use-scalar"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": { },
"exhaustiveKnnParameters": null
}
],
"compressions": [
{
"scalarQuantizationParameters": {
"quantizedDataType": "int8"
},
"name": "mySQ8",
"kind": "scalarQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "preserveOriginals"
},
"truncationDimension": 2
},
{
"name": "myBQC",
"kind": "binaryQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "discardOriginals"
},
"truncationDimension": 2
}
]
},
}
Pontos principais:
kinddeve ser definido comoscalarQuantizationoubinaryQuantization.rescoringOptionssão uma coleção de propriedades usadas para compensar a compactação com perdas, reclassificando os resultados da consulta usando os vetores originais de precisão total que existem antes da compartimentalização. Para que a reclassificação funcione, você deve ter a instância de vetor que fornece esse conteúdo. DefinirrescoreStorageMethodcomodiscardOriginalsimpede que você useenableRescoringoudefaultOversampling. Para obter mais informações sobre o armazenamento de vetores, consulte Eliminar instâncias de vetor opcionais do armazenamento."rescoreStorageMethod": "preserveOriginals"reavalia os resultados da busca em vetores com os vetores originais de precisão total pode resultar em ajustes na pontuação de pesquisa e nas classificações, promovendo as correspondências mais relevantes conforme determinado pela etapa de reavaliação. Para a quantização binária, você pode definirrescoreStorageMethodparadiscardOriginalsreduzir ainda mais o armazenamento, sem reduzir a qualidade. Os vetores originais não são necessários para a quantização binária.defaultOversamplingconsidera um conjunto mais amplo de resultados potenciais para compensar a redução na informação da quantização. A fórmula para resultados potenciais consiste emkna consulta, com um multiplicador de sobreamostragem. Por exemplo, se a consulta especificar umkde 5 e a superamostragem for 20, a consulta efetivamente solicitará 100 documentos para uso na reclassificação, usando o vetor original descompactado para essa finalidade. Somente os principaiskresultados reclassificados são retornados. Essa propriedade é opcional. O valor padrão é 4.quantizedDataTypeé opcional e se aplica somente à compartimentalização escalar. Se você adicioná-lo, deve ser definido comoint8. Esse é o único tipo de dados primitivo com suporte para compartimentalização escalar no momento. O padrão éint8.truncationDimensionaproveita as funcionalidades inerentes dos modelos text-embedding-3 para "codificar informações em granularidades diferentes e permite que uma única incorporação se adapte às restrições computacionais de tarefas downstream" (consulte Matryoshka Representation Learning). Você pode usar dimensões truncadas com ou sem opções de revisão de pontuação. Para obter mais informações sobre como esse recurso é implementado na Pesquisa de IA do Azure, consulte Truncar dimensões usando a compactação de MRL.
Adicionar o algoritmo da busca em vetores
Você pode usar o algoritmo HNSW ou eKNN na API REST 2024-11-01-preview ou posterior. Para a versão estável, use somente HNSW. Se você quiser reavaliar, você deve escolher HNSW.
"vectorSearch": {
"profiles": [ ],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [ <see previous section>]
}
Criar e atribuir um novo perfil de vetor
Para usar uma nova configuração de compartimentalização, você deve criar um novo perfil de vetor. A criação de um novo perfil de vetor é necessária para criar índices compactados na memória. Seu novo perfil usa HNSW.
Na mesma definição de índice, crie um novo perfil de vetor e adicione uma propriedade de compactação e algoritmo. Aqui estão dois perfis, um para cada abordagem de quantização.
"vectorSearch": { "profiles": [ { "name": "vector-profile-hnsw-scalar", "compression": "use-scalar", "algorithm": "use-hnsw", "vectorizer": null }, { "name": "vector-profile-hnsw-binary", "compression": "use-binary", "algorithm": "use-hnsw", "vectorizer": null } ], "algorithms": [ <see previous section> ], "compressions": [ <see previous section> ] }Atribua um perfil de vetor a um novo campo de vetor. O tipo de dados de campo é float32 ou float16.
Na Pesquisa de IA do Azure, os equivalentes de EDM (Modelo de Dados de Entidade) dos tipos float32 e float16 são
Collection(Edm.Single)eCollection(Edm.Half), respectivamente.{ "name": "vectorContent", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-profile-hnsw-scalar", }Carregue o índice usando indexadores para indexação de modelo de pull ou APIs para indexação de modelo push.
Consultar um campo de vetor quantizado usando sobreamostragem
A sintaxe de consulta para um campo vetorial compactado ou quantizado é a mesma que para campos vetoriais não compactados, exceto se desejar substituir os parâmetros associados à superamostragem e reavaliação. Você pode adicionar um parâmetro oversampling para invocar a sobreamostragem e a reavaliação no momento da consulta.
Use Documentos de Pesquisa para a solicitação.
Lembre-se de que a definição de compactação de vetor no índice tem configurações para enableRescoring, rescoreStorageMethod e defaultOversampling para atenuar os efeitos da compactação com perdas. Você pode substituir os valores padrão para variar o comportamento no momento da consulta. Por exemplo, se defaultOversampling for 10.0, você poderá alterá-lo para outra coisa na solicitação de consulta.
Você pode definir o parâmetro de superamostragem mesmo que o índice não tenha explicitamente opções de repontuação ou defaultOversampling definição. Fornecer oversampling no momento da consulta substitui as configurações de índice para essa consulta e executa a consulta com um efetivo enableRescoring como verdadeiro.
POST https://[service-name].search.windows.net/indexes/demo-index/docs/search?api-version=2025-09-01
{
"vectorQueries": [
{
"kind": "vector",
"vector": [8, 2, 3, 4, 3, 5, 2, 1],
"fields": "myvector",
"oversampling": 12.0,
"k": 5
}
]
}
Pontos principais:
A sobrecarga se aplica a campos de vetor que passam por compactação de vetor, de acordo com a atribuição de perfil de vetor.
O excesso de otimização na consulta substitui o valor
defaultOversamplingno índice ou invoca a sobrecarga e a reclassificação no momento da consulta, mesmo que a configuração de compactação do índice não especifique opções de sobreamostragem ou reclassificação.