Partilhar via


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

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.

  1. Use o índice Criar ou Atualizar (visualização) ou API equivalente para especificar o esquema de índice.

  2. Adicione campos vetoriais à definição de índice.

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

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

  5. Inclua o truncationDimension parâmetro 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 especifique o algoritmo HNSW e o objeto de compactação vetorial.

  7. Atribua o perfil vetorial a um campo vetorial do tipo Edm.Half ou Edm.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": []
}