Tạo một Bộ sưu tập

Chủ đề này mô tả cách tạo một bộ sưu tập trong Milvus.

Một bộ sưu tập bao gồm một hoặc nhiều phân vùng. Khi tạo một bộ sưu tập mới, Milvus tự động tạo một phân vùng mặc định có tên là _default.

Ví dụ sau tạo một bộ sưu tập có tên book với hai phân vùng. Nó bao gồm một trường khóa chính có tên là book_id, một trường số cụ thể kiểu INT64 có tên là word_count, và một trường vector số thực hai chiều có tên là book_intro. Ứng dụng thực tế có thể sử dụng số chiều vector cao hơn so với ví dụ.

Định nghĩa Cấu trúc Bộ sưu tập

Bộ sưu tập cần tạo phải bao gồm một trường khóa chính và một trường vector. Trường khóa chính hỗ trợ các kiểu dữ liệu INT64 và VarChar.

Gợi ý: Định nghĩa cấu trúc của bộ sưu tập tương tự như việc định nghĩa cấu trúc bảng trong MYSQL.

Đầu tiên, chuẩn bị các tham số cần thiết, bao gồm cấu trúc trường, cấu trúc bộ sưu tập và tên của bộ sưu tập.

Trước khi định nghĩa cấu trúc của bộ sưu tập, hãy tạo một cấu trúc cho mỗi trường trong bộ sưu tập. Để đơn giản hóa sự phức tạp của việc chèn dữ liệu, Milvus cho phép xác định giá trị mặc định cho mỗi trường số cụ thể (trừ trường khóa chính). Điều này có nghĩa là nếu một trường được bỏ trống trong quá trình chèn dữ liệu, giá trị mặc định được cấu hình cho trường này trong quá trình tạo cấu trúc trường sẽ được sử dụng.

var (
    collectionName = "book"
    )
schema := &entity.Schema{
  CollectionName: collectionName,
  Description:    "Tìm kiếm sách thử nghiệm",
  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
}

Loại Tham số Mô tả Tùy chọn
entity.Schema CollectionName Tên của bộ sưu tập cần tạo Không áp dụng
Description Mô tả của bộ sưu tập cần tạo Không áp dụng
AutoID Công tắc để bật hoặc tắt việc phân bổ ID tự động (khóa chính) True hoặc False
Fields Cấu trúc của các trường trong bộ sưu tập cần tạo. Để biết thêm thông tin, xem cấu trúc Không áp dụng
EnableDynamicField Có bật tính năng trường động hay không. Để biết thêm thông tin về trường động, xem Hướng dẫn Người dùng Quản lý Cấu trúc và Bộ sưu tập Không áp dụng
entity.Field Name Tên của trường cần tạo Không áp dụng
PrimaryKey Trường này có phải là khóa chính hay không. Yêu cầu cho các trường khóa chính Không áp dụng
AutoID Giá trị trường có được tự động tăng hay không. Yêu cầu cho các trường khóa chính Không áp dụng
Description Mô tả của trường Không áp dụng
DataType Kiểu dữ liệu của trường cần tạo Đối với trường khóa chính: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Đối với trường số cụ thể: - 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) Đối với trường vector: - entity.FieldTypeBinaryVector (Vector nhị phân) - entity.FieldTypeFloatVector (Vector số thực)
TypeParams Ánh xạ sang chuỗi thiết lập tham số cho các kiểu dữ liệu cụ thể Không áp dụng
IndexParams Ánh xạ sang chuỗi thiết lập tham số chỉ mục bộ sưu tập Không áp dụng
IsDynamic Trường này có kích hoạt cấu trúc động hay không Không áp dụng
IsPartitionKey Trường này có hoạt động như một khóa phân vùng hay không Không áp dụng

Tạo một bộ sưu tập dựa trên cấu trúc đã định nghĩa

Tiếp theo, tạo một bộ sưu tập bằng cách sử dụng cấu trúc đã xác định.

err = milvusClient.CreateCollection(
    context.Background(), // ctx
    schema,
    2, // shardNum
)
if err != nil {
    log.Fatal("Không thể tạo bộ sưu tập: ", err.Error())
}
Tham số Mô tả Tùy chọn
ctx Ngữ cảnh để điều khiển quá trình gọi API Không áp dụng
shardNum Số phân vùng trong bộ sưu tập cần tạo [1,16]

Hạn chế Bộ sưu tập

Cấu hình Tài nguyên

Tính năng Giới hạn Tối đa
Độ dài tên bộ sưu tập 255 ký tự
Số phân vùng trong bộ sưu tập 4,096
Số trường trong bộ sưu tập 64
Số shard trong bộ sưu tập 16

Tham số default_value

  • default_value chỉ áp dụng cho các trường không phải mảng và không phải số liệu JSON.
  • default_value không áp dụng cho khóa chính.
  • Kiểu dữ liệu của default_value phải giống với kiểu dữ liệu được chỉ định trong dtype, nếu không có thể xảy ra lỗi.
  • Nếu sử dụng auto_id, không được phép đặt tất cả các trường còn lại để sử dụng giá trị mặc định. Nói cách khác, khi thực hiện các hoạt động chèn hoặc cập nhật, bạn cần phải chỉ định một giá trị cho ít nhất một trường, nếu không có thể xảy ra lỗi.

Kiểm tra nếu một bộ sưu tập tồn tại

collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
    log.Fatal("Failed to check if the collection exists: ", err.Error())
}

Xóa một bộ sưu tập

_ = milvusClient.DropCollection(ctx, collectionName)

Truy vấn tất cả các bộ sưu tập

collections, err := milvusClient.ListCollections(ctx)