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 trongdtype
, 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)