Erstellen einer Kollektion

Dieses Thema beschreibt, wie man eine Kollektion in Milvus erstellt.

Eine Kollektion besteht aus einer oder mehreren Partitionen. Beim Erstellen einer neuen Kollektion erstellt Milvus automatisch eine Standardpartition mit dem Namen _default.

Im folgenden Beispiel wird eine Kollektion namens book mit zwei Shards erstellt. Die Kollektion umfasst ein Primärschlüsselfeld namens book_id, ein skalares Feld vom Typ INT64 namens word_count und ein zweidimensionales Gleitkomma-Vektorfeld namens book_intro. In tatsächlichen Anwendungen können die Vektordimensionen höher sein als in diesem Beispiel.

Definition des Kollektionsschemas

Die zu erstellende Kollektion muss ein Primärschlüsselfeld und ein Vektorfeld enthalten. Das Primärschlüsselfeld unterstützt die Datentypen INT64 und VarChar.

Tipp: Die Schemadefinition der Kollektion ähnelt der Definition einer Tabellenstruktur in MYSQL.

Zuerst werden die erforderlichen Parameter vorbereitet, einschließlich Feldschemata, Kollektionsschemata und Kollektionsnamen.

Vor der Definition des Kollektionsschemas muss für jedes Feld in der Kollektion ein Schema erstellt werden. Zur Vereinfachung der Dateninsertion ermöglicht Milvus die Angabe eines Standardwerts für jedes skalare Feld (außer für das Primärschlüsselfeld). Dies bedeutet, dass bei der Dateninsertion ein Feld leer gelassen wird, der beim Erstellen des Feldschemas konfigurierte Standardwert für dieses Feld verwendet wird.

var (
    collectionName = "book"
)
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Testbuchsuche",
  Fields: []*entity.Field{
    {
      Name:       "book_id",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: true,
      AutoID:     false,
    },
    {
      Name:       "word_count",
      DataType:   entity.FieldTypeInt64,
      PrimaryKey: false,
      AutoID:     false,
    },
    {
      Name:     "book_intro",
      DataType: entity.FieldTypeFloatVector,
      TypeParams: map[string]string{
          "dim": "2",
      },
    },
  },
  EnableDynamicField: true
}
Typ Parameter Beschreibung Optionen
entity.Schema CollectionName Name der zu erstellenden Kollektion Nicht zutreffend
Beschreibung Beschreibung der zu erstellenden Kollektion Nicht zutreffend
AutoID Schalter zur Aktivierung oder Deaktivierung der automatischen ID-Zuweisung (Primärschlüssel) True oder False
Fields Schemata der Felder in der zu erstellenden Kollektion. Weitere Informationen finden Sie unter Schema Nicht zutreffend
EnableDynamicField Ob dynamisches Schema aktiviert werden soll. Weitere Informationen zum dynamischen Schema finden Sie im Benutzerhandbuch für dynamisches Schema und Kollektionsverwaltung Nicht zutreffend
entity.Field Name Name des zu erstellenden Feldes Nicht zutreffend
PrimaryKey Ob dieses Feld ein Primärschlüssel ist. Erforderlich für Primärschlüsselfelder Nicht zutreffend
AutoID Ob der Feldwert automatisch inkrementiert wird. Erforderlich für Primärschlüsselfelder Nicht zutreffend
Beschreibung Beschreibung des Feldes Nicht zutreffend
DataType Datentyp des zu erstellenden Feldes Für Primärschlüsselfelder: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Für skalare Felder: - entity.FieldTypeBool(Boolean) - entity.FieldTypeInt8(numpy.int8) - entity.FieldTypeInt16(numpy.int16) - entity.FieldTypeInt32(numpy.int32) - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeFloat(numpy.float32) - entity.FieldTypeDouble(numpy.double) - entity.FieldTypeVarChar(VARCHAR) Für Vektorfelder: - entity.FieldTypeBinaryVector (Binärer Vektor) - entity.FieldTypeFloatVector (Gleitkomma-Vektor)
TypeParams Zuordnung zum String, der Parameter für spezifische Datentypen festlegt Nicht zutreffend
IndexParams Zuordnung zum String, der Indexparameter für Kollektionen festlegt Nicht zutreffend
IsDynamic Ob dieses Feld ein dynamisches Schema ermöglicht Nicht zutreffend
IsPartitionKey Ob dieses Feld als Partitionsschlüssel fungiert Nicht zutreffend

Erstellen einer Kollektion basierend auf der definierten Struktur

Anschließend erstellen Sie eine Kollektion unter Verwendung des angegebenen Schemas.

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("Fehler beim Erstellen der Kollektion: ", err.Error())
}
Parameter Beschreibung Optionen
ctx Kontext zur Steuerung des API-Aufrufprozesses Nicht zutreffend
shardNum Anzahl der Shards in der zu erstellenden Kollektion [1,16]

Einschränkungen bei der Sammlung

Ressourcenkonfiguration

Merkmal Maximales Limit
Länge des Sammlungsnamens 255 Zeichen
Anzahl der Partitionen in der Sammlung 4.096
Anzahl der Felder in der Sammlung 64
Anzahl der Shards in der Sammlung 16

Parameter default_value

  • default_value gilt nur für nicht-array- und nicht-JSON-Skalare Felder.
  • default_value gilt nicht für Primärschlüssel.
  • Der Datentyp von default_value muss mit dem im dtype angegebenen Datentyp übereinstimmen, sonst können Fehler auftreten.
  • Wenn auto_id verwendet wird, ist es nicht erlaubt, alle verbleibenden Felder auf Standardwerte zu setzen. Mit anderen Worten, bei INSERT- oder UPDATE-Operationen muss ein Wert für mindestens ein Feld angegeben werden, sonst können Fehler auftreten.

Überprüfen, ob eine Sammlung existiert

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("Fehler beim Überprüfen, ob die Sammlung existiert: ", err.Error())
}

Eine Sammlung löschen

_ = milvusClient.DropCollection(ctx, collectionName)

Alle Sammlungen abfragen

collections, err := milvusClient.ListCollections(ctx)