Compartilhar via


Truncar dimensões usando a compactação MRL

Exerça a capacidade de usar menos dimensões em modelos text-embedding-3. No Azure OpenAI, os modelos de incorporação de texto-3 são re-treinados 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.

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ê pode especificar uma truncationDimension propriedade 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 defina stored como false.

Aviso

Se você definir stored como false, os dados de vetor serão perdidos durante atualizações parciais de documento, a menos que você forneça todo o vetor em cada atualização. Defina stored para true para evitar esse problema. Para obter mais informações, consulte Eliminar instâncias de vetor opcionais do armazenamento.

Pré-requisitos

Clientes com suporte

Você pode usar as APIs REST ou os pacotes do SDK do Azure para implementar a compactação MRL. No momento, não há suporte ao portal do Azure nem ao Azure AI Foundry.

  • Verifique os logs de alterações para cada pacote do SDK do Azure para obter suporte a recursos: Python, .NET, Java, JavaScript.

Usar inserções de texto estendidas por MRL

O MRL é integrado ao modelo de inserção de texto que você já está usando. Para usar recursos de MRL no Azure AI Search:

  1. Use Criar ou Atualizar Índice ou uma API equivalente para especificar o esquema de índice.

  2. Adicionar campos de vetor à definição de índice.

  3. Especifique um objeto vectorSearch.compressions em sua definição de índice.

  4. Inclua um método de quantização, escalar ou binário (recomendado).

  5. Inclua o truncationDimension parâmetro e defina-o como 512. Se você estiver usando o modelo text-embedding-3-large, pode defini-lo para um valor tão baixo quanto 256.

  6. Inclua um perfil de vetor que especifica o algoritmo HNSW e o objeto de compactação de vetor.

  7. Atribua o perfil de vetor a um campo vetor do tipo Edm.Half ou Edm.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. O suporte a MRL não afeta 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.

Embora a indexação seja mais lenta devido às etapas extras, as consultas são mais rápidas.

Exemplo: configuração de pesquisa de vetor que dá suporte ao 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": "binaryQuantization", 
        "rescoringOptions": {
            "enableRescoring": true,
            "defaultOversampling": 10,
            "rescoreStorageMethod": "preserveOriginals"
        },
        "truncationDimension": 1024
      }, 
      { 
        "name": "use-bq", 
        "kind": "binaryQuantization", 
        "rescoringOptions": {
            "enableRescoring": true,
            "defaultOversampling": 10,
            "rescoreStorageMethod": "discardOriginals"
        }
       } 
    ] 
  } 
} 

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:

  • Seja do tipo Edm.Half ou Edm.Single.

  • Tenha uma vectorSearchProfile propriedade que especifica as configurações de algoritmo e compactação.

  • Tenha uma dimensions propriedade que especifica 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 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": []
}