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.
Ricerca di intelligenza artificiale di Azure archivia più copie di campi vettoriali usati in carichi di lavoro specifici. Se non è necessario supportare un comportamento specifico, ad esempio la restituzione di vettori non elaborati in una risposta di query, è possibile impostare le proprietà nell'indice che omette l'archiviazione per tale carico di lavoro.
La rimozione dell'archiviazione è irreversibile e richiede la reindicizzazione, se necessario.
Prerequisiti
- Campi vettoriali in un indice di ricerca, con una
vectorSearch
configurazione che specifica l'algoritmo HNSW (Hierarchical Navigable Small Worlds) o l'algoritmo K-nearest neighbor (KNN) completo e un nuovo profilo vettoriale.
Modalità di archiviazione dei campi vettoriali
Per ogni campo vettore, sono presenti fino a tre copie dei vettori, ognuna che serve uno scopo diverso:
Istanza | Utilizzo | Controllo dell'uso |
---|---|---|
Vettori di origine ricevuti durante l'indicizzazione dei documenti (dati JSON) | Utilizzato per l'aggiornamento incrementale dei dati con merge o mergeOrUpload azione di indicizzazione. Usato anche per restituire vettori "recuperabili" nella risposta della query. |
stored proprietà dei campi vettoriali |
Vettori originali a precisione completa (dati binari) | Usato per le operazioni interne sugli indici e per una ricerca KNN completa nelle versioni precedenti dell'API. Per i vettori compressi, viene usato anche per il ricalcolo dei punteggi di preserveOriginals su un set di risultati candidato sovracampionato dalla ricerca ANN. Questo vale per i campi vettoriali che subiscono la quantizzazione scalare o binaria. |
Proprietà rescoringOptions.rescoreStorageMethod in vectorSearch.compressions . |
Vettori nel grafico HNSW per la ricerca di AAN (Nearest Neighbors) approssimativi (grafo HNSW) o vettori per un numero completo di K Nearest Neighbors (indice eKNN) | Usato per l'esecuzione di query. È costituito da vettori con precisione completa (quando non viene applicata alcuna compressione) o vettori quantizzati. | Essential. Non esistono parametri per la rimozione di questa istanza. |
È possibile impostare proprietà che eliminano definitivamente le prime due istanze (dati JSON e dati binari) dall'archiviazione vettoriale, ma non dall'ultima istanza.
Per compensare la compressione della perdita per HNSW, è possibile mantenere la seconda istanza (dati binari) per migliorare la qualità della ricerca ANN. Per eKNN, è supportata solo la quantizzazione scalare e la rescoring non è un'opzione. Nelle versioni più recenti dell'API, come l'anteprima più recente, la seconda istanza non viene mantenuta per eKNN perché la terza istanza fornisce vettori con precisione completa in un indice eKNN.
Indici creati con le versioni API 2024-11-01-preview o successive
Per gli indici creati con l'api 2024-11-01-preview o successiva con campi vettoriali non compressi, le seconde e le terze istanze (dati binari e grafico HNSW) vengono combinate come parte degli investimenti per la riduzione dei costi, riducendo l'archiviazione complessiva. Un indice di generazione più recente con vettori consolidati è funzionalmente equivalente agli indici meno recenti, ma usa meno spazio di archiviazione. Le strutture di dati fisici vengono stabilite in una richiesta Crea indice, pertanto è necessario eliminare e ricreare l'indice per realizzare le riduzioni di archiviazione.
Se si sceglie la compressione vettoriale, ricerca di intelligenza artificiale comprime (quantizza) la parte in memoria dell'indice vettoriale. Poiché la memoria è spesso un vincolo primario per gli indici vettoriali, questa procedura consente di archiviare più vettori all'interno dello stesso servizio di ricerca. Tuttavia, la compressione con perdita equivale a meno informazioni nell'indice, che possono influire sulla qualità della ricerca.
Per ridurre la perdita di informazioni, è possibile abilitare le opzioni di "riscoring" e "sovracampionamento" per mantenere la qualità. L'effetto è il recupero di un set più ampio di documenti candidati dall'indice compresso, con ricomputazione dei punteggi di somiglianza usando i vettori originali o il prodotto punto. Affinché il rescoring funzioni, i vettori originali devono essere conservati nell'archiviazione per determinati scenari. Di conseguenza, mentre la quantizzazione riduce l'utilizzo della memoria (utilizzo delle dimensioni dell'indice vettoriale), aumenta leggermente i requisiti di archiviazione perché vengono archiviati sia i vettori compressi che originali. L'archiviazione aggiuntiva è approssimativamente uguale alla dimensione dell'indice compresso.
Rimuovere vettori di origine (dati JSON)
La stored
proprietà è una proprietà booleana in una definizione di campo vettoriale che determina se l'archiviazione viene allocata per il contenuto del campo vettoriale recuperabile ottenuto durante l'indicizzazione (istanza di origine). La proprietà stored
è impostata su true per impostazione predefinita. Se non è necessario contenuto vettoriale non elaborato in una risposta di query, è possibile risparmiare fino al 50% di spazio di archiviazione per campo cambiando in stored
false.
Considerazioni per l'impostazione di stored
su falso:
Poiché i vettori non sono leggibili dall'utente, è possibile ometterli dai risultati inviati ai LLM negli scenari RAG e dai risultati di cui viene eseguito il rendering in una pagina di ricerca. Mantienili, tuttavia, se si usano vettori in un processo downstream che utilizza il contenuto vettoriale.
Tuttavia, se la strategia di indicizzazione include aggiornamenti parziali dei documenti, ad esempio "merge" o "mergeOrUpload" in un documento esistente, l'impostazione
stored=false
impedisce gli aggiornamenti del contenuto a tali campi durante l'unione. In ogni operazione di "merge" o "mergeOrUpload" in un documento di ricerca, è necessario specificare i campi vettoriali nella loro interezza, insieme ai campi non vettoriali che si stanno aggiornando, altrimenti il vettore viene eliminato.
Importante
L'impostazione dell'attribuzione stored=false
è irreversibile. Questa proprietà può essere impostata solo quando si crea l'indice ed è consentita solo nei campi vettoriali. L'aggiornamento di un indice esistente con nuovi campi vettoriali non può impostare questa proprietà su false
. Se si vuole recuperare il contenuto vettoriale in un secondo momento, è necessario eliminare e ricompilare l'indice oppure creare e caricare un nuovo campo con la nuova attribuzione.
Per i nuovi campi vettoriali in un indice di ricerca, impostare su stored
false per rimuovere definitivamente l'archiviazione recuperabile per il campo vettore. Nell'esempio seguente viene illustrata una definizione di campo vettoriale con la stored
proprietà .
PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name": "demo-index",
"fields": [
{
"name": "vectorContent",
"type": "Collection(Edm.Single)",
"retrievable": false,
"stored": false,
"dimensions": 1536,
"vectorSearchProfile": "vectorProfile"
}
]
}
Riepilogo dei punti chiave
Si applica ai campi con un tipo di dati vettoriale.
Influisce sull'archiviazione su disco ma non sulla memoria e non ha alcun effetto sulle query. L'esecuzione di query usa un indice vettoriale separato non interessato dalla
stored
proprietà perché tale copia del vettore viene sempre archiviata.La proprietà
stored
viene impostata durante la creazione dell'indice nei campi vettoriali ed è irreversibile. Se si vuole recuperare il contenuto in un secondo momento, è necessario eliminare e ricompilare l'indice oppure creare e caricare un nuovo campo con la nuova attribuzione.Le impostazioni predefinite sono
stored
impostato su true eretrievable
impostato su false. In una configurazione predefinita viene archiviata una copia recuperabile, ma non viene restituita automaticamente nei risultati. Quandostored
è true, è possibile impostareretrievable
su true e false in qualsiasi momento senza dover ricompilare un indice. Quandostored
è false, ancheretrievable
deve essere false e non può essere modificato.
Rimuovere vettori con precisione completa (dati binari)
Nota
Questa funzionalità è attualmente in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Quando si comprimono i vettori usando la quantizzazione scalare o binaria, l'esecuzione delle query avviene sui vettori quantizzati. In questo caso, sono necessari solo i vettori di precisione completa originali (dati binari) se si vuole riscorezionare.
Se utilizzi le API di anteprima più recenti e la quantizzazione binaria, puoi eliminare in modo sicuro i vettori a precisione completa perché le strategie di ricalcolo ora utilizzano il prodotto scalare di un embedding binario, che produce risultati di ricerca di alta qualità, senza dover fare riferimento ai vettori a precisione completa nell'indice.
La rescoreStorageMethod
proprietà controlla se i vettori con precisione completa vengono archiviati. Le linee guida per decidere se conservare i vettori a piena precisione sono:
- Per la quantizzazione scalare, mantenere i vettori originali con precisione completa nell'indice perché sono necessari per il ricalcolo del punteggio.
- Per la quantizzazione binaria, mantenere i vettori originali a piena precisione per la massima qualità della ricalcolodel punteggio o rimuovere i vettori a piena precisione (richiede 2025-03-01-anteprima) se si vuole ricalcolare in base al prodotto punto degli incorporamenti binari.
Le strategie di archiviazione vettoriale sono state in continua evoluzione nelle ultime versioni. La data di creazione dell'indice e la versione dell'API determinano le opzioni di archiviazione.
Versione dell'API | Si applica a | Rimuovi vettori a precisione totale |
---|---|---|
2024-07-01 e versioni precedenti | Non applicabile. | Non esiste alcun meccanismo per la rimozione di vettori con precisione completa. |
2024-11-01-preview | Incorporamenti binari | Usare rescoreStorageMethod.discardOriginals per rimuovere vettori con precisione completa, ma in questo modo si impedisce la registrazione. enableRescoring deve essere falso se gli originali non ci sono più. |
2025-03-01-anteprima | Incorporamenti binari | Usare rescoreStorageMethod.discardOriginals per rimuovere vettori a precisione completa nell'indice mantenendo comunque le opzioni di ricalcolo. In questa anteprima è possibile eseguire la nuova verifica perché la tecnica è cambiata. Il prodotto punto degli incorporamenti binari viene usato sul rescore (ricalcolo del punteggio), producendo risultati di ricerca di alta qualità, equivalenti o migliori rispetto alle tecniche precedenti basate su vettori a piena precisione. |
Si noti che scalare non è elencato nella tabella. Se si usa la quantizzazione scalare, è necessario conservare i vettori originali a piena precisione se si vuole ricalcolare.
In vectorSearch.compressions
, la proprietà rescoreStorageMethod
è impostata su preserveOriginals
per impostazione predefinita, che mantiene i vettori a precisione completa per l'oversampling e le funzionalità di riscoring per ridurre l'effetto della compressione della perdita nel grafico HNSW. Se non sono necessari vettori con precisione completa, è possibile ridurre l'archiviazione vettoriale impostando su rescoreStorageMethod
discardOriginals
.
Importante
L'impostazione della rescoreStorageMethod
proprietà è irreversibile e può influire negativamente sulla qualità della ricerca, anche se il grado dipende dal metodo di compressione e dalle eventuali mitigazioni applicate.
Per impostare questa proprietà:
Usare Crea indice (anteprima) o Creare o aggiornare le API REST (anteprima) o un pacchetto beta di Azure SDK che fornisce la funzionalità.
Aggiungere una
vectorSearch
sezione all'indice con profili, algoritmi e compressione.In
vectorSearch.compressions
aggiungererescoringOptions
conenableRescoring
impostato su true,defaultOversampling
impostare su un numero intero positivo erescoreStorageMethod
impostare sudiscardOriginals
per la quantizzazione binaria epreserveOriginals
per la quantizzazione scalare.PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2025-03-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile-1", "algorithm": "myHnsw", "compression": "myScalarQuantization" }, { "name": "myVectorProfile-2", "algorithm": "myHnsw", "compression": "myBinaryQuantization" } ], "algorithms": [ { "name": "myHnsw", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 }, "exhaustiveKnnParameters": null } ], "compressions": [ { "name": "myScalarQuantization", "kind": "scalarQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "preserveOriginals" }, "scalarQuantizationParameters": { "quantizedDataType": "int8" }, "truncationDimension": null }, { "name": "myBinaryQuantization", "kind": "binaryQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "discardOriginals" }, "truncationDimension": null } ] } }