Truncar dimensões usando compressão de LMR (visualização)
Importante
Esta funcionalidade está em pré-visualização pública sob termos de utilização suplementares. A API REST de visualização suporta esse recurso.
Exerça a capacidade de usar menos dimensões em modelos de incorporação de texto-3. No Azure OpenAI, os modelos de incorporação de texto-3 são 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 truncationDimension
propriedade em seus campos vetoriais para reduzir a dimensionalidade das incorporações de texto.
A compactação multinível MRL economiza no armazenamento vetorial e melhora os tempos de resposta de consulta para consultas vetoriais com base em incorporações de texto. No Azure AI Search, o suporte a MRL só é oferecido juntamente com outro método de quantização. O uso de quantização binária com MRL fornece a redução máxima do tamanho do índice vetorial. Para obter a máxima redução de armazenamento, use quantização binária com MRL e stored
defina como false.
Esta funcionalidade está em pré-visualização. Ele está disponível em 2024-09-01-preview
e em pacotes de SDK beta direcionados para essa versão de API de visualização.
Pré-requisitos
Modelos de incorporação de texto-3, como Text-embedding-3-small ou Text-embedding-3-large (somente conteúdo de texto).
Novos campos vetoriais do tipo
Edm.Half
ouEdm.Single
(não é possível adicionar compactação MRL a um campo existente).Algoritmo Hierárquico Navigable Small World (HNSW) (sem suporte para KNN exaustivo nesta visualização).
Quantização escalar ou binária. As dimensões truncadas podem ser definidas somente quando a quantização escalar ou binária é configurada. Recomendamos quantização binária para compressão de LMR.
Clientes suportados
Você pode usar as APIs REST ou os pacotes beta do SDK do Azure para implementar a compactação MRL.
Verifique os logs de alteração para cada pacote beta do SDK do Azure: Python, .NET, Java, JavaScript.
Não há suporte ao portal do Azure ou ao Azure AI Studio no momento.
Como usar incorporações de texto estendidas por MRL
O MRL é um recurso integrado ao modelo de incorporação de texto que você já está usando. Para se beneficiar desses recursos no Azure AI Search, siga estas etapas.
Use o índice Criar ou Atualizar (visualização) ou API equivalente para especificar o esquema de índice.
Adicione campos vetoriais à definição de índice.
Especifique um objeto na definição de
vectorSearch.compressions
índice.Inclua um método de quantização, escalar ou binário (recomendado).
Inclua o
truncationDimension
parâmetro definido como 512 ou tão baixo quanto 256 se você usar o modelo text-embedding-3-large.Especifique um perfil de vetor que especifique o algoritmo HNSW e o objeto de compactação vetorial.
Atribua o perfil vetorial a um campo vetorial do tipo
Edm.Half
ouEdm.Single
na coleção de campos.
Não há modificações no lado da consulta para usar um modelo de incorporação de texto compatível com MRL. Vetorização integrada, conversões de texto para consulta no momento da consulta, classificação semântica e outros recursos de aprimoramento de relevância, como reclassificação com vetores originais e sobreamostragem, não são afetados pelo suporte a LMR.
A indexação é mais lenta devido às etapas extras, mas as consultas são mais rápidas.
Exemplo de uma configuração de pesquisa vetorial que suporta LMR
O exemplo a seguir ilustra uma configuração de pesquisa vetorial que atende aos requisitos e recomendações do MRL.
truncationDimension
é uma propriedade de compressão. Ele especifica quanto reduzir o gráfico vetorial na memória juntamente com um método de compressão como compressão escalar ou binária. Recomendamos 1.024 ou superior para truncationDimension
quantização binária. Uma dimensionalidade inferior a 1.000 degrada a qualidade dos resultados da pesquisa ao usar LMR e compressão binária.
{
"vectorSearch": {
"profiles": [
{
"name": "use-bq-with-mrl",
"compression": "use-mrl,use-bq",
"algorithm": "use-hnsw"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [
{
"name": "use-mrl",
"kind": "truncation",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10,
"truncationDimension": 1024
},
{
"name": "use-bq",
"kind": "binaryQuantization",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10
}
]
}
}
Aqui está um exemplo de uma definição de campo vetorial totalmente especificada que satisfaz os requisitos para LMR.
Lembre-se de que os campos vetoriais devem ser do tipo Edm.Half
ou Edm.Single
. Os campos vetoriais devem ter uma vectorSearchProfile
propriedade que determine o algoritmo e as configurações de compactação. Os campos vetoriais têm uma dimensions
propriedade usada para especificar o número de dimensões para resultados de pontuação e classificação. Seu valor deve ser o limite de dimensões do modelo que você está usando (1.536 para incorporação de texto-3-pequeno).
{
"name": "text_vector",
"type": "Collection(Edm.Single)",
"searchable": true,
"filterable": false,
"retrievable": false,
"stored": false,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"normalizer": null,
"dimensions": 1536,
"vectorSearchProfile": "use-bq-with-mrl",
"vectorEncoding": null,
"synonymMaps": []
}