In che modo la quantizzazione dei prodotti accelera le grandi raccolte private di vettori?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

La quantizzazione del prodotto accelera grandi raccolte private di vettori suddividendo gli embedding in sottospazi e sostituendo ogni sottovettore con un codice compatto del centroide appreso.

Si tratta di un meccanismo specifico all'interno della più ampia famiglia della quantizzazione vettoriale. Invece di ridurre ogni coordinata in modo indipendente, la PQ apprende diversi codebook più piccoli e rappresenta un embedding ad alta dimensionalità come una sequenza di ID di codice. Un server di ricerca domestico può mantenere in memoria molti più di questi codici e stimare le distanze delle query a partire da tabelle precalcolate, riducendo sia i byte necessari per memorizzare i vettori sia la quantità di aritmetica a precisione completa richiesta durante un'ampia scansione dei candidati.

La PQ divide un embedding ad alta dimensionalità in diversi sottovettori

Supponiamo che un embedding abbia dimensione `d`. La PQ sceglie `M` sottoquantizzatori e suddivide le coordinate in `M` blocchi a dimensionalità inferiore, in modo che ogni blocco possa essere modellato separatamente.

Il numero di sottoquantizzatori determina in quanti blocchi a dimensionalità inferiore viene diviso l'embedding originale e quindi quanti ID di codice compongono una rappresentazione PQ.

È questa fattorizzazione a dare il nome alla quantizzazione del prodotto: l'approssimazione completa viene assemblata a partire da scelte effettuate indipendentemente in diversi sottospazi, invece che da un unico codebook enorme sull'intero vettore. I sottospazi devono suddividere le dimensioni del vettore in modo compatibile. Le loro dimensioni e il loro numero influenzano la compressione, il costo di addestramento del codebook, l'accuratezza delle distanze e l'adattamento della distribuzione dei dati alla rappresentazione fattorizzata.

Ogni sottospazio apprende un codebook di centroidi rappresentativi

La PQ viene normalmente addestrata su un campione rappresentativo della raccolta. Per ogni sottospazio, il clustering individua vettori centroidi che rappresentano gruppi di sottovettori simili.

Un tipico quantizzatore del prodotto utilizza k-means per apprendere i centroidi all'interno di ogni sottospazio, minimizzando l'errore di approssimazione tra i sottovettori di addestramento e i rappresentanti assegnati.

Dopo l'addestramento, il database non deve più memorizzare tutte le coordinate originali nel codice compatto di ricerca. Deve conservare solo l'identificatore del centroide più vicino di ogni sottospazio.

Se il campione di addestramento rappresenta male i futuri documenti domestici, i centroidi appresi possono approssimare male i vettori successivi. La qualità del codebook è quindi un limite implementativo, non un dettaglio iniziale che si possa ignorare.

Il vettore memorizzato diventa una breve sequenza di ID di codice

Per ogni sottovettore, l'encoder individua il centroide più vicino e memorizza l'indice di quel centroide. La concatenazione dei `M` indici forma il codice PQ per l'embedding completo.

La memorizzazione di m codici di sottovettore con bit configurabili sostituisce un lungo array di float con una breve sequenza di identificatori dei centroidi e codebook condivisi.

Ad esempio, otto bit per sottoquantizzatore possono rappresentare 256 scelte di centroidi in quel sottospazio. Il codice vettoriale complessivo cresce quindi in base al numero di sottoquantizzatori, invece di utilizzare una precisione di 32 bit per ogni dimensione originale. Anche i codebook e l'overhead dell'indice consumano memoria, quindi l'intera raccolta è più grande dei soli byte dei codici. Il risparmio diventa più significativo quando il numero di vettori è abbastanza elevato da ammortizzare i codebook condivisi.

-15% OFF

Una query crea tabelle di ricerca delle distanze per ogni sottospazio

Quando arriva una query, il sistema la suddivide negli stessi sottospazi e calcola la distanza da ogni centroide di ciascun codebook. Questi valori formano piccole tabelle di ricerca.

Una tabella delle distanze tra query e centroidi precalcola la distanza della query da ogni centroide di ogni sottospazio, così le distanze dei candidati possono essere assemblate tramite piccole ricerche invece che con operazioni aritmetiche sui vettori completi.

Per stimare la distanza da un vettore memorizzato nel database, la ricerca non ricostruisce più ogni coordinata completa. Legge ogni ID di codice, cerca la distanza corrispondente del sottospazio e somma questi valori.

Questo percorso basato sulle tabelle viene spesso chiamato calcolo asimmetrico della distanza, perché la query può rimanere ad alta precisione mentre i vettori del database sono rappresentati da codici quantizzati.

I codici compatti migliorano la località della cache con la crescita delle raccolte

Le scansioni di grandi raccolte di vettori sono spesso limitate dal trasferimento dei dati dei candidati attraverso la memoria, più che dalla complessità matematica di una singola operazione di distanza.

I codici brevi permettono di contenere più candidati nelle cache della CPU e riducono la larghezza di banda necessaria per ogni confronto.

Il percorso di calcolo compresso delle distanze può essere accelerato con ricerche nelle tabelle compatibili con SIMD, poiché la ricerca quantizzata con il prodotto legge ripetutamente codici compatti e accumula le distanze dei sottospazi.

In una raccolta privata domestica, questo può fare la differenza tra un indice la cui rappresentazione attiva di ricerca rimane nella RAM e uno che entra continuamente in competizione con l'LLM locale, il database e la cache del filesystem.

Il vantaggio diminuisce quando la raccolta è molto piccola, quando il filtraggio dei metadati riduce ogni query a una manciata di vettori o quando un altro livello dell'indice domina la latenza.

La PQ di solito sacrifica parte del richiamo in cambio di compressione e velocità

I codici dei centroidi approssimano i sottovettori originali, quindi due candidati possono cambiare ordine quando le loro distanze reali sono molto vicine. In generale, una compressione più aggressiva lascia meno informazioni per distinguerli.

Considerare la quantizzazione del prodotto come una compressione con perdita rende chiaro il compromesso: codici più piccoli riducono la memoria occupata dai vettori, ma l'errore di quantizzazione può modificare l'ordine dei vicini più prossimi.

Aumentare il numero di sottoquantizzatori o di bit può preservare più dettagli, ma rende più grandi ogni codice e le strutture di ricerca. Codici più piccoli consentono di risparmiare più memoria, ma aumentano la probabilità di errore di quantizzazione. La configurazione utile dipende dal corpus. Manuali strettamente correlati, versioni duplicate dei documenti e ricerca di codice con granularità fine possono richiedere più precisione rispetto al recupero semantico generale su note domestiche eterogenee.

Un primo passaggio compatto può essere seguito da un nuovo calcolo con precisione completa

La PQ non richiede che il risultato finale si affidi ciecamente all'ordine delle distanze compresse. Un sistema può recuperare un insieme più ampio di candidati con la PQ e poi ricalcolare il punteggio solo per quei candidati utilizzando i vettori originali memorizzati altrove.

Nel recupero semantico di vettori, la PQ modifica la rappresentazione utilizzata per confrontare i candidati; provenienza, filtraggio dei metadati, riordinamento e RAG continuano a operare attorno a questa fase vettoriale.

Questo approccio a due fasi distribuisce memoria e calcolo in modo asimmetrico: i codici compressi gestiscono l'ampio spazio dei candidati, mentre i vettori esatti vengono consultati solo per una breve lista finale.

La quantizzazione del prodotto accelera una raccolta privata quando i codici compatti riducono in modo sostanziale l'insieme di lavoro e il traffico delle distanze senza abbassare il richiamo misurato al di sotto della qualità delle evidenze richiesta dal sistema RAG locale.

Hub Tecnologico e AI

Altro da leggere

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.