Condividi tramite


Tronca le dimensioni usando la compressione MRL (anteprima)

Importante

Questa funzionalità è disponibile in anteprima pubblica in Condizioni supplementari per l'utilizzo. Per questa funzionalità è consigliabile usare la versione più recente dell'API REST di anteprima .

Esercizio della possibilità di usare un minor numero di dimensioni nei modelli di incorporamento del testo-3. In Azure OpenAI, i modelli text-embedding-3 vengono sottoposti nuovamente a training sulla tecnica matryoshka Representation Learning (MRL) che produce più rappresentazioni vettoriali a diversi livelli di compressione. Questo approccio produce ricerche più veloci e costi di archiviazione ridotti con una perdita minima di informazioni semantiche.

In Ricerca di intelligenza artificiale di Azure il supporto MRL integra la quantizzazione scalare e binaria. Quando si usa uno dei metodi di quantizzazione, è possibile specificare una truncationDimension proprietà nei campi vettoriali per ridurre la dimensionalità degli incorporamenti di testo.

La compressione multilivello MRL consente di risparmiare sull'archiviazione vettoriale e di migliorare i tempi di risposta delle query vettoriali in base agli incorporamenti di testo. In Ricerca di intelligenza artificiale di Azure il supporto mrl viene offerto solo insieme a un altro metodo di quantizzazione. L'uso della quantizzazione binaria con MRL fornisce la riduzione massima delle dimensioni dell'indice vettoriale. Per ottenere la riduzione massima dello spazio di archiviazione, usare la quantizzazione binaria con MRL e impostare su stored false.

Prerequisiti

  • Modello text-embedding-3, ad esempio text-embedding-3-small o text-embedding-3-large.

  • Cliente supportato.

  • Nuovi campi vettoriali di tipo Edm.Half o Edm.Single. Non è possibile aggiungere la compressione MRL a un campo esistente.

  • Algoritmo gerarchico Navigable Small World (HNSW). Questa anteprima non supporta l'esaustivo KNN.

  • Quantizzazione scalare o binaria. Le dimensioni troncate possono essere impostate solo quando è configurata la quantizzazione scalare o binaria. È consigliabile la quantizzazione binaria per la compressione MRL.

Client supportati

È possibile usare le API REST o i pacchetti beta di Azure SDK per implementare la compressione MRL. Al momento non è disponibile alcun portale di Azure o il supporto di Azure AI Foundry.

Usare gli "MRL-extended text embeddings"

MRL è integrato nel modello di incorporamento del testo già in uso. Per usare le funzionalità MRL in Ricerca di intelligenza artificiale di Azure:

  1. Usare Crea o Aggiorna indice (anteprima) o un'API equivalente per specificare lo schema dell'indice.

  2. Aggiungere campi vettoriali alla definizione dell'indice.

  3. Specificare un vectorSearch.compressions oggetto nella definizione dell'indice.

  4. Includere un metodo di quantizzazione, scalare o binario (scelta consigliata).

  5. Includere il truncationDimension parametro e impostarlo su 512. Se si utilizza il modello text-embedding-3-large, è possibile impostarlo a un valore basso come 256.

  6. Includere un profilo vettoriale che specifica l'algoritmo HNSW e l'oggetto di compressione vettoriale.

  7. Assegnare il profilo vettoriale a un campo vettore di tipo Edm.Half o Edm.Single nella raccolta campi.

Non sono state apportate modifiche sul lato query per l'uso di un modello di incorporamento di testo che supporta MRL. Il supporto di MRL non influisce sulla vettorializzazione integrata, sulle conversioni da testo a query durante l'elaborazione della query, sulla classificazione semantica e su altre caratteristiche di miglioramento della pertinenza, come la riclassificazione con vettori originali e il sovracampionamento.

Anche se l'indicizzazione è più lenta a causa dei passaggi aggiuntivi, le query sono più veloci.

Esempio: configurazione di ricerca vettoriale che supporta MRL

L'esempio seguente illustra una configurazione di ricerca vettoriale che soddisfa i requisiti e le raccomandazioni di MRL.

truncationDimension è una proprietà di compressione. Specifica quanto compattare il grafico vettoriale in memoria insieme a un metodo di compressione, ad esempio la compressione scalare o binaria. È consigliabile usare 1.024 o superiore per con truncationDimension quantizzazione binaria. Una dimensionalità inferiore a 1.000 riduce la qualità dei risultati della ricerca quando si usa MRL e compressione binaria.

{ 
  "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
       } 
    ] 
  } 
} 

Di seguito è riportato un esempio di definizione di campo vettoriale completamente specificato che soddisfa i requisiti per MRL. Tenere presente che i campi vettoriali devono:

  • Essere di tipo Edm.Half o Edm.Single.

  • Disporre di una vectorSearchProfile proprietà che specifica l'algoritmo e le impostazioni di compressione.

  • Disporre di una dimensions proprietà che specifica il numero di dimensioni per l'assegnazione dei punteggi e i risultati della classificazione. Il valore deve essere il limite di dimensioni del modello in uso (1.536 per 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": []
}