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.
Note
Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.
Gli incorporamenti, o la rappresentazione numerica di contenuto eterogeneo, sono la base dei carichi di lavoro di ricerca vettoriale. Tuttavia, le dimensioni degli incorporamenti li rendono difficili da ridimensionare e dispendioso da elaborare. Ricerche e prodotti significativi hanno prodotto più soluzioni per migliorare la scalabilità e ridurre i tempi di elaborazione. Azure AI Search sfrutta alcune di queste funzionalità per carichi di lavoro vettoriali più veloci e più economici.
Questo articolo illustra tutte le tecniche di ottimizzazione in Azure AI Search che consentono di ridurre le dimensioni del vettore e i tempi di elaborazione delle query.
Specificare le impostazioni di ottimizzazione vettoriale nelle definizioni dei campi vettoriali in un indice di ricerca. La maggior parte delle funzionalità descritte in questo articolo è generalmente disponibile nella versione più recente stabile dell'API REST
Valutare le opzioni
Esaminare gli approcci in Azure AI Search per ridurre la quantità di spazio di archiviazione usato dai campi vettoriali. Questi approcci non si escludono a vicenda, quindi è possibile combinarli per ridurre al massimo le dimensioni del vettore.
È consigliabile la quantizzazione predefinita perché comprime le dimensioni del vettore in memoria e su disco con un minimo sforzo. Questo approccio tende a offrire il massimo vantaggio nella maggior parte degli scenari. Al contrario, i tipi narrow (ad eccezione di float16) richiedono uno sforzo speciale per crearli e stored consente di risparmiare spazio su disco, che è meno costoso rispetto alla memoria.
| Approccio | Perché usare questo approccio |
|---|---|
| Aggiungere la quantizzazione scalare o binaria | Comprimere gli incorporamenti nativi float32 o float16 in int8 (scalare) o in byte (binario). Questa opzione riduce l'archiviazione in memoria e su disco senza ridurre le prestazioni delle query. I tipi di dati più piccoli, ad esempio int8 o byte, producono indici vettoriali meno ricchi di contenuto rispetto a quelli con incorporamenti di dimensioni maggiori. Per compensare la perdita di informazioni, la compressione predefinita include opzioni per l'elaborazione post-query usando incorporamenti non compressi e sovracampionamento per restituire risultati più pertinenti. La riclassificazione e il campionamento eccessivo sono funzionalità specifiche della quantizzazione predefinita di campi float32 o float16 e non possono essere usate negli incorporamenti che subiscono la quantizzazione personalizzata. |
| Troncare le dimensioni per i modelli text-embedding-3 che supportano MRL | Usare meno dimensioni nei modelli dei text-embedding-3. In Azure OpenAI questi modelli 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. Nel servizio Azure AI Search, il supporto MRL integra la quantizzazione scalare e binaria. Quando si usa uno dei metodi di quantizzazione, è anche possibile specificare una truncateDimension proprietà nei campi vettoriali per ridurre la dimensionalità degli incorporamenti di testo. |
| Assegnare tipi di dati primitivi più piccoli ai campi vettoriali | Tipi di dati ristretti, ad esempio float16, int16, int8 e byte (binario), consumano meno spazio in memoria e su disco. Tuttavia, è necessario disporre di un modello di incorporamento che restituisce vettori in un formato di dati ristretto. In alternativa, è necessario avere una logica di quantizzazione personalizzata che restituisce dati di piccole dimensioni. Un terzo caso d'uso che richiede meno sforzo consiste nel ritradurre gli embedding float32 nativi prodotti dalla maggior parte dei modelli a float16. Per informazioni sui vettori binari, vedere Indicizzare vettori binari. |
| Eliminare l'archiviazione facoltativa dei vettori recuperabili | I vettori restituiti in una risposta di query vengono archiviati separatamente dai vettori usati durante l'esecuzione della query. Se non è necessario restituire vettori, è possibile disattivare l'archiviazione recuperabile per ridurre l'archiviazione complessiva per disco per campo fino al 50%. |
Definire tutte queste opzioni in un indice vuoto. Per implementarli, usare il portale di Azure, le API REST o un pacchetto Azure SDK destinato a tale versione dell'API.
Dopo aver definito l'indice, è possibile caricare e indicizzare i documenti come passaggio separato.
Esempio: Dimensione vettoriale per tecnica di compressione vettoriale
Quantizzazione e opzioni di archiviazione dei vettori tramite Python è un esempio di codice Python che crea più indici di ricerca che variano in base all'uso della quantizzazione dell'archiviazione vettoriale, tipi di dati ristretti, e proprietà di archiviazione.
Questo codice crea e confronta le dimensioni dell'indice di archiviazione e vettore per ogni opzione di ottimizzazione dell'archiviazione vettoriale. Da questi risultati è possibile notare che la quantizzazione riduce le dimensioni del vettore al massimo, ma se si usano più opzioni è possibile ottenere il massimo risparmio di spazio di archiviazione.
| Nome indice | Dimensioni di archiviazione | Dimensioni del vettore |
|---|---|---|
| compressiontest-baseline | 21,3613 MB | 4,8277 MB |
| compressiontest-scalar-compression | 17,7604 MB | 1,2242 MB |
| compressiontest-narrow | 16,5567 MB | 2,4254 MB |
| compressiontest-no-stored | 10,9224 MB | 4,8277 MB |
| compressiontest-all-options | 4,9192 MB | 1,2242 MB |
Le API REST del servizio di ricerca segnalano le dimensioni di archiviazione e vettore a livello di indice, quindi è necessario confrontare gli indici, non i campi. Usare Indexes - Get Statistics (API REST) o un'API equivalente nel Azure SDK per ottenere le dimensioni del vettore.