Speicher V3Compatible with Milvus 3.0.x

Übersicht

KI-Datensätze entwickeln sich oft weiter, nachdem eine Sammlung erstellt wurde. Wenn sich Modelle und Arbeitsabläufe ändern, müssen Teams möglicherweise Text hinzufügen, neue Vektorfelder für bestehende Entitäten generieren oder Daten verwenden, die außerhalb von Milvus gespeichert sind. Um diese Arbeitsabläufe zu unterstützen, ist ein Speichermodell erforderlich, das sich gemeinsam mit dem Datensatz weiterentwickeln kann.

Storage V3 bietet dieses Modell in Milvus 3.0. Es nutzt ein versioniertes Speicherlayout, um im Laufe der Zeit hinzugefügte oder überschriebene Daten zu integrieren, während Anwendungen weiterhin über dieselben Milvus-APIs auf Sammlungen zugreifen.

Storage V3 ist standardmäßig deaktiviert. Sobald „ common.storage.useLoonFFI “ wirksam wird, verwenden neue Schreibvorgänge und die Ergebnisse der Komprimierung Storage V3. Vorhandene Daten verbleiben in ihrem aktuellen Layout, bis die entsprechenden Daten durch die Hintergrundkomprimierung neu geschrieben werden. Milvus kann während dieser Übergangsphase beide Layouts lesen. Aktivieren Sie Storage V3, um die davon abhängigen Funktionen zu nutzen – nicht als allgemeine Leistungsoptimierung.

Datenformate in Storage V3

Storage V3 verwendet Manifeste, um Sammlungsdaten unabhängig vom zugrunde liegenden Datenformat zu beschreiben. Dadurch kann dieselbe Speicherschicht sowohl mit von Milvus verwalteten Daten als auch mit Daten arbeiten, die in einem externen System verbleiben.

Dateiformate für verwaltete Sammlungen

Bei verwalteten Sammlungen wählt „ dataNode.storage.format “ das Dateiformat für neue Storage V3-Daten aus. Die Einstellung unterstützt die folgenden Werte:

FormatBeschreibung
parquetDas standardmäßige, weit verbreitete spaltenorientierte Dateiformat mit umfassender Ökosystemkompatibilität und ausgereiften Tools. Parquet organisiert Daten in Zeilengruppen und unterstützt spaltenweise Kodierung und Komprimierung, sodass Milvus nur die erforderlichen Spalten lesen und große sequenzielle Scans effizient verarbeiten kann.
vortexEin optionales, spaltenorientiertes Dateiformat der nächsten Generation, das auf erweiterbaren, kombinierbaren Kodierungen und umfangreichen Statistiken basiert. In Milvus unterstützt Vortex Spaltenprojektion, Bereichs- und Direktzugriffs-Lesevorgänge. Diese Funktionen können bei geeigneten Workloads unnötige Datenlesevorgänge reduzieren.

Eine Änderung der „ dataNode.storage.format “-Einstellung wirkt sich auf neue Schreibvorgänge in „Storage V3“ aus. Bestehende Dateien behalten ihr aktuelles Format bei, bis die Komprimierung die entsprechenden Segmente neu schreibt. Bei den meisten Bereitstellungen sollte das Standardformat „ parquet “ beibehalten werden, es sei denn, repräsentative Benchmarks zeigen, dass „ vortex “ besser zu den jeweiligen Daten und Zugriffsmustern passt.

Externe Sammlungen und unterstützte Quellformate

Externe Sammlungen ermöglichen es Milvus, Daten zu nutzen, die in externen Dateien oder Tabellen gespeichert sind. Storage V3 unterstützt die folgenden externen Quellformate:

FormatKategorieErwartete QuelleUnterstützung durch Storage V3
parquetDateiformatEin Verzeichnis oder ein Objektspeicher-Präfix, das Parquet-Dateien enthält.Erkennt die Dateien, liest deren Metadaten und Zeilengruppen aus und erfasst sie in einem Storage V3-Manifest.
vortexDateiformatEin Verzeichnis oder ein Objekt-Speicher-Präfix, das Vortex-Dateien enthält.Erkennt die Dateien und nutzt das Vortex-Layout sowie die Statistiken für Projektionen, Bereichs- und Direktzugriffs-Lesevorgänge.
lance-tableTabellenformatEin Lance-Datensatzverzeichnis.Liest die Metadaten des Datensatzes und ordnet dessen Fragmente einem Storage-V3-Manifest zu.
iceberg-tableTabellenformatEine Iceberg-Metadaten-JSON-Datei und eine Snapshot-ID.Löst den angegebenen Snapshot auf, ordnet dessen Datendateien zu und bewahrt Metadaten zu Positionslöschungen auf. Gleichheitslöschungen werden nicht unterstützt und müssen vor der Aktualisierung der externen Sammlung in Positionslöschungen umgewandelt werden.

Externe Quellen sind schreibgeschützt. Storage V3 erstellt und aktualisiert sein eigenes Manifest, ohne die Quelldaten zu ändern oder zu kopieren. Milvus kann dann Indizes erstellen und Suchvorgänge sowie Abfragen über die Daten einer externen Sammlung ausführen.

Cloud-Speicher und kontoübergreifende Authentifizierung

Die folgende Tabelle beschreibt lediglich, wie eine externe Sammlung auf Quelldaten zugreift, die in einem anderen Cloud-Konto gespeichert sind. Sie beschreibt nicht den Objektspeicher, der für von Milvus verwaltete Daten verwendet wird.

Cloud-SpeicherUnterstützte externe FormateKontoübergreifende Authentifizierung für externe Sammlungen
Amazon S3Alle vier oben aufgeführten Formate.Geben Sie die ARN der kundeneigenen IAM-Rolle an. Storage V3 nutzt AWS STS- AssumeRole, um temporäre Anmeldeinformationen abzurufen und diese bei Bedarf zu aktualisieren. Sie können auch eine externe ID angeben, wenn dies gemäß der Vertrauensrichtlinie der Rolle erforderlich ist.
Google Cloud Storage (GCS)Alle vier oben aufgeführten Formate.Geben Sie das Ziel-Dienstkonto an. Storage V3 schlüpft in die Rolle dieses Dienstkontos, nutzt dessen kurzlebige OAuth-Zugriffstoken für den Zugriff auf den Quell-Bucket und aktualisiert die Token, bevor sie ablaufen.
Azure Blob Storageparquet, vortex und lance-table. iceberg-table wird nicht unterstützt.Milvus fordert kurzlebige SAS-Anmeldeinformationen über den privaten gRPC-Dienst „ milvus-tools “ an. Storage V3 nutzt die SAS-Anmeldeinformationen für den Zugriff auf den Quellcontainer, und die Anmeldeinformationen werden vor ihrem Ablauf erneuert.
Azure Data Lake Storage Gen2 (ADLS Gen2)Alle vier oben aufgeführten Formate.Milvus fordert kurzlebige SAS-Anmeldeinformationen über den privaten gRPC-Dienst „ milvus-tools “ an. Storage V3 verwendet die SAS-Anmeldeinformationen für den Zugriff auf den Quellcontainer, und die Anmeldeinformationen werden vor ihrem Ablauf erneuert.
Alibaba Cloud Object Storage Service (OSS)Alle vier oben aufgeführten Formate.Geben Sie die ARN der kundeneigenen RAM-Rolle an. Storage V3 übernimmt die Rolle unter Verwendung der Workload-Identität der Laufzeitumgebung oder der ECS-RAM-Rolle und nutzt anschließend temporäre Anmeldeinformationen für den Zugriff auf den Quell-Bucket.

Anweisungen zur Konfiguration und Verwendung der externen Erfassung finden Sie unter „Externe Erfassung erstellen“.

Funktionen, die Storage V3 erfordern

FunktionBeschreibungErforderliche Konfiguration
Vortex-DateiformatSchreiben Sie neue Daten der verwalteten Sammlung im Vortex-Dateiformat.
TEXT FeldSpeichern Sie lange Quelltexte wie Passagen, Dokumente, Tickets oder Protokolle, ohne im Sammlungsschema eine feste maximale Länge festzulegen.common.storage.useLoonFFI=true
Funktionsgenerierte VektorfelderFügen Sie einer bestehenden Sammlung eine BM25- oder MinHash-Funktion hinzu, damit Milvus aus einem bestehenden „ VARCHAR “-Feld ein neues Vektorfeld generiert. Milvus füllt die generierten Werte für bestehende Entitäten asynchron durch eine Kompaktierung im Hintergrund nach.
Externe SammlungenAbfragen von Daten, die außerhalb von Milvus gespeichert sind, ohne diese in eine verwaltete Sammlung zu kopieren. Aktualisieren Sie die externe Sammlung, wenn sich die Quelldaten ändern. Informationen zum Hinzufügen weiterer Quellfelder finden Sie unter „Schema einer externen Sammlung ändern“.common.storage.useLoonFFI=true

Bevor Sie „Storage V3“ aktivieren

Sobald Milvus Daten in „Storage V3“ schreibt, wird ein Downgrade auf eine Milvus-Version, die „Storage V3“ nicht lesen kann, nicht unterstützt. Das spätere Deaktivieren von „Storage V3“ führt nicht sofort zur Konvertierung aller vorhandenen „Storage V3“-Daten oder zur Wiederherstellung der Kompatibilität mit der älteren Version.

Beachten Sie vor der Aktivierung von Storage V3 das folgende Datenverhalten:

  • Da „ dataCoord.compaction.storageVersion.enabled “ standardmäßig aktiviert ist, können geeignete vorhandene Daten schrittweise durch eine Kompaktierung im Hintergrund auf „Storage V3“ umgestellt werden.
  • Das Deaktivieren von „Storage V3“ ändert die Zielspeicherversion für zukünftige Schreibvorgänge und die Ergebnisse der Komprimierung geeigneter Daten. Es führt nicht zu einer synchronen Konvertierung aller vorhandenen „Storage V3“-Daten und macht ein Versions-Downgrade nicht sicher.

Storage V3 aktivieren

Setzen Sie „ common.storage.useLoonFFI “ in Ihrer Milvus-Konfiguration auf „ true “:

common:
  storage:
    useLoonFFI: true

Milvus behandelt diese Einstellung als aktualisierbar. Übernehmen Sie die Änderung über den von Ihrer Bereitstellung unterstützten Workflow zur Konfigurationsaktualisierung. Das Bearbeiten einer statischen Konfigurationsdatei allein garantiert nicht, dass die laufende Bereitstellung den neuen Wert erhalten hat.

Wenn Sie planen, eine Funktion und ihr generiertes Vektorfeld zu einer bestehenden Sammlung hinzuzufügen, aktivieren Sie außerdem die beiden für das Nachfüllen bestehender Daten erforderlichen Komprimierungseinstellungen:

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

Die Funktionsausgabe für vorhandene Entitäten wird asynchron durch eine Kompaktierung im Hintergrund generiert. Eine erfolgreiche Schemaaktualisierung bedeutet nicht, dass das Nachfüllen für jede vorhandene Entität abgeschlossen ist.