Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
O Pesquisa de IA do Azure está disponível através do portal Azure, APIs REST e SDKs do Azure. Também sustenta o Foundry IQ, a camada de conhecimento gerida que transforma conteúdos empresariais em bases de conhecimento reutilizáveis e conscientes de permissões para agentes no portal Microsoft Foundry.
Os embeddings, ou a representação numérica de conteúdos heterogéneos, são a base das cargas de trabalho de pesquisa vetorial. No entanto, o tamanho dos embeddings torna-os difíceis de escalar e caros de processar. Investigação significativa e a comercialização produziram múltiplas soluções para melhorar a escala e reduzir os tempos de processamento. O Pesquisa de IA do Azure aproveita várias destas capacidades para cargas de trabalho vetoriais mais rápidas e económicas.
Este artigo aborda todas as técnicas de otimização no Pesquisa de IA do Azure que podem ajudar a reduzir o tamanho do vetor e os tempos de processamento de consultas.
Especificas definições de otimização vetorial nas definições de campos vetoriais num índice de pesquisa. A maioria das funcionalidades descritas neste artigo está geralmente disponível na versão mais recente versão estável da API REST e SDK do Azure pacotes direcionados a essa versão.
Avalie as opções
Revise as abordagens do Pesquisa de IA do Azure para reduzir a quantidade de armazenamento utilizada pelos campos vetoriais. Estas abordagens não são mutuamente exclusivas, por isso podes combiná-las para maximizar a redução do tamanho do vetor.
Recomendamos a quantização incorporada porque comprime o tamanho do vetor na memória e no disco com esforço mínimo. Esta abordagem tende a proporcionar o maior benefício na maioria dos cenários. Em contraste, tipos estreitos (exceto float16) exigem um esforço especial para os criar, e stored poupam armazenamento em disco, que não é tão caro como a memória.
| Abordagem | Por que usar esta abordagem |
|---|---|
| Adicionar quantização escalar ou binária | Comprimir os embeddings nativos float32 ou float16 em 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 mais pequenos, como int8 ou byte, produzem índices vetoriais menos ricos em conteúdo do que aqueles com embeddings maiores. Para compensar a perda de informação, a compressão incorporada inclui opções para processamento pós-consulta, utilizando embeddings não comprimidos e sobreamostragem para devolver resultados mais relevantes. A reclassificação e a sobreamostragem são características específicas da quantização incorporada dos campos float32 ou float16 e não podem ser usadas em embeddings que passam por quantização personalizada. |
| Truncar dimensões para modelos text-embedding-3 compatíveis com MRL | Utilize menos dimensões nos modelos text-embedding-3. No Azure OpenAI, estes modelos são retreinados com a técnica de Aprendizagem de Representações Matryoshka (MRL), que produz múltiplas representações vetoriais em diferentes níveis de compressão. Esta abordagem produz pesquisas mais rápidas e custos de armazenamento reduzidos, com perda mínima de informação semântica. No Pesquisa de IA do Azure, o suporte a MRL complementa a quantização escalar e binária. Quando usar qualquer um dos métodos de quantização, pode também especificar uma truncateDimension propriedade nos seus campos vetoriais para reduzir a dimensionalidade das incorporações de texto. |
| Atribuir tipos de dados primitivos mais pequenos a campos vetoriais | Tipos de dados restritos, como float16, int16, int8 e byte (binário), consomem menos espaço na memória e no disco. No entanto, deve ter um modelo de embedding que produza vetores num formato de dados restrito. Em alternativa, deve ter uma lógica de quantização personalizada que produza pequenos dados. Um terceiro caso de uso que requer menos esforço é recastar embeddings nativos float32 produzidos pela maioria dos modelos para float16. Para informações sobre vetores binários, veja Vetores binários de Índice. |
| Eliminar o armazenamento opcional de vetores recuperáveis | Os vetores devolvidos numa resposta de consulta são armazenados separadamente dos vetores usados durante a execução da consulta. Se não precisares de devolver vetores, podes desligar o armazenamento recuperável para reduzir o armazenamento total por campo em disco até 50 por cento. |
Defina todas estas opções num índice vazio. Para implementar qualquer um deles, use o portal Azure, APIs REST ou um pacote SDK do Azure direcionado a essa versão da API.
Depois de definir o índice, pode carregar e indexar documentos como um passo separado.
Exemplo: Tamanho do vetor pela técnica de compressão vetorial
Opções de quantização vetorial e armazenamento usando Python é um exemplo de código Python que cria múltiplos índices de pesquisa, variando em seu uso de quantização de armazenamento vetorial, tipos de dados reduzidos 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 do armazenamento vetorial. A partir destes resultados, pode ver que a quantização reduz mais o tamanho do vetor, mas as maiores poupanças de armazenamento são alcançadas se usar múltiplas opções.
| Nome do índice | Tamanho de armazenamento | Tamanho do vetor |
|---|---|---|
| teste de compressão-linha de base | 21,3613 MB | 4,8277 MB |
| teste de compressão-compressão escalar | 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 reportam o armazenamento e o tamanho do vetor ao nível do índice, por isso deve comparar índices, não campos. Use Indexes - Obtenha Estatísticas (API REST) ou uma API equivalente nos SDKs do Azure para obter o tamanho do vetor.