Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esercizio della possibilità di usare un minor numero di dimensioni nei modelli di text-embedding-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 Azure AI Search 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 Azure AI Search 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 storedfalse.
Avvertimento
Se si imposta su storedfalse, i dati vettoriali vengono persi durante gli aggiornamenti parziali dei documenti, a meno che non si fornisca l'intero vettore in ogni aggiornamento. Impostare stored su true per evitare questo problema. Per altre informazioni, vedere Eliminare le istanze vettoriali facoltative dall'archiviazione.
Prerequisiti
Modello text-embedding-3, ad esempio text-embedding-3-small o text-embedding-3-large.
Nuovi campi vettoriali di tipo
Edm.HalfoEdm.Single. Non è possibile aggiungere la compressione MRL a un campo esistente.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 di Azure SDK per implementare la compressione MRL. Al momento non è disponibile alcun portale di Azure o il supporto di Azure AI Foundry.
- Controllare i log delle modifiche per ogni pacchetto di Azure SDK per il supporto delle funzionalità: Python, .NET, Java, JavaScript.
Usare gli incorporamenti di testo con estensione MRL
MRL è integrato nel modello di incorporamento del testo già in uso. Per usare le funzionalità MRL in Ricerca di intelligenza artificiale di Azure:
Usare Crea o Aggiorna indice o un'API equivalente per specificare lo schema dell'indice.
Aggiungere campi vettoriali alla definizione dell'indice.
Specificare un oggetto
vectorSearch.compressionsnella definizione dell'indice.Includere un metodo di quantizzazione, scalare o binario (scelta consigliata).
Includere il
truncationDimensionparametro e impostarlo su 512. Se si utilizza il modello text-embedding-3-large, è possibile impostarlo a un valore basso come 256.Includere un profilo vettoriale che specifica l'algoritmo HNSW e l'oggetto di compressione vettoriale.
Assegnare il profilo vettoriale a un campo vettore di tipo
Edm.HalfoEdm.Singlenella 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 truncationDimension con 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": "binaryQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "preserveOriginals"
},
"truncationDimension": 1024
},
{
"name": "use-bq",
"kind": "binaryQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "discardOriginals"
}
}
]
}
}
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.HalfoEdm.Single.Disporre di una
vectorSearchProfileproprietà che specifica l'algoritmo e le impostazioni di compressione.Disporre di una
dimensionsproprietà 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": []
}