Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Azure AI Search dá suporte à quantização escalar e binária para reduzir o tamanho dos vetores em um índice de pesquisa. A quantização é recomendada porque reduz a memória e o armazenamento em disco para incorporações float16 e float32. Para compensar os efeitos da compactação com perdas, pode-se adicionar sobreamostragem e reavaliação.
Para usar a quantização interna, siga estas etapas:
- Comece com campos vetoriais e uma
vectorSearchconfiguração para um índice - Adicionar
vectorSearch.compressions - Adicionar uma configuração
scalarQuantizationoubinaryQuantizatione dar-lhe um nome - Definir propriedades opcionais para atenuar os efeitos da indexação destrutiva
- Criar um novo perfil de vetor que usa a configuração nomeada
- Criar um novo campo vetorial com o novo perfil vetorial
- Carregue o índice com dados float32 ou float16 que são quantizados durante a indexação com a configuração que definiu.
- Opcionalmente, consulte dados quantificados usando o parâmetro de sobreamostragem. Se o campo de vetor não especificar a sobreamostragem em sua definição, você poderá adicioná-lo no momento da consulta.
Sugestão
Azure AI Search: Reduza os custos de vetor até 92,5% com novas técnicas de compressão compara estratégias de compressão e explica a economia em armazenamento e custos. Ele também inclui métricas para medir a relevância com base no ganho cumulativo descontado normalizado (NDCG), demonstrando que você pode compactar seus dados sem sacrificar a qualidade da pesquisa.
Pré-requisitos
-
Campos vetoriais em um índice de pesquisa, com uma
vectorSearchconfiguração especificando o algoritmo Hierarchical Navigable Small Worlds (HNSW) ou o exaustivo K-Nearest Neighbor (KNN) e um novo perfil vetorial.
Técnicas de quantização suportadas
A quantização aplica-se a campos vetoriais que recebem vetores do tipo float. Nos exemplos deste artigo, o tipo de dados do campo é Collection(Edm.Single) para incorporações float32 de entrada, mas float16 também é suportado. Quando os vetores são recebidos em um campo com compressão configurada, o mecanismo executa a quantização para reduzir a pegada dos dados vetoriais na memória e no disco.
Dois tipos de quantização são suportados:
A quantização escalar compacta valores flutuantes em tipos de dados mais estreitos. O AI Search atualmente suporta int8, que é de 8 bits, reduzindo o tamanho do índice vetorial quatro vezes.
A quantização binária converte flutuações em bits binários, que ocupam 1 bit. Isso resulta em uma redução do tamanho do índice vetorial em até 28 vezes.
Nota
Embora os serviços gratuitos ofereçam suporte à quantização, eles não demonstram a economia total de armazenamento 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 dentro de cada incorporação vetorial. 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 (tipicamente percentil 99 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 quantização escalar de 8 bits, existem 2^8, ou 256, compartimentos possíveis.
Cada componente do vetor é mapeado para o valor representativo mais próximo dentro deste conjunto de níveis de quantização em um processo semelhante ao arredondamento de um número real para o inteiro mais próximo. No vetor quantizado de 8 bits, o número identificador substitui o valor original. Após a quantização, cada vetor é representado por uma matriz de identificadores para os compartimentos aos quais seus componentes pertencem. Esses vetores quantizados exigem muito menos bits para armazenar em comparação com o vetor original, reduzindo assim os requisitos de armazenamento e o espaço ocupado pela memória.
Como funciona a quantização binária na Pesquisa de IA do Azure
A quantização binária comprime vetores de alta dimensão representando cada componente como um único bit, 0 ou 1. Esse método reduz drasticamente o espaço ocupado pela 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 referência mostram até 96% de redução no tamanho do índice vetorial.
É particularmente eficaz para incorporações com dimensões superiores a 1024. Para dimensões menores, recomendamos testar a qualidade da quantização binária ou usar quantização escalar. Além disso, descobrimos que a quantização binária funciona muito bem quando as incorporações são centradas em zero. Os modelos de incorporação mais populares oferecidos pela OpenAI, Cohere e Mistral são centrados em torno de zero.
Técnicas de reavaliação suportadas
Rescoring é 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 sobreamostragem para coletar vetores extras e informações suplementares para remarcar os resultados iniciais encontrados pela consulta. As informações suplementares são vetores originais de precisão total não compactados ou, apenas para quantização binária, tem a opção de reavaliar usando os candidatos a documentos quantizados binariamente em relação ao vetor de consulta.
Apenas os gráficos HNSW permitem a reavaliação de pontuação. O KNN exaustivo não suporta a repontuação porque, por definição, todos os vetores são digitalizados no momento da consulta, o que torna a repontuação e a sobreamostragem irrelevantes.
As opções de repontuação são especificadas no índice, mas você pode invocar a repontuação no momento da consulta adicionando o parâmetro de consulta de sobreamostragem.
| Objeto | Propriedades |
|---|---|
| Index | Adicione RescoringOptions à seção de compressões vetoriais. Os exemplos neste artigo usam RescoringOptions. |
| Query | Adicionar oversampling em RawVectorQuery ou VectorizableTextQuery definições. Adicionar oversampling invoca a repontuação no momento da consulta. |
Nota
Os nomes dos parâmetros de rescore foram alterados ao longo das últimas versões. Se estiver a utilizar uma API de pré-visualização mais antiga, reveja as instruções de atualização para resolver as alterações mais recentes.
O processo generalizado de repontuação é:
- A consulta vetorial é executada sobre campos vetoriais compactados.
- A consulta vetorial retorna os k candidatos superamostrados mais relevantes.
- Os candidatos k sobreamostrados são repontuados usando os vetores originais não compactados para quantização escalar ou o produto ponto da quantização binária.
- Após a repontuação, os resultados são ajustados para que as correspondências mais relevantes apareçam primeiro.
A sobreamostragem para vetores quantizados escalares requer a disponibilidade dos vetores originais de precisão total. A sobreamostragem para vetores binários quantizados pode usar vetores de precisão total (preserveOriginals) ou o produto do ponto do vetor binário (discardOriginals). Se você estiver otimizando o armazenamento de vetores, certifique-se de manter os vetores de precisão total no índice se precisar deles para fins de repontuação. Para obter mais informações, consulte Eliminar instâncias vetoriais 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 fields que inclui um campo vetorial.
O exemplo de compactação inclui ambos scalarQuantization e binaryQuantization. Você pode especificar quantas configurações de compactação precisar e, em seguida, atribuir as que deseja a um perfil de vetor.
A sintaxe para vectorSearch.Compressions varia entre APIs REST estáveis e de visualização, com a visualização adicionando mais opções para otimização de armazenamento, além de alterações 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 a 2024-11-01-preview e versões futuras.
Utilize 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 um conjunto de propriedades usadas para compensar a compactação com perdas reavaliando os resultados da consulta usando os vetores de precisão total originais que existem antes da quantização. Para que a repontuação funcione, você deve ter a instância de vetor que fornece esse conteúdo. ConfigurarrescoreStorageMethodparadiscardOriginalsimpede a utilização deenableRescoringoudefaultOversampling. Para obter mais informações sobre armazenamento vetorial, consulte Eliminar instâncias vetoriais opcionais do armazenamento."rescoreStorageMethod": "preserveOriginals"A reavaliação dos resultados da pesquisa vetorial com os vetores originais de alta precisão pode resultar em ajustes na pontuação da pesquisa e nas classificações, promovendo as correspondências mais relevantes, conforme determinado pela etapa de reavaliação. Para 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 da informação a partir da quantização. A fórmula para resultados potenciais consiste nokna consulta, com um multiplicador de sobreamostragem. Por exemplo, se a consulta especificar umkde 5 e a sobreamostragem for 20, a consulta solicitará efetivamente 100 documentos para uso na reclassificação, usando o vetor não compactado original para essa finalidade. Apenas oskmelhores resultados reclassificados são retornados. Esta propriedade é opcional. O padrão é 4.quantizedDataTypeé opcional e aplica-se apenas à quantização escalar. Se o adicionar, deve ser definido comoint8. Este é o único tipo de dados primitivo suportado para quantização escalar no momento. A predefinição éint8.truncationDimensionaproveita as capacidades inerentes dos modelos de incorporação de texto 3 para "codificar informações em diferentes granularidades e permite que uma única incorporação se adapte às restrições computacionais de tarefas a jusante" (ver Matryoshka Representation Learning). Você pode usar dimensões truncadas com ou sem opções de repontuação. Para obter mais informações sobre como esse recurso é implementado no Azure AI Search, consulte Truncar dimensões usando compactação MRL.
Adicionar o algoritmo de pesquisa vetorial
Você pode usar o algoritmo HNSW ou eKNN na API REST 2024-11-01-preview ou posterior. Para a versão estável, use apenas HNSW. Caso queira rever a pontuação, 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 quantização, você deve criar um novo perfil vetorial. A criação de um novo perfil vetorial é necessária para a construção de í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 um 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 vetorial. O tipo de dados do campo é float32 ou float16.
No Azure AI Search, os equivalentes do Modelo de Dados de Entidade (EDM) 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 pull ou APIs para indexação de modelo push.
Consultar um campo vetorial quantizado usando sobreamostragem
A sintaxe de consulta para um campo vetorial compactado ou quantizado é a mesma que para campos vetoriais não compactados, a menos que você queira substituir os parâmetros associados à sobreamostragem e à repontuação. Você pode adicionar um parâmetro oversampling para invocar a sobreamostragem e a reavaliação no momento da consulta.
Use Pesquisar Documentos para a solicitação.
Lembre-se de que a definição de compressão vetorial no índice tem configurações para enableRescoring, rescoreStorageMethode defaultOversampling para mitigar os efeitos da compressã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, poderá alterá-lo para outro valor no pedido de consulta.
Você pode definir o parâmetro de sobreamostragem mesmo que o índice não tenha explicitamente opções de repontuação ou a definição defaultOversampling. Fornecer oversampling no momento da consulta substitui as configurações de índice para essa consulta e executa a consulta com um enableRescoring efetivo 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 sobreamostragem aplica-se a campos vetoriais que sofrem compressão vetorial, de acordo com a atribuição de perfil vetorial.
A sobreamostragem na consulta substitui o valor
defaultOversamplingno índice, ou invoca a sobreamostragem e a reordenação no momento da consulta, mesmo que a configuração de compressão do índice não tenha especificado opções de sobreamostragem ou reordenação.