Schema einer externen Sammlung ändernCompatible with Milvus 3.0.x

Externe Datenquellen ändern sich oft, nachdem Sie eine externe Sammlung erstellt haben. Beispielsweise kann eine Lakehouse-Tabelle, in der bereits Embeddings gespeichert sind, später ein neues Skalarfeld enthalten, wie z. B. eine Punktzahl, eine Kategorie oder einen Zeitstempel, die Sie in Abfrageergebnissen zurückgeben oder in Filtern verwenden möchten.

Anstatt die externe Sammlung neu zu erstellen oder die Quelldaten in Milvus zu kopieren, fügen Sie ein Milvus-Feld hinzu, das dem vorhandenen Feld in der externen Datenquelle zugeordnet ist. Aktualisieren Sie nach dem Hinzufügen des Feldes die externe Sammlung, damit das neue Feld in Abfragen und Suchvorgängen verwendet werden kann.

Einschränkungen

  • Externe Sammlungen unterstützen derzeit das Hinzufügen von Feldern nach ihrer Erstellung. Andere Schemaänderungen, wie das Löschen von Feldern, das Umbenennen von Feldern, das Ändern von Felddatentypen, das Ändern von Vektordimensionen oder das Neuzuordnen von „ external_field “, werden nicht unterstützt.

  • Sie können nur ein Feld hinzufügen, das bereits in der externen Datenquelle vorhanden ist. Bei diesem Vorgang wird ein vorhandenes externes Feld einem Milvus-Feld zugeordnet. Es wird weder ein neues Feld in der externen Datenquelle erstellt, noch werden Quelldaten nachträglich eingefügt.

  • Das Hinzufügen von „ SPARSE_FLOAT_VECTOR “-Feldern zu einer bestehenden externen Sammlung wird nicht unterstützt.

  • Das Hinzufügen von „StructArray“-Feldern zu einer bestehenden externen Sammlung wird nicht unterstützt. Wenn Ihre externe Sammlung ein „StructArray“-Feld benötigt, definieren Sie dieses beim Erstellen der Sammlung im Sammlungsschema.

Feld hinzufügen

Bevor Sie ein Feld zu einer externen Sammlung hinzufügen, stellen Sie sicher, dass das Feld bereits in der externen Datenquelle vorhanden ist. Rufen Sie anschließend „ add_collection_field() “ auf, um dieses Feld in Milvus verfügbar zu machen, indem Sie „ external_field “ auf den Feldnamen in der externen Datenquelle setzen. Setzen Sie „ data_type “ auf den Milvus-Datentyp, der dem Feld in der externen Datenquelle entspricht. Wenn das zugeordnete Feld beispielsweise Werte mit doppelter Genauigkeit speichert, verwenden Sie „ DataType.DOUBLE “.

Im Gegensatz zu verwalteten Sammlungen werden die Werte für das hinzugefügte Feld nach dem Aktualisieren der externen Sammlung aus der externen Datenquelle gelesen.

Ein Skalarfeld hinzufügen

Verwenden Sie „ add_collection_field() “, um ein Skalarfeld hinzuzufügen, wenn Sie das Feld in Abfrageergebnissen zurückgeben oder in Filtern verwenden möchten. Im folgenden Beispiel wird ein Feld „ score “ hinzugefügt, das dem Feld „ score “ in der externen Datenquelle zugeordnet ist.

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
)

client.add_collection_field(
    collection_name="product_embeddings",
    field_name="score",
    data_type=DataType.DOUBLE,
    nullable=True,
    external_field="score",
)

In diesem Beispiel lautet „ score “ der Milvus-Feldname, und „ external_field="score" “ ordnet ihm das Feld „ score “ in der externen Datenquelle zu. Legen Sie „ nullable=True “ fest, da das Feld hinzugefügt wird, nachdem die Sammlung bereits erstellt wurde.

Ein Vektorfeld hinzufügen

Sie können auch ein Vektorfeld hinzufügen, wenn die externe Datenquelle bereits die Vektorwerte enthält. Legen Sie den Vektor „ data_type “ und „ dim “ so fest, dass sie mit dem Vektorfeld in der externen Datenquelle übereinstimmen.

Im folgenden Beispiel wird ein dichtes Vektorfeld mit dem Namen „ image_embedding_v2 “ hinzugefügt.

from pymilvus import DataType, MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
)

client.add_collection_field(
    collection_name="product_embeddings",
    field_name="image_embedding_v2",
    data_type=DataType.FLOAT_VECTOR,
    dim=768,
    nullable=True,
    external_field="image_embedding_v2",
)

Wenn Sie eine Vektorsuche für das hinzugefügte Vektorfeld durchführen möchten, erstellen Sie vor dem Aktualisieren der externen Sammlung einen Index für das Feld.

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="image_embedding_v2",
    index_type="AUTOINDEX",
    metric_type="COSINE",
)

client.create_index(
    collection_name="product_embeddings",
    index_params=index_params,
)

Aktualisieren Sie die externe Sammlung

Aktualisieren Sie nach einer Änderung des Schemas einer externen Sammlung die externe Sammlung, damit Milvus die Metadaten der externen Sammlung aktualisiert und die Schemaänderung in Abfrage-, Such- und Filterergebnissen wirksam wird.

client.refresh_external_collection(
    collection_name="product_embeddings"
)

Übersetzt vonDeepL

Verwaltetes Milvus kostenlos testen

Zilliz Cloud ist unkompliziert, basiert auf Milvus und ist 10-mal schneller.

Loslegen
Feedback

War diese Seite hilfreich?