ایجاد مجموعه
در این بخش، نحوه ایجاد مجموعه اطلاعاتی را در Milvus شرح داده شده است.
یک مجموعه از یک یا چند بخش تشکیل شده است. هنگامی که یک مجموعه جدید ایجاد میکنید، Milvus به طور خودکار یک بخش پیشفرض به نام _default
ایجاد میکند.
در مثال زیر یک مجموعه به نام book
با دو شارد ایجاد میشود. این مجموعه شامل یک فیلد کلید اصلی به نام book_id
، یک فیلد اسکالر INT64
به نام word_count
و یک فیلد برداری دو بعدی اعشاری به نام book_intro
میباشد. برنامههای واقعی ممکن است از ابعاد برداری بالاتر از آنچه در مثال استفاده شده است، استفاده کنند.
تعریف طرح مجموعه
مجموعهای که قرار است ایجاد شود باید شامل یک فیلد کلید اصلی و یک فیلد برداری باشد. فیلد کلید اصلی از انواع دادهای INT64
و VarChar
پشتیبانی میکند.
نکته: تعریف طرح مجموعه مشابه تعریف ساختار یک جدول در MYSQL میباشد.
ابتدا پارامترهای لازم را شامل طرح فیلدها، طرح مجموعهها و نام مجموعه آماده کنید.
پیش از تعریف طرح مجموعه، برای هر فیلد در مجموعه، یک طرح تعریف کنید. برای سادهتر کردن پیچیدگی درج دادهها، Milvus اجازه میدهد تا برای هر فیلد اسکالر (به جز فیلد کلید اصلی)، مقدار پیشفرض مشخص شده شود. این بدان معنی است که اگر یک فیلد هنگام درج داده خالی باقی بماند، مقدار پیشفرض تنظیم شده برای این فیلد در هنگام ایجاد طرح فیلد، استفاده خواهد شد.
var (
collectionName = "book"
)
schema := &entity.Schema{
CollectionName: collectionName,
Description: "Test book search",
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
}
نوع | پارامتر | توضیحات | گزینهها |
---|---|---|---|
entity.Schema |
CollectionName |
نام مجموعهای که قرار است ایجاد شود | N/A |
Description |
توضیحات مجموعهای که قرار است ایجاد شود | N/A | |
AutoID |
کلیدی که برای فعال یا غیرفَعال کردن اختصاص خودکار شناسه (کلید اصلی) استفاده میشود | True یا False |
|
Fields |
طرحهای فیلدها در مجموعهای که قرار است ایجاد شود. برای اطلاعات بیشتر، به طرح مراجعه کنید | N/A | |
EnableDynamicField |
آیا فعالیت طرح پویا را فعال میکند یا نه. برای اطلاعات بیشتر درباره طرح پویا به راهنمای کاربری مرتبط با طرح پویا و مدیریت مجموعه مراجعه کنید | N/A | |
entity.Field |
Name |
نام فیلدی که قرار است ایجاد شود | N/A |
PrimaryKey |
اینکه این فیلد کلید اصلی است یا خیر. برای فیلدهای کلید اصلی الزامی است | N/A | |
AutoID |
اینکه مقدار فیلد به صورت خودکار افزایش مییابد یا خیر. برای فیلدهای کلید اصلی الزامی است | N/A | |
Description |
توضیحات فیلد | N/A | |
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/A | |
IndexParams |
نگاشت به رشتهای که پارامترهای فهرست مجموعه را تنظیم میکند | N/A | |
IsDynamic |
اینکه این فیلد امکان طرح پویا را فعال میکند یا خیر | N/A | |
IsPartitionKey |
اینکه این فیلد به عنوان کلید تقسیم کننده عمل میکند یا خیر | N/A |
ایجاد مجموعه بر اساس ساختار تعریف شده
سپس، با استفاده از طرح مشخصشده، یک مجموعه ایجاد کنید.
err = milvusClient.CreateCollection(
context.Background(), // ctx
schema,
2, // shardNum
)
if err != nil {
log.Fatal("Failed to create collection: ", err.Error())
}
پارامتر | توضیحات | گزینهها |
---|---|---|
ctx |
زمینه برای کنترل فرآیند فراخوانی API | N/A |
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)