Tworzenie kolekcji

Ten temat opisuje, jak utworzyć kolekcję w Milvus.

Kolekcja składa się z jednej lub więcej partycji. Podczas tworzenia nowej kolekcji, Milvus automatycznie tworzy domyślną partycję o nazwie _default.

W poniższym przykładzie tworzona jest kolekcja o nazwie book z dwoma fragmentami. Zawiera ona pole klucza głównego o nazwie book_id, skalarnym polem word_count typu INT64 oraz dwuwymiarowe pole wektorowe o zmiennoprzecinkowych liczbach zmiennoprzecinkowych o nazwie book_intro. W rzeczywistych aplikacjach wymiary wektorów mogą być wyższe niż te przedstawione w przykładzie.

Definicja schematu kolekcji

Kolekcja, którą chcemy utworzyć, musi zawierać pole klucza głównego i pole wektorowe. Pole klucza głównego obsługuje typy danych INT64 i VarChar.

Wskazówka: Definicja schematu kolekcji jest podobna do definiowania struktury tabeli w MYSQL.

Na początku przygotuj niezbędne parametry, w tym schematy pól, schematy kolekcji i nazwy kolekcji.

Przed zdefiniowaniem schematu kolekcji, należy utworzyć schemat dla każdego pola w kolekcji. Aby uproszczyć złożoność wstawiania danych, Milvus pozwala określić domyślną wartość dla każdego pola skalarne (z wyjątkiem pola klucza głównego). Oznacza to, że jeśli pole pozostanie puste podczas wstawiania danych, zostanie użyta skonfigurowana domyślna wartość dla tego pola podczas tworzenia schematu pola.

var (
    collectionName = "book"
    )
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Wyszukiwanie testowych książek",
  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 Parametr Opis Opcje
entity.Schema CollectionName Nazwa tworzonej kolekcji N/A
Description Opis tworzonej kolekcji N/A
AutoID Przełącznik używany do włączenia lub wyłączenia automatycznej alokacji ID (klucza głównego) True lub False
Fields Schematy pól w tworzonej kolekcji. Aby uzyskać więcej informacji, zobacz schemat N/A
EnableDynamicField Czy włączyć dynamiczny schemat. Aby uzyskać więcej informacji na temat dynamicznego schematu, zobacz Przewodnik Użytkownika Dynamicznym Schematem i Zarządzaniem Kolekcjami N/A
entity.Field Name Nazwa tworzonego pola N/A
PrimaryKey Czy to pole jest kluczem głównym. Wymagane dla pól klucza głównego N/A
AutoID Czy wartość pola jest autoinkrementowana. Wymagane dla pól klucza głównego N/A
Description Opis pola N/A
DataType Typ danych tworzonego pola Dla pól klucza głównego: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Dla pól skalarnych: - 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) Dla pól wektorowych: - entity.FieldTypeBinaryVector (Wektor binarny) - entity.FieldTypeFloatVector (Wektor zmiennoprzecinkowy)
TypeParams Mapowanie do ciągu ustawiającego parametry dla konkretnych typów danych N/A
IndexParams Mapowanie do ciągu ustawiającego parametry indeksu kolekcji N/A
IsDynamic Czy to pole umożliwia dynamiczny schemat N/A
IsPartitionKey Czy to pole działa jako klucz partycji N/A

Utwórz kolekcję na podstawie zdefiniowanej struktury

Następnie utwórz kolekcję z użyciem określonego schematu.

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("Nie udało się utworzyć kolekcji: ", err.Error())
}
Parametr Opis Opcje
ctx Kontekst kontrolujący proces wywołania API N/A
shardNum Liczba fragmentów w tworzonej kolekcji [1,16]

Ograniczenia kolekcji

Konfiguracja zasobów

Funkcja Maksymalne ograniczenie
Długość nazwy kolekcji 255 znaków
Liczba partycji w kolekcji 4,096
Liczba pól w kolekcji 64
Liczba shardów w kolekcji 16

Parametr default_value

  • default_value dotyczy tylko pól skalarnych niebędących tablicami ani obiektami JSON.
  • default_value nie ma zastosowania do kluczy głównych.
  • Typ danych parametru default_value musi być taki sam jak określony w dtype, w przeciwnym razie mogą wystąpić błędy.
  • Jeśli używane jest auto_id, nie wolno ustawić wszystkich pozostałych pól na wartości domyślne. Innymi słowy, podczas wykonywania operacji wstawiania lub aktualizacji, należy określić wartość przynajmniej jednego pola, w przeciwnym razie mogą wystąpić błędy.

Sprawdź, czy kolekcja istnieje

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("Nie udało się sprawdzić, czy kolekcja istnieje: ", err.Error())
}

Usuń kolekcję

_ = milvusClient.DropCollection(ctx, collectionName)

Zapytaj o wszystkie kolekcje

collections, err := milvusClient.ListCollections(ctx)