Truncar dimensões usando a compactação MRL (versão prévia)
Importante
Esse recurso está em versão prévia pública nos termos de uso complementares. A versão prévia da API REST dá suporte a esse recurso.
Exerça a capacidade de usar menos dimensões em modelos text-embedding-3. No OpenAI do Azure, os modelos text-embedding-3 são treinados novamente na técnica de MRL (Matryoshka Representation Learning) 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.
Na Pesquisa de IA do Azure, o MRL dá suporte a suplementos de quantização escalar e binária. Ao usar qualquer método de quantização, você também pode especificar uma propriedade truncationDimension
em seus campos de vetor para reduzir a dimensionalidade das inserções de texto.
A compactação multinível de MRL economiza no armazenamento de vetores e melhora os tempos de resposta da consulta para consultas vetoriais com base em inserções de texto. No Pesquisa de IA do Azure, o suporte à MRL só é oferecido junto 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 vetor. Para obter a redução máxima de armazenamento, use a quantização binária com MRL e stored
definido como false.
Esse recurso está em preview. Ele está disponível em 2024-09-01-preview
e em pacotes beta do SDK direcionados à versão prévia da API.
Pré-requisitos
Modelos Text-embedding-3, como Text-embedding-3-small ou Text-embedding-3-large (somente conteúdo de texto).
Novos campos de vetor do tipo
Edm.Half
ouEdm.Single
(não é possível adicionar compactação MRL a um campo existente).Algoritmo hierárquico HNSW (Navigable Small World) (sem suporte para KNN exaustivo nesta versão prévia).
Quantização escalar ou binária. As dimensões truncadas só podem ser definidas quando a quantização escalar ou binária é configurada. Recomendamos a quantização binária para compactação de MRL.
Clientes com suporte
Você pode usar as APIs REST ou pacotes beta do SDK do Azure para implementar a compactação de MRL.
Verifique os logs de alterações para cada pacote beta do SDK do Azure: Python, .NET, Java, JavaScript.
Não há suporte ao portal do Azure nem ao Estúdio de IA do Azure no momento.
Como usar inserções de texto estendidas por MRL
O MRL é uma funcionalidade integrada ao modelo de inserção de texto que você já está usando. Para se beneficiar desses recursos no Pesquisa de IA do Azure, siga estas etapas.
Use o índice Criar ou Atualizar (versão prévia) ou a API equivalente para especificar o esquema de índice.
Adicionar campos de vetor à definição de índice.
Especifique um objeto
vectorSearch.compressions
em sua definição de índice.Inclua um método de quantização, escalar ou binário (recomendado).
Inclua o parâmetro
truncationDimension
definido como 512 ou tão baixo quanto 256 se você usar o modelo text-embedding-3-large.Especifique um perfil de vetor que especifica o algoritmo HNSW e o objeto de compactação de vetor.
Atribua o perfil de vetor a um campo vetor do tipo
Edm.Half
ouEdm.Single
na coleção de campos.
Não há modificações do lado da consulta para usar um modelo de inserção de texto compatível com MRL. A vetorização integrada, conversões de texto em consulta no momento da consulta, classificação semântica e outros recursos de aprimoramento de relevância, como o reclassificado com vetores originais e a sobrecarga, não são afetados pelo suporte à MRL.
A indexação é mais lenta devido às etapas extras, mas as consultas são mais rápidas.
Exemplo de uma configuração de busca em vetores que dá suporte à MRL
O exemplo a seguir ilustra uma configuração de busca em vetores que atende aos requisitos e recomendações do MRL.
truncationDimension
é uma propriedade de compactação. Ela especifica o quanto reduzir o grafo de vetor na memória junto com um método de compactação, como compactação escalar ou binária. Recomendamos 1.024 ou superior para truncationDimension
com quantização binária. Uma dimensionalidade inferior a 1.000 degradados a qualidade dos resultados da pesquisa ao usar o MRL e a compactaçã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 de vetor totalmente especificada que atenda aos requisitos de MRL.
Lembre-se de que os campos de vetor devem ser do tipo Edm.Half
ou Edm.Single
. Os campos de vetor devem ter uma propriedade vectorSearchProfile
que determine as configurações de algoritmo e compactação. Os campos de vetor têm uma propriedade dimensions
usada para especificar o número de dimensões para pontuação e resultados de classificação. Seu valor deve ser o limite de dimensões do modelo que você está usando (1.536 para text-embedding-3-small).
{
"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": []
}