Comprensione del livello di consistenza nel database dei vettori Milvus
Immagine di copertina
Questo articolo è stato scritto da Chenglong Li e trascritto da Angela Ni.
Vi siete mai chiesti perché a volte i dati che avete cancellato dal database vettoriale di Mlivus appaiono ancora nei risultati della ricerca?
È molto probabile che il motivo sia che non avete impostato il livello di coerenza appropriato per la vostra applicazione. Il livello di coerenza in un database vettoriale distribuito è fondamentale perché determina in quale momento una particolare scrittura di dati può essere letta dal sistema.
Per questo motivo, questo articolo intende demistificare il concetto di consistenza e approfondire i livelli di consistenza supportati dal database vettoriale Milvus.
Vai a:
Cos'è la consistenza
Prima di iniziare, è necessario chiarire la connotazione della consistenza in questo articolo, poiché la parola "consistenza" è un termine sovraccarico nell'industria informatica. La consistenza in un database distribuito si riferisce specificamente alla proprietà che assicura che ogni nodo o replica abbia la stessa visione dei dati quando scrive o legge i dati in un determinato momento. Pertanto, qui si parla di coerenza come nel teorema CAP.
Per servire le grandi aziende online nel mondo moderno, vengono comunemente adottate repliche multiple. Ad esempio, il gigante dell'e-commerce online Amazon replica i suoi ordini o i dati SKU in più centri dati, zone o addirittura paesi per garantire un'elevata disponibilità del sistema in caso di arresto o guasto. Ciò pone una sfida al sistema: la coerenza dei dati tra più repliche. Senza coerenza, è molto probabile che l'articolo cancellato dal carrello di Amazon ricompaia, causando una pessima esperienza all'utente.
Per questo motivo, abbiamo bisogno di diversi livelli di coerenza dei dati per le diverse applicazioni. Fortunatamente Milvus, un database per l'intelligenza artificiale, offre una certa flessibilità nel livello di consistenza e consente di impostare il livello di consistenza più adatto alla propria applicazione.
Consistenza nel database vettoriale Milvus
Il concetto di livello di coerenza è stato introdotto per la prima volta con il rilascio di Milvus 2.0. La versione 1.0 di Milvus non era un database vettoriale distribuito e quindi non prevedeva livelli di consistenza regolabili. Milvus 1.0 esegue il flussaggio dei dati ogni secondo, il che significa che i nuovi dati sono quasi immediatamente visibili al momento del loro inserimento e che Milvus legge la vista dei dati più aggiornata nel momento esatto in cui arriva una richiesta di ricerca o di interrogazione di similarità vettoriale.
Tuttavia, Milvus è stato ristrutturato nella sua versione 2.0 e Milvus 2.0 è un database vettoriale distribuito basato su un meccanismo pub-sub. Il teorema PACELC indica che un sistema distribuito deve trovare un compromesso tra coerenza, disponibilità e latenza. Inoltre, diversi livelli di consistenza servono per diversi scenari. Per questo motivo, in Milvus 2.0 è stato introdotto il concetto di consistenza, che supporta la regolazione dei livelli di consistenza.
Quattro livelli di coerenza nel database vettoriale Milvus
Milvus supporta quattro livelli di consistenza: forte, stallo limitato, sessione ed eventuale. L'utente di Milvus può specificare il livello di consistenza quando crea una collezione o esegue una ricerca o un'interrogazione di similarità vettoriale. Questa sezione continuerà a spiegare come si differenziano questi quattro livelli di consistenza e per quale scenario sono più adatti.
Forte
Strong è il livello di coerenza più alto e più rigoroso. Garantisce che gli utenti possano leggere la versione più recente dei dati.
Forte
Secondo il teorema PACELC, se il livello di coerenza è impostato su forte, la latenza aumenterà . Pertanto, si consiglia di scegliere una consistenza forte durante i test funzionali per garantire l'accuratezza dei risultati dei test. Inoltre, la consistenza forte è la più adatta per le applicazioni che richiedono una stretta consistenza dei dati a scapito della velocità di ricerca. Un esempio può essere un sistema finanziario online che si occupa di pagamenti e fatturazione degli ordini.
Stalliezza limitata
La staleness limitata, come suggerisce il nome, consente l'inconsistenza dei dati per un certo periodo di tempo. Tuttavia, in genere, i dati sono sempre globalmente coerenti al di fuori di quel periodo di tempo.
Stallo limitato
La staleness limitata è adatta a scenari che devono controllare la latenza di ricerca e possono accettare l'invisibilità sporadica dei dati. Ad esempio, nei sistemi di raccomandazione come i motori di raccomandazione video, l'invisibilità dei dati una volta ogni tanto ha un impatto davvero minimo sul tasso di richiamo complessivo, ma può aumentare significativamente le prestazioni del sistema di raccomandazione. Un esempio può essere un'applicazione per monitorare lo stato degli ordini online.
Sessione
La sessione garantisce che tutti i dati scritti possano essere immediatamente percepiti in lettura durante la stessa sessione. In altre parole, quando si scrivono dati tramite un client, i nuovi dati inseriti diventano istantaneamente ricercabili.
Sessione
Si consiglia di scegliere la sessione come livello di coerenza per quegli scenari in cui la richiesta di coerenza dei dati nella stessa sessione è elevata. Un esempio può essere la cancellazione dei dati di una voce di libro dal sistema bibliotecario; dopo la conferma della cancellazione e l'aggiornamento della pagina (una sessione diversa), il libro non dovrebbe più essere visibile nei risultati di ricerca.
Eventuale
Non esiste un ordine garantito di lettura e scrittura, e le repliche finiscono per convergere allo stesso stato se non vengono effettuate altre operazioni di scrittura. In caso di coerenza eventuale, le repliche iniziano a lavorare sulle richieste di lettura con gli ultimi valori aggiornati. La consistenza eventuale è il livello più debole tra i quattro.
Eventuale
Tuttavia, secondo il teorema PACELC, la latenza di ricerca può essere enormemente ridotta sacrificando la coerenza. Pertanto, la consistenza eventuale è più adatta a scenari che non richiedono un'elevata consistenza dei dati, ma che richiedono prestazioni di ricerca rapidissime. Un esempio può essere il recupero delle recensioni e delle valutazioni dei prodotti Amazon con la consistenza eventuale.
Nota finale
Tornando alla domanda posta all'inizio di questo articolo, i dati cancellati vengono comunque restituiti come risultati di ricerca perché l'utente non ha scelto il livello di consistenza adeguato. Il valore predefinito per il livello di consistenza è bounded staleness (Bounded
) nel database vettoriale Milvus. Pertanto, la lettura dei dati potrebbe essere in ritardo e Milvus potrebbe leggere la vista dei dati prima che siano state effettuate operazioni di cancellazione durante una ricerca o una query di similarità . Tuttavia, questo problema è semplice da risolvere. È sufficiente regolare il livello di coerenza quando si crea una collezione o si esegue una ricerca o una query di similarità vettoriale. Semplice!
Nel prossimo post sveleremo il meccanismo che sta dietro e spiegheremo come il database vettoriale Milvus raggiunge diversi livelli di coerenza. Restate sintonizzati!
Il prossimo passo
Con il rilascio ufficiale di Milvus 2.1, abbiamo preparato una serie di blog che introducono le nuove funzionalità . Per saperne di più, leggete questa serie di blog:
- Come utilizzare i dati sulle stringhe per potenziare le applicazioni di ricerca per similaritÃ
- Utilizzo di Milvus incorporato per installare ed eseguire immediatamente Milvus con Python
- Aumentare la velocità di lettura del database vettoriale con le repliche in memoria
- Capire il livello di consistenza nel database vettoriale Milvus
- Capire il livello di consistenza del database vettoriale Milvus (parte II)
- In che modo il database vettoriale Milvus garantisce la sicurezza dei dati?
- Cos'è la consistenza
- Quattro livelli di coerenza nel database vettoriale Milvus
- Nota finale
- Il prossimo passo
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