ایجاد مجموعه

در این بخش، نحوه ایجاد مجموعه اطلاعاتی را در 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)