Eliminare le istanze vettoriali facoltative dall'archiviazione
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.
Prerequisiti
- Campi vettoriali in un indice di ricerca con una
vectorSearch
configurazione, usando gli algoritmi HNSW (Hierarchical Navigable Small Worlds) o K-nearest neighbor (KNN) completi e un nuovo profilo vettoriale.
Modalità di archiviazione dei campi vettoriali
Per ogni campo vettoriale, potrebbero essere presenti tre copie dei vettori, ognuna che serve uno scopo diverso:
Istanza | Utilizzo | Controllo dell'uso |
---|---|---|
Vettori di origine che archiviano il codice JSON ricevuto durante l'indicizzazione dei documenti | Utilizzato per l'aggiornamento incrementale dei dati con merge o mergeOrUpload durante l'indicizzazione dei documenti. Usato anche se si vogliono restituire vettori "recuperabili" nella risposta della query. |
stored proprietà nei campi vettoriali |
Vettori originali a precisione completa | Negli indici esistenti, questi vengono usati per le operazioni interne sugli indici e per una ricerca KNN completa. Per i vettori che usano la compressione, viene usato anche per la riscoring (se abilitata) in un set di risultati candidato oversamplato dalla ricerca ANN nei campi vettoriali usando la compressione di quantizzazione scalare o binaria . | rescoringOptions.rescoreStorageMethod proprietà in vectorSearch.compressions . Per i campi vettoriali non compressi sugli indici creati con 2024-11-01-Preview versioni API e versioni successive, questo verrà omesso per impostazione predefinita senza alcun impatto sulle attività di ricerca né sulla qualità. |
Vettori nel grafico HNSW per la ricerca Approssimati vicini (ANN) | Usato per l'esecuzione di query ANN. È costituito da vettori con precisione completa (quando non viene applicata alcuna compressione) o vettori quantizzati (quando viene applicata la compressione) | Si applica solo a HNSW. Queste strutture di dati sono necessarie per una ricerca ANN efficiente. |
È possibile impostare proprietà che eliminano definitivamente le prime due istanze dall'archiviazione vettoriale.
L'ultima istanza (vettori e grafi) è necessaria per l'esecuzione di query vettoriali ANN. Se vengono usate tecniche di compressione come la quantizzazione scalare o binaria , verranno applicate a questo set di dati. Se si desidera compensare la compressione con perdita di dati, è consigliabile mantenere la seconda istanza a scopo di riscoring per migliorare la qualità della ricerca ANN.
Impostare la stored
proprietà
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 (l'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. Mantenerli, 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 nell'intero insieme ai campi non di filtro che si sta aggiornando oppure 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.
Impostare la rescoreStorageMethod
proprietà
Nota
Questa funzionalità è attualmente in anteprima pubblica. Questa anteprima viene messa a disposizione senza 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.
La rescoreStorageMethod
proprietà controlla l'archiviazione di vettori con precisione completa quando viene utilizzata la compressione.
Per i campi vettoriali non compressi sugli indici creati con 2024-11-01-Preview
versioni API e versioni successive, questo verrà omesso per impostazione predefinita senza alcun impatto sulle attività di ricerca né sulla qualità. Per i campi vettoriali esistenti creati prima di questa versione dell'API, non è possibile rimuovere questa copia di dati sul posto.
In una compressione vettoriale, la rescoreStorageMethod
proprietà è impostata su preserveOriginals
per impostazione predefinita, che mantiene i vettori a precisione completa perle funzionalità di sovracampionamento e riscoring per ridurre l'effetto della compressione della perdita nel grafico HNSW. Se non si usano queste funzionalità, è possibile ridurre l'archiviazione vettoriale impostando su rescoreStorageMethod
discardOriginals
.
Importante
L'impostazione della rescoreStorageMethod
proprietà è irreversibile e avrà livelli diversi di perdita di qualità della ricerca a seconda del metodo di compressione. Può essere impostato sugli indici creati con 2024-11-01-Preview
o versioni successive, durante la creazione dell'indice o l'aggiunta di nuovi campi vettoriali.
Se si intende usare la quantizzazione scalare o binaria, è consigliabile rescoreStorageMethod
mantenere impostato per preserveOriginals
ottimizzare la qualità della ricerca.
Per impostare questa proprietà:
Usare Creare un indice o creare o aggiornare l'indice 2024-11-01-preview delle API REST o un pacchetto beta di Azure SDK che fornisce la funzionalità.
Aggiungere una
vectorSearch
sezione all'indice con profili, algoritmi e compressione.In compressioni aggiungere
rescoringOptions
conenableRescoring
impostato su true,defaultOversampling
impostare su un numero intero positivo erescoreStorageMethod
impostare supreserveOriginals
.PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile", "algorithm": "myHnsw", "compression": "myScalarQuantization" } ], "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 } ] } }