Compartilhar via


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 ou Edm.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.

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.

  1. Use o índice Criar ou Atualizar (versão prévia) ou a 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 parâmetro truncationDimension definido como 512 ou tão baixo quanto 256 se você usar o modelo text-embedding-3-large.

  6. Especifique 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. 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": []
}