Archiviazione V3Compatible with Milvus 3.0.x

Panoramica

I set di dati di intelligenza artificiale spesso si evolvono dopo la creazione di una raccolta. Man mano che i modelli e i flussi di lavoro cambiano, i team potrebbero dover aggiungere testo, generare nuovi campi vettoriali per entità esistenti o utilizzare dati archiviati al di fuori di Milvus. Il supporto di questi flussi di lavoro richiede un modello di archiviazione in grado di evolversi insieme al set di dati.

Storage V3 fornisce questo modello in Milvus 3.0. Utilizza un layout di archiviazione con versioni per incorporare i dati aggiunti o riscritti nel tempo, mentre le applicazioni continuano ad accedere alle collezioni tramite le stesse API di Milvus.

Storage V3 è disabilitato per impostazione predefinita. Una volta che l’ common.storage.useLoonFFI e entra in vigore, le nuove operazioni di scrittura e l’output della compattazione utilizzano Storage V3. I dati esistenti rimangono nel layout attuale fino a quando i dati idonei non vengono riscritti dalla compattazione in background. Milvus è in grado di leggere entrambi i layout durante questa transizione. Abilitare Storage V3 per utilizzare le funzionalità che dipendono da esso, piuttosto che come ottimizzazione generale delle prestazioni.

Formati dei dati in Storage V3

Storage V3 utilizza manifesti per descrivere i dati delle raccolte indipendentemente dal formato dei dati sottostante. Ciò consente allo stesso livello di archiviazione di funzionare sia con i dati gestiti da Milvus sia con quelli che rimangono in un sistema esterno.

Formati dei file delle raccolte gestite

Per le raccolte gestite, l’opzione « dataNode.storage.format » (Formato file per i nuovi dati di Storage V3) seleziona il formato file per i nuovi dati di Storage V3. L’impostazione supporta i seguenti valori:

FormatoDescrizione
parquetIl formato di file a colonne predefinito e ampiamente adottato, con ampia compatibilità con l'ecosistema e strumenti consolidati. Parquet organizza i dati in gruppi di righe e supporta la codifica e la compressione per colonna, consentendo a Milvus di leggere solo le colonne necessarie ed elaborare in modo efficiente scansioni sequenziali di grandi dimensioni.
vortexUn formato di file colonnare opzionale di nuova generazione, basato su codifiche estensibili e componibili e su statistiche avanzate. In Milvus, Vortex supporta la proiezione delle colonne, le letture per intervallo e le letture ad accesso casuale. Queste funzionalità possono ridurre le letture di dati non necessarie per carichi di lavoro adeguati.

La modifica dell’ dataNode.storage.format e influisce sulle nuove scritture in Storage V3. I file esistenti mantengono il loro formato attuale fino a quando la compattazione non riscrive i segmenti corrispondenti. La maggior parte delle implementazioni dovrebbe mantenere il formato predefinito parquet a meno che benchmark rappresentativi non dimostrino che vortex si adatta meglio ai propri dati e modelli di accesso.

Collezioni esterne e formati di origine supportati

Le raccolte esterne consentono a Milvus di utilizzare dati memorizzati in file o tabelle esterni. Storage V3 supporta i seguenti formati di origine esterni:

FormatoCategoriaFonte previstaSupporto di Storage V3
parquetFormato fileUna directory o un prefisso di archiviazione a oggetti contenente file Parquet.Individua i file, ne legge i metadati e i gruppi di righe e li registra in un manifesto Storage V3.
vortexFormato fileUna directory o un prefisso di archiviazione a oggetti contenente file Vortex.Individua i file e utilizza il layout e le statistiche di Vortex per la proiezione, le letture per intervallo e le letture ad accesso casuale.
lance-tableFormato tabellaUna directory di dataset Lance.Legge i metadati del set di dati e mappa i relativi frammenti in un manifesto Storage V3.
iceberg-tableFormato tabellaUn file JSON contenente i metadati di Iceberg e l’ID dello snapshot.Risolve lo snapshot specificato, pianifica i relativi file di dati e conserva i metadati relativi alle eliminazioni per posizione. Le eliminazioni per uguaglianza non sono supportate e devono essere convertite in eliminazioni per posizione prima che la raccolta esterna venga aggiornata.

Le fonti esterne sono di sola lettura. Storage V3 crea e aggiorna il proprio manifesto senza modificare o copiare i dati di origine. Milvus può quindi creare indici ed eseguire ricerche e query sui dati tramite una collezione esterna.

Archiviazione cloud e autenticazione tra account

La tabella seguente descrive esclusivamente il modo in cui una raccolta esterna accede ai dati di origine archiviati in un altro account cloud. Non descrive l’object storage utilizzato per i dati gestiti da Milvus.

Archiviazione cloudFormati esterni supportatiAutenticazione tra account per le collezioni esterne
Amazon S3Tutti e quattro i formati sopra elencati.Specificare l'ARN del ruolo IAM di proprietà del cliente. Storage V3 utilizza l'AssumeRole di AWS STS per ottenere credenziali temporanee e le aggiorna secondo necessità. È inoltre possibile fornire un ID esterno quando richiesto dalla politica di fiducia del ruolo.
Google Cloud Storage (GCS)Tutti e quattro i formati sopra elencati.Specificare l'account di servizio di destinazione. Storage V3 assume l'identità di tale account di servizio, utilizza i suoi token di accesso OAuth a breve durata per accedere al bucket di origine e aggiorna i token prima che scadano.
Azure Blob Storageparquet, vortex e lance-table. iceberg-table non è supportato.Milvus richiede credenziali SAS a breve durata tramite il servizio gRPC privato milvus-tools. Storage V3 utilizza le credenziali SAS per accedere al contenitore di origine e le credenziali vengono rinnovate prima della loro scadenza.
Azure Data Lake Storage Gen2 (ADLS Gen2)Tutti e quattro i formati sopra elencati.Milvus richiede credenziali SAS a breve durata tramite il servizio gRPC privato milvus-tools. Storage V3 utilizza le credenziali SAS per accedere al contenitore di origine e le credenziali vengono rinnovate prima della scadenza.
Alibaba Cloud Object Storage Service (OSS)Tutti e quattro i formati sopra elencati.Specificare l'ARN del ruolo RAM di proprietà del cliente. Storage V3 assume il ruolo utilizzando l'identità del carico di lavoro del runtime o il ruolo RAM di ECS, quindi utilizza credenziali temporanee per accedere al bucket di origine.

Per le istruzioni sulla configurazione e l’utilizzo delle raccolte esterne, consultare Creare una raccolta esterna.

Funzionalità che richiedono Storage V3

FunzionalitàDescrizioneConfigurazione richiesta
Formato file VortexScrivere nuovi dati della raccolta gestita nel formato file Vortex.
TEXT campoArchivia testi di origine lunghi, come brani, documenti, ticket o log, senza impostare una lunghezza massima fissa nello schema della raccolta.common.storage.useLoonFFI=true
Campi vettoriali generati da funzioniAggiungere una funzione BM25 o MinHash a una collezione esistente in modo che Milvus generi un nuovo campo vettoriale da un campo " VARCHAR " esistente. Milvus inserisce i valori generati per le entità esistenti in modo asincrono tramite la compattazione in background.
Collezioni esterneEsegui query sui dati archiviati al di fuori di Milvus senza copiarli in una collezione gestita. Aggiorna la collezione esterna quando i dati di origine cambiano. Per esporre ulteriori campi di origine, consulta Modifica dello schema di una collezione esterna.common.storage.useLoonFFI=true

Prima di abilitare Storage V3

Una volta che Milvus ha scritto i dati in Storage V3, il downgrade a una versione di Milvus che non è in grado di leggere Storage V3 non è supportato. La disattivazione successiva di Storage V3 non converte immediatamente tutti i dati Storage V3 esistenti né ripristina la compatibilità con la versione precedente.

Prima di abilitare Storage V3, tenere in considerazione il seguente comportamento dei dati:

  • Poiché la compattazione in background ( dataCoord.compaction.storageVersion.enabled ) è abilitata per impostazione predefinita, i dati esistenti idonei possono passare gradualmente a Storage V3 tramite la compattazione in background.
  • La disattivazione di Storage V3 modifica la versione di archiviazione di destinazione per le future operazioni di scrittura e per l’output di compattazione idoneo. Non converte in modo sincrono tutti i dati Storage V3 esistenti né garantisce la sicurezza del downgrade di versione.

Abilitare Storage V3

Impostare " common.storage.useLoonFFI " su " true " nella configurazione di Milvus:

common:
  storage:
    useLoonFFI: true

Milvus considera questa impostazione aggiornabile. Applicare la modifica tramite il flusso di lavoro di aggiornamento della configurazione supportato dalla propria distribuzione. La sola modifica di un file di configurazione statico non garantisce che la distribuzione in esecuzione abbia ricevuto il nuovo valore.

Se si intende aggiungere una Funzione e il campo vettoriale da essa generato a una raccolta esistente, abilitare anche le due impostazioni di compattazione necessarie per il backfill dei dati esistenti:

dataCoord:
  compaction:
    bumpSchemaVersion:
      enabled: true
    storageVersion:
      enabled: true

L’output della Funzione per le entità esistenti viene generato in modo asincrono tramite la compattazione in background. Un aggiornamento dello schema andato a buon fine non indica che il backfill sia stato completato per ogni entità esistente.