Создание коллекции

В этой теме описано, как создать коллекцию в Milvus.

Коллекция состоит из одной или нескольких разделов. При создании новой коллекции Milvus автоматически создает раздел по умолчанию с именем _default.

В следующем примере создается коллекция с именем book с двумя шардами. Она включает в себя поле первичного ключа с именем book_id, скалярное поле word_count с типом INT64 и двумерное вещественное векторное поле book_intro. Фактические приложения могут использовать размерности вектора выше, чем в примере.

Определение схемы коллекции

Коллекция, которую нужно создать, должна включать первичное ключевое поле и векторное поле. Первичное ключевое поле поддерживает типы данных INT64 и VarChar.

Совет: определение схемы коллекции аналогично определению структуры таблицы в MYSQL.

Сначала подготовьте необходимые параметры, включая схемы полей, схемы коллекций и имена коллекций.

Прежде чем определить схему коллекции, создайте схему для каждого поля в коллекции. Для упрощения сложности вставки данных Milvus позволяет указать значение по умолчанию для каждого скалярного поля (за исключением поля первичного ключа). Это означает, что если поле остается пустым во время вставки данных, будет использовано значение по умолчанию, настроенное для этого поля во время создания схемы поля.

var (
    collectionName = "book"
    )
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Поиск тестовой книги",
  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
}
Тип Параметр Описание Опции
Сущность.Schema CollectionName Имя коллекции для создания N/А
Description Описание создаваемой коллекции N/А
AutoID Переключатель для включения или отключения автоматического выделения идентификатора (первичного ключа) true или false
Fields Схемы полей в создаваемой коллекции. Для получения дополнительной информации см. схему N/А
EnableDynamicField Включить ли динамическую схему. Для получения дополнительной информации о динамической схеме см. Руководство пользователя по динамической схеме и управлению коллекциями N/А
Сущность.Field Name Имя создаваемого поля N/А
PrimaryKey Является ли это поле первичным ключом. Требуется для полей первичного ключа N/А
AutoID Автоматическое увеличение значения поля. Требуется для полей первичного ключа N/А
Description Описание поля N/А
DataType Тип данных создаваемого поля Для полей первичного ключа: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Для скалярных полей: - 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) Для векторных полей: - entity.FieldTypeBinaryVector (Бинарный вектор) - entity.FieldTypeFloatVector (Вещественный вектор)
TypeParams Отображение строки для установки параметров конкретных типов данных N/А
IndexParams Отображение строки для установки параметров индекса коллекции N/А
IsDynamic Включает ли это поле динамическую схему N/А
IsPartitionKey Является ли это поле ключом раздела N/А

Создание коллекции на основе определенной структуры

Затем создайте коллекцию, используя указанную схему.

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("Ошибка создания коллекции: ", err.Error())
}
Параметр Описание Опции
ctx Контекст для управления процессом вызова API N/А
shardNum Количество шардов в создаваемой коллекции [1,16]

Ограничения коллекций

Настройки Ресурсов

Функция Максимальный предел
Длина имени коллекции 255 символов
Количество разделов в коллекции 4 096
Количество полей в коллекции 64
Количество фрагментов в коллекции 16

Параметр default_value

  • default_value применяется только к скалярным полям, не являющимся массивами и JSON.
  • default_value не применяется к первичным ключам.
  • Тип данных default_value должен быть таким же, как указанный в dtype, в противном случае могут возникнуть ошибки.
  • Если используется auto_id, нельзя установить для всех оставшихся полей значения по умолчанию. Другими словами, при выполнении операций вставки или обновления необходимо указать значение как минимум для одного поля, в противном случае могут возникнуть ошибки.

Проверка существования коллекции

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("Ошибка при проверке существования коллекции: ", err.Error())
}

Удаление коллекции

_ = milvusClient.DropCollection(ctx, collectionName)

Запрос всех коллекций

collections, err := milvusClient.ListCollections(ctx)