🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus è stato costruito per la ricerca di similarità vettoriale su scala massiccia (pensate a un trilione)

Milvus è stato costruito per la ricerca di similarità vettoriale su scala massiccia (pensate a un trilione)

  • Engineering
January 13, 2021
milvus

Ogni giorno, un numero incalcolabile di informazioni critiche per il business viene sprecato perché le aziende non riescono a dare un senso ai propri dati. Si stima che i dati non strutturati, come testo, immagini, video e audio, rappresentino l'80% di tutti i dati, ma solo l'1% di essi viene analizzato. Fortunatamente, l'intelligenza artificiale (AI), il software open-source e la legge di Moore stanno rendendo l'analisi su scala industriale più accessibile che mai. Grazie alla ricerca per similarità vettoriale, è possibile estrarre valore da enormi insiemi di dati non strutturati. Questa tecnica prevede la conversione di dati non strutturati in vettori di caratteristiche, un formato di dati numerici facile da elaborare e analizzare in tempo reale.

La ricerca per similarità vettoriale ha applicazioni che spaziano dal commercio elettronico alla sicurezza, allo sviluppo di nuovi farmaci e altro ancora. Queste soluzioni si basano su insiemi di dati dinamici contenenti milioni, miliardi o addirittura trilioni di vettori e la loro utilità dipende spesso dalla restituzione di risultati quasi istantanei. Milvus è una soluzione open-source per la gestione dei dati vettoriali costruita da zero per gestire e ricercare in modo efficiente grandi insiemi di dati vettoriali. Questo articolo illustra l'approccio di Milvus alla gestione dei dati vettoriali e il modo in cui la piattaforma è stata ottimizzata per la ricerca di similarità vettoriali.

Vai a:

Gli alberi LSM rendono efficiente la gestione dinamica dei dati su scala massiva

Per garantire una gestione efficiente dei dati dinamici, Milvus utilizza una struttura di dati log-structured merge-tree (LSM tree). Gli alberi LSM sono adatti per l'accesso a dati con un elevato numero di inserimenti e cancellazioni. Per informazioni dettagliate sugli attributi specifici degli alberi LSM che aiutano a garantire una gestione dinamica dei dati ad alte prestazioni, si veda la ricerca originale pubblicata dai suoi inventori. Gli alberi LSM sono la struttura dati sottostante utilizzata da molti database popolari, tra cui BigTable, Cassandra e RocksDB.

I vettori esistono come entità in Milvus e sono memorizzati in segmenti. Ogni segmento contiene da uno a circa 8 milioni di entità. Ogni entità ha campi per un ID univoco e per gli input del vettore, con quest'ultimo che rappresenta da 1 a 32768 dimensioni.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_2.png Blog_Milvus è stato costruito per la ricerca di similarità vettoriale su larga scala (pensate a un trilione)_2.png

La gestione dei dati è ottimizzata per garantire un accesso rapido e una frammentazione limitata.

Quando riceve una richiesta di inserimento, Milvus scrive nuovi dati nel registro di scrittura (WAL). Dopo che la richiesta è stata registrata con successo nel file di registro, i dati vengono scritti in un buffer mutabile. Infine, uno dei tre trigger fa sì che il buffer diventi immutabile e venga scaricato su disco:

  1. Intervalli temporali: I dati vengono regolarmente scaricati su disco a intervalli definiti (1 secondo per impostazione predefinita).
  2. Dimensione del buffer: I dati accumulati raggiungono il limite superiore del buffer mutabile (128 MB).
  3. Attivazione manuale: I dati vengono scaricati manualmente sul disco quando il client chiama la funzione flush.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_3.png Blog_Milvus è stato costruito per la ricerca di similarità vettoriale su scala massiccia (pensate a un trilione)_3.png

Gli utenti possono aggiungere decine o milioni di vettori alla volta, generando file di dati di dimensioni diverse man mano che vengono inseriti nuovi vettori. Ciò comporta una frammentazione che può complicare la gestione dei dati e rallentare la ricerca di similarità vettoriale. Per evitare un'eccessiva frammentazione dei dati, Milvus unisce costantemente i segmenti di dati finché la dimensione combinata del file non raggiunge un limite configurabile dall'utente (ad esempio, 1 GB). Ad esempio, con un limite superiore di 1 GB, l'inserimento di 100 milioni di vettori a 512 dimensioni darà luogo a soli ~200 file di dati.

In scenari di calcolo incrementale in cui i vettori vengono inseriti e ricercati simultaneamente, Milvus rende immediatamente disponibili per la ricerca i dati vettoriali appena inseriti prima di fonderli con altri dati. Dopo la fusione dei dati, i file di dati originali vengono rimossi e il file appena creato viene utilizzato per la ricerca.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_4.png Blog_Milvus è stato costruito per la ricerca di somiglianza vettoriale su larga scala (si pensi ai trilioni)_4.png

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_5.png Blog_Milvus è stato costruito per la ricerca di similarità vettoriale su larga scala (pensate a un trilione)_5.png

La ricerca per similarità è accelerata dall'indicizzazione dei dati vettoriali

Per impostazione predefinita, Milvus si affida alla ricerca bruta quando interroga i dati vettoriali. Conosciuto anche come ricerca esaustiva, questo approccio controlla tutti i dati vettoriali ogni volta che viene eseguita una query. Con set di dati contenenti milioni o miliardi di vettori multidimensionali, questo processo è troppo lento per essere utile nella maggior parte degli scenari di ricerca di similarità. Per accelerare i tempi di interrogazione, si utilizzano algoritmi per costruire un indice vettoriale. I dati indicizzati vengono raggruppati in modo che i vettori simili siano più vicini tra loro, consentendo al motore di ricerca per similarità di interrogare solo una parte dei dati totali, riducendo drasticamente i tempi di interrogazione, ma sacrificando la precisione.

La maggior parte dei tipi di indici vettoriali supportati da Milvus utilizza algoritmi di ricerca approssimata per prossimità (ANN). Esistono numerosi indici ANN e ognuno di essi comporta dei compromessi tra prestazioni, accuratezza e requisiti di archiviazione. Milvus supporta indici basati su quantizzazione, grafi e alberi, tutti utili per diversi scenari applicativi. Per ulteriori informazioni sulla creazione di indici e sui tipi specifici di indici vettoriali supportati, consultare la documentazione tecnica di Milvus.

La creazione di indici genera molti metadati. Ad esempio, l'indicizzazione di 100 milioni di vettori 512-dimensionali salvati in 200 file di dati genera altri 200 file di indice. Per controllare in modo efficiente lo stato dei file e cancellare o inserire nuovi file, è necessario un sistema efficiente di gestione dei metadati. Milvus utilizza l'elaborazione transazionale online (OLTP), una tecnica di elaborazione dei dati adatta all'aggiornamento e/o alla cancellazione di piccole quantità di dati in un database. Milvus utilizza SQLite o MySQL per gestire i metadati.

Per saperne di più su Milvus

Milvus è una piattaforma open source per la gestione dei dati vettoriali attualmente in incubazione presso LF AI & Data, un'organizzazione della Linux Foundation. Milvus è stato reso open source nel 2019 da Zilliz, la società di software per la scienza dei dati che ha avviato il progetto. Ulteriori informazioni su Milvus sono disponibili sul suo sito web. Se siete interessati alla ricerca per similarità vettoriale o all'utilizzo dell'intelligenza artificiale per sbloccare il potenziale dei dati non strutturati, unitevi alla nostra comunità open-source su GitHub.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Continua a Leggere