Incorporamenti a matrioska: Dettaglio a più scale
Cosa sono le Matryoshka Embeddings?
Quando si costruiscono sistemi di ricerca vettoriale efficienti, una sfida fondamentale è la gestione dei costi di memorizzazione, mantenendo una latenza e un richiamo accettabili. I moderni modelli di embedding producono vettori con centinaia o migliaia di dimensioni, creando un significativo overhead di memorizzazione e calcolo per il vettore grezzo e l'indice.
Tradizionalmente, i requisiti di memorizzazione vengono ridotti applicando un metodo di quantizzazione o di riduzione della dimensionalità appena prima di costruire l'indice. Ad esempio, è possibile risparmiare memoria riducendo la precisione con la quantizzazione del prodotto (PQ ) o il numero di dimensioni con l'analisi delle componenti principali (PCA). Questi metodi analizzano l'intero insieme di vettori per trovarne uno più compatto che mantenga le relazioni semantiche tra i vettori.
Pur essendo efficaci, questi approcci standard riducono la precisione o la dimensionalità solo una volta e su un'unica scala. Ma cosa succederebbe se potessimo mantenere più livelli di dettaglio contemporaneamente, come una piramide di rappresentazioni sempre più precise?
Ecco le Matryoshka embeddings. Questi costrutti intelligenti, che prendono il nome dalle matrioske russe (vedi illustrazione), incorporano più scale di rappresentazione all'interno di un singolo vettore. A differenza dei metodi tradizionali di post-elaborazione, le Matryoshka embeddings apprendono questa struttura multi-scala durante il processo di addestramento iniziale. Il risultato è notevole: non solo l'embedding completo cattura la semantica dell'input, ma ogni prefisso del sottoinsieme annidato (prima metà, primo quarto, ecc.) fornisce una rappresentazione coerente, anche se meno dettagliata.
Figura: Visualizzazione di embedding Matryoshka con più livelli di dettaglio
Figura: Visualizzazione delle Matryoshka embeddings con più livelli di dettaglio
Questo approccio è in netto contrasto con le incorporazioni convenzionali, dove l'uso di sottoinsiemi arbitrari delle dimensioni del vettore distrugge tipicamente il significato semantico. Con le Matryoshka embeddings, è possibile scegliere la granularità che meglio bilancia la precisione e il costo computazionale di un compito specifico.
Avete bisogno di una rapida ricerca approssimativa? Usate la "bambola" più piccola. Avete bisogno della massima precisione? Utilizzate l'incorporazione completa. Questa flessibilità li rende particolarmente preziosi per i sistemi che si adattano a requisiti di prestazione diversi o a vincoli di risorse.
Inferenza
Un'applicazione preziosa delle Matryoshka embeddings è l'accelerazione delle ricerche di similarità senza sacrificare il richiamo. Sfruttando sottoinsiemi più piccoli di embeddings di query e database - come i primi 1/32 delle loro dimensioni - possiamo costruire un indice su questo spazio ridotto che conserva ancora gran parte delle informazioni sulla somiglianza. I risultati iniziali di questo spazio di incorporamento più piccolo possono essere utilizzati direttamente. Tuttavia, esiste anche una tecnica per aumentare il richiamo e tenere conto di qualsiasi riduzione minore dovuta alla riduzione dimensionale, rendendo questo approccio efficiente ed efficace per le attività di ricerca per similarità.
Figura: Come funziona la ricerca a imbuto con le Matryoshka embeddings
Figura: Come funziona la ricerca a imbuto con le Matryoshka embeddings
Per accelerare in modo efficiente la ricerca di similarità, mantenendo al contempo l'accuratezza, possiamo utilizzare un approccio di "ricerca a imbuto". In primo luogo, si esegue una ricerca di somiglianza iniziale utilizzando solo i primi 1/32 delle dimensioni dell'embedding, generando un ampio pool di elementi candidati. In seguito, si classifica questi candidati in base alla loro somiglianza con la query utilizzando i primi 1/16 delle dimensioni, tagliando una parte dell'elenco. Questo processo continua in modo iterativo, con la riclassificazione e la potatura di sottoinsiemi sempre più ampi delle dimensioni di incorporamento: 1/8, 1/4 e così via. È importante notare che viene eseguita una sola ricerca iniziale di somiglianza in questo spazio a bassa dimensione e che un solo passaggio del modello di embedding calcola l'embedding della query. Questo processo di incanalamento restringe i candidati a ogni passo ed è più veloce ed efficiente rispetto alla ricerca diretta nello spazio full-dimensionale. L'estrazione di molte corrispondenze dallo spazio 1/32-dimensionale e la loro raffinazione attraverso la ricerca a imbuto possono accelerare in modo significativo la ricerca di somiglianza, pur mantenendo un forte richiamo.
Formazione
Vediamo alcuni dettagli tecnici. Il metodo è molto semplice da applicare. Consideriamo il contesto della messa a punto di un modello BERT per l'incorporazione di frasi. Per convertire un modello BERT, che è stato pre-addestrato sulla perdita dei token mascherati, in un modello di embedding di frase, formiamo l'embedding di frase come la media dello strato finale, cioè la media degli embedding contestualizzati per token.
Una scelta di obiettivi di addestramento è la perdita Cosine Sentence (CoSENT), L v s . Si inserisce una coppia di incorporazioni di frasi, u v, e il loro punteggio di somiglianza desiderato, s (si veda il link sopra per la formula). Ora, per imparare le incorporazioni Matryoshka, apportiamo una piccola modifica all'obiettivo dell'addestramento:
d L v = w L1, v 1) + w L1, v 1) + w L1, v
dove la somma prosegue calcolando la perdita su metà dell'input del termine precedente fino a quando non viene raggiunto un collo di bottiglia informativo. Gli autori suggeriscono di impostare
w
In parole povere, la perdita Matryoshka è una somma ponderata della perdita originale su sottoinsiemi ricorsivi dell'input.
Un aspetto fondamentale dell'equazione precedente è che la perdita Matryoshka consente di apprendere in modo efficiente le rappresentazioni su più scale condividendo i pesi tra i modelli di incorporazione (lo stesso modello viene utilizzato per codificare, ad esempio, u e u ) e condividendo le dimensioni tra le scale u è un sottoinsieme di u).
Matryoshka Embeddings e Milvus
Milvus supporta senza problemi qualsiasi modello di incorporazione Matryoshka che può essere caricato tramite librerie standard come pymilvus.model, sentence-transformers o altri strumenti simili. Dal punto di vista del sistema, non c'è alcuna differenza funzionale tra un modello di embedding normale e uno specificamente addestrato per generare embedding Matryoshka.
I modelli di embedding Matryoshka più diffusi sono:
OpenAI
text-embedding-3-large
Nomic
nomic-embed-text-v1
Alibaba
gte-multilingual-base
Per una guida completa all'uso degli embedding Matryoshka con Milvus, consultare il quaderno Funnel Search with Matryoshka Embeddings.
Sintesi
L'embedding Matryoshka consente agli sviluppatori di creare embeddings abbreviati senza sacrificare l'integrità semantica, rendendoli ideali per ricerche e archiviazioni più efficienti. È possibile modificare un modello esistente, ma sono disponibili anche opzioni pre-addestrate, come quelle di OpenAI e Hugging Face.
Tuttavia, un limite attuale è la scarsità di Matryoshka embeddings open-source, pochi dei quali sono disponibili sull'hub di Hugging Face. Inoltre, questi modelli spesso non sono esplicitamente etichettati come "Matryoshka", il che li rende più difficili da individuare. Si spera che, con l'aumento dell'interesse, si possa presto arrivare a una disponibilità più ampia e a un'etichettatura più chiara.
Siete pronti a ottimizzare le vostre capacità di ricerca? Iniziate oggi stesso con le incorporazioni Milvus + Matryoshka!
Risorse
Introduzione all'integrazione di PyMilvus con i modelli di embedding
Esplorazione di BGE-M3: Il futuro del recupero di informazioni con Milvus
Nomic Embed: addestramento di un incorporatore di testo a contesto lungo riproducibile
Addestramento di Matryoshka Embeddings con la libreria Sentence Transformers
- Cosa sono le Matryoshka Embeddings?
- Inferenza
- Formazione
- Matryoshka Embeddings e Milvus
- Sintesi
- Risorse
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word