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:
| Formato | Descrizione |
|---|---|
parquet | Il 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. |
vortex | Un 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:
| Formato | Categoria | Fonte prevista | Supporto di Storage V3 |
|---|---|---|---|
parquet | Formato file | Una 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. |
vortex | Formato file | Una 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-table | Formato tabella | Una directory di dataset Lance. | Legge i metadati del set di dati e mappa i relativi frammenti in un manifesto Storage V3. |
iceberg-table | Formato tabella | Un 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 cloud | Formati esterni supportati | Autenticazione tra account per le collezioni esterne |
|---|---|---|
| Amazon S3 | Tutti 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 Storage | parquet, 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à | Descrizione | Configurazione richiesta |
|---|---|---|
| Formato file Vortex | Scrivere nuovi dati della raccolta gestita nel formato file Vortex. |
|
TEXT campo | Archivia 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 funzioni | Aggiungere 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 esterne | Esegui 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.
Documentazione correlata
- Campo di testo
- Modifica dello schema della raccolta
- Creazione di una raccolta esterna
- Panoramica delle opzioni di distribuzione di Milvus
- Aggiornamento di Milvus Standalone con Helm Chart
- Aggiornamento del cluster Milvus con Helm Chart
- Configurazioni relative a common
- Configurazioni relative a dataCoord
- Perché abbiamo creato Loon: un motore di archiviazione per dati di IA in continua evoluzione — Approfondimento tecnico sulle motivazioni alla base della progettazione di Storage V3.