Escolha uma abordagem para otimizar o armazenamento e o processamento de vetores

Note

Pesquisa de IA do Azure  está disponível por meio do portal Azure, APIs REST e SDKs do Azure. Ele também sustenta o IQ do Foundry, a camada de conhecimento gerenciado que transforma o conteúdo da empresa em bases de conhecimento reutilizáveis e com reconhecimento de permissão para agentes no portal do Microsoft Foundry.

As inserções ou a representação numérica de conteúdo heterogêneo são a base das cargas de trabalho de pesquisa de vetor. No entanto, os tamanhos das inserções os tornam difíceis de dimensionar e caros de processar. Pesquisas significativas e a transformação delas em produtos geraram várias soluções para expandir a escala e reduzir os tempos de processamento. Pesquisa de IA do Azure  aproveita vários desses recursos para cargas de trabalho de vetor mais rápidas e baratas.

Este artigo aborda todas as técnicas de otimização em Pesquisa de IA do Azure  que podem ajudá-lo a reduzir o tamanho do vetor e os tempos de processamento de consulta.

Especifica as configurações de otimização de vetor nas definições de campos vetoriais em um índice de pesquisa. A maioria dos recursos descritos neste artigo geralmente está disponível na versão estável mais recente da API REST e nos pacotes SDK do Azure correspondentes.

Avaliar as opções

Examine as abordagens em Pesquisa de IA do Azure  para reduzir a quantidade de armazenamento usada pelos campos de vetor. Essas abordagens não são mutuamente exclusivas, portanto, você pode combiná-las para redução máxima no tamanho do vetor.

Recomendamos a quantização interna porque compacta o tamanho do vetor na memória e no disco com o mínimo de esforço. Essa abordagem tende a proporcionar o maior benefício na maioria dos cenários. Por outro lado, tipos estreitos (exceto float16) exigem esforço especial para criá-los e stored economizam no armazenamento em disco, o que não é tão caro quanto a memória.

Abordagem Por que usar essa abordagem
Adicionar quantização escalar ou binária Compacte incorporações nativas float32 ou float16 para int8 (escalar) ou byte (binário). Essa opção reduz o armazenamento na memória e no disco sem degradação do desempenho da consulta. Tipos de dados menores, como int8 ou byte, produzem índices de vetor menos ricos em conteúdo do que aqueles com inserções maiores. Para compensar a perda de informações, a compactação integrada inclui opções para processamento posterior à consulta usando embeddings descompactados e sobreamostragem para retornar resultados mais relevantes. A reclassificação e a sobreamostragem são recursos específicos da compartimentalização interna de campos float32 ou float16 e não podem ser usados em inserções que passam por compartimentalização personalizada.
Truncar as dimensões para os modelos MRL-capable text-embedding-3 Utilize menos dimensões nos modelos de text-embedding-3. Em Azure OpenAI, esses modelos são treinados novamente na técnica Matryoshka Representation Learning (MRL) que produz várias representações de vetor em diferentes níveis de compactação. Essa abordagem produz pesquisas mais rápidas e redução dos custos de armazenamento com perda mínima de informações semânticas. No Pesquisa de IA do Azure , o suporte MRL complementa a quantização escalar e binária. Ao usar qualquer método de quantização, você também pode especificar uma truncateDimension propriedade em seus campos de vetor para reduzir a dimensionalidade das inserções de texto.
Atribuir tipos de dados primitivos menores a campos de vetor Tipos de dados estreitos, como float16, int16, int8 e byte (binário), consomem menos espaço na memória e no disco. No entanto, você deve ter um modelo de inserção que produz vetores em um formato de dados estreito. Como alternativa, você deve ter uma lógica de quantização personalizada que produz dados pequenos. Um terceiro caso de uso que requer menos esforço é a reconversão de inserções de float32 nativas produzidas pela maioria dos modelos para float16. Para obter informações sobre vetores binários, consulte Vetores binários de índice.
Eliminar o armazenamento opcional de vetores recuperáveis Os vetores retornados em uma resposta de consulta são armazenados separadamente dos vetores usados durante a execução da consulta. Se você não precisar retornar vetores, poderá desativar o armazenamento recuperável para reduzir o armazenamento geral em disco por campo em até 50%.

Defina todas essas opções em um índice vazio. Para implementar qualquer um deles, use o portal Azure, as APIs REST ou um pacote do SDK do Azure destinado àquela versão da API.

Depois de definir o índice, você pode carregar e indexar documentos como uma etapa separada.

Exemplo: Tamanho do vetor por técnica de compactação de vetor

Vector quantization and storage options using Python é um exemplo de código Python que cria múltiplos índices de pesquisa que variam pelo uso de quantização de armazenamento vetorial, tipos de dados estreitos, e propriedades de armazenamento.

Esse código cria e compara o tamanho do índice de armazenamento e vetor para cada opção de otimização de armazenamento vetor. Nesses resultados, você pode ver que a quantização reduz mais o tamanho do vetor, mas as maiores economias de armazenamento serão obtidas se você usar várias opções.

Nome do índice Tamanho do armazenamento Tamanho do vetor
TesteDeCompressão-LinhaDeBase 21,3613 MB 4,8277 MB
compressiontest-scalar-compression 17,7604 MB 1,2242 MB
teste de compressão-estreito 16,5567 MB 2,4254 MB
compressiontest-no-stored 10.9224 MB 4,8277 MB
teste de compressão - todas as opções 4,9192 MB 1,2242 MB

As APIs REST do Serviço de Pesquisa relatam o armazenamento e o tamanho do vetor no nível do índice, portanto, você deve comparar índices, não campos. Use Indexes – Obter Estatísticas (API REST) ou uma API equivalente no SDKs do Azure para obter o tamanho do vetor.