Partilhar via


Escolha uma abordagem para otimizar o armazenamento e o processamento vetoriais

As incorporações, ou a representação numérica de conteúdo heterogêneo, são a base das cargas de trabalho de pesquisa vetorial, mas os tamanhos das incorporações as tornam difíceis de dimensionar e caras de processar. Pesquisas e produtização significativas produziram várias soluções para melhorar a escala e reduzir os tempos de processamento. O Azure AI Search explora vários desses recursos para cargas de trabalho vetoriais mais rápidas e baratas.

Este artigo enumera todas as técnicas de otimização no Azure AI Search que podem ajudá-lo a reduzir o tamanho do vetor e os tempos de processamento de consultas.

As configurações de otimização vetorial são especificadas em definições de campo vetorial em um índice de pesquisa. A maioria dos recursos descritos neste artigo está geralmente disponível na API REST 2024-07-01 e nos pacotes do SDK do Azure destinados a essa versão. A versão de visualização mais recente adiciona suporte para dimensões truncadas se você estiver usando texto-embedding-3-large ou text-embedding-3-small para vetorização.

Avaliar as opções

Analise as abordagens na Pesquisa de IA do Azure para reduzir a quantidade de armazenamento usada por campos vetoriais. Essas abordagens não são mutuamente exclusivas e podem ser combinadas para a redução máxima no tamanho do vetor.

Recomendamos a quantização integrada porque comprime o tamanho do vetor na memória e no disco com o mínimo de esforço, e isso tende a fornecer o maior benefício na maioria dos cenários. Em contraste, tipos estreitos (exceto float16) exigem um esforço especial para fazê-los e stored economizam no armazenamento em disco, que não é tão caro quanto a memória.

Abordagem Porquê utilizar esta opção
Adicionar quantização escalar ou binária Use quantização para compactar incorporações nativas float32 ou float16 para int8 (escalar) ou Byte (binário). Esta 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 vetoriais menos ricos em conteúdo do que aqueles com incorporações maiores. Para compensar a perda de informações, a compactação integrada inclui opções para processamento pós-consulta usando incorporações não compactadas e sobreamostragem para retornar resultados mais relevantes. Reclassificação e sobreamostragem são características específicas da quantização integrada de campos float32 ou float16 e não podem ser usadas em incorporações que passam por quantização personalizada.
Dimensões truncadas para modelos de incorporação de texto-3 compatíveis com LMR (visualização) Exerça a opção de usar menos dimensões em modelos de incorporação de texto-3. No Azure OpenAI, esses modelos foram retreinados na técnica Matryoshka Representation Learning (MRL) que produz várias representações vetoriais em diferentes níveis de compressão. Essa abordagem produz pesquisas mais rápidas e custos de armazenamento reduzidos, com perda mínima de informações semânticas. No Azure AI Search, o suporte de MRL complementa a quantização escalar e binária. Ao usar qualquer um dos métodos de quantização, você também pode especificar uma truncateDimension propriedade em seus campos vetoriais para reduzir a dimensionalidade das incorporações de texto.
Atribuir tipos de dados primitivos menores a campos vetoriais Tipos de dados estreitos, como float16, int16, int8 e Byte (binário) consomem menos espaço na memória e no disco, mas você deve ter um modelo de incorporação que produza vetores em um formato de dados estreito. Ou, você deve ter uma lógica de quantização personalizada que produza dados pequenos. Um terceiro caso de uso que requer menos esforço é a reformulação de incorporações nativas float32 produzidas pela maioria dos modelos para float16. Consulte Indexar vetores binários para obter detalhes sobre vetores binários.
Elimine 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, reduzindo o armazenamento geral em disco por campo em até 50%.

Todas essas opções são definidas em um índice vazio. Para implementar qualquer um deles, use o portal do Azure, APIs REST ou um pacote do SDK do Azure direcionado a essa versão da API.

Depois que o índice for definido, você poderá carregar e indexar documentos como uma etapa separada.

Exemplo: tamanho do vetor por técnica de compressão vetorial

Exemplo de código: Quantização vetorial e opções de armazenamento usando Python é um exemplo de código Python que cria vários índices de pesquisa que variam pelo uso de quantização de armazenamento vetorial, tipos de dados estreitos e propriedades de armazenamento.

Este código cria e compara o tamanho do armazenamento e do índice vetorial para cada opção de otimização de armazenamento vetorial. A partir desses resultados, você pode ver que a quantização reduz mais o tamanho do vetor, mas a maior economia de armazenamento é alcançada se você usar várias opções.

Nome do índice Tamanho de armazenamento Tamanho do vetor
compressãoteste-linha de base 21,3613MB 4,8277MB
compressãoteste-escalar-compressão 17,7604MB 1,2242MB
compressãoteste-estreito 16,5567 MB 2,4254MB
compressiontest-no-stored 10,9224MB 4,8277MB
compressãotest-all-options 4,9192MB 1,2242MB

As APIs de pesquisa relatam o armazenamento e o tamanho do vetor no nível do índice, portanto, os índices e não os campos devem ser a base de comparação. Use as Estatísticas de Índice GET ou uma API equivalente nos SDKs do Azure para obter o tamanho do vetor.

Consulte também