Создание коллекции
В этой теме описано, как создать коллекцию в 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)