Condividi tramite


Tronca le dimensioni usando la compressione MRL (anteprima)

Importante

Questa funzionalità è disponibile in anteprima pubblica in Condizioni supplementari per l'utilizzo. L'API REST di anteprima supporta questa funzionalità.

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, è anche 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 stored impostare su false.

Questa funzionalità si trova in anteprima. È disponibile in 2024-09-01-preview e nei pacchetti BETA SDK destinati alla versione dell'API di anteprima.

Prerequisiti

  • Modelli text-embedding-3 come Text-embedding-3-small o Text-embedding-3-large (solo contenuto di testo).

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

  • Algoritmo HNSW (Navigable Small World) gerarchico (nessun supporto per KNN completo in questa anteprima).

  • 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 supporto portale di Azure o Azure AI Studio.

Come usare incorporamenti di testo estesi MRL

MRL è una funzionalità incorporata nel modello di incorporamento del testo già in uso. Per trarre vantaggio da queste funzionalità in Ricerca di intelligenza artificiale di Azure, seguire questa procedura.

  1. Usare l'API Crea o Aggiorna indice (anteprima) o 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 impostato su 512 o fino a 256 se si usa il modello text-embedding-3-large.

  6. Specificare un profilo vettoriale che specifica l'algoritmo HNSW e l'oggetto 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. La vettorializzazione integrata, le conversioni da testo a query in fase di query, la classificazione semantica e altre funzionalità di miglioramento della pertinenza, ad esempio la reranking con vettori originali e l'overcampionamento non sono interessate dal supporto MRL.

L'indicizzazione è più lenta a causa dei passaggi aggiuntivi, ma le query sono più veloci.

Esempio di 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. I campi vettoriali devono avere una vectorSearchProfile proprietà che determina l'algoritmo e le impostazioni di compressione. I campi vettoriali hanno una dimensions proprietà utilizzata per specificare il numero di dimensioni per l'assegnazione dei punteggi e i risultati della classificazione. Il valore deve essere un 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": []
}