การสร้างคอลเลกชัน

หัวข้อนี้อธิบายถึงวิธีการสร้างคอลเลกชันใน Milvus

คอลเลกชันประกอบด้วยพาร์ทิชันหนึ่งหรือมากกว่า การสร้างคอลเลกชันใหม่ Milvus จะสร้างพาร์ทิชันเริ่มต้นที่ชื่อ _default โดยอัตโนมัติ

ตัวอย่างต่อไปนี้สร้างคอลเลกชันชื่อ book ประกอบด้วยชาร์ด 2 ชุด ตั้งแต่ที่มีฟิลด์หลักชื่อ book_id ซึ่งเป็น INT64 ฟิลด์สแกล่าชื่อ word_count และฟิลด์เวกเตอร์ทรงสองชือ book_intro ที่พื้นฐาน แอปพลิเคชันจริงสามารถใช้ข้อมูล vector ที่มีมิติสูงกว่าตัวอย่าง

กำหนดโครงสร้างของคอลเลกชัน

คอลเลกชันที่จะสร้างต้องรวมฟิลด์หลักและฟิลด์เวกเตอร์ ฟิลด์หลักรองรับ 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 สวิทธ์ที่ใช้เปิดหรือปิดระบบการจัดสร้าง ID อัตโนมัติ (หลัก) 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 (Binary vector) - entity.FieldTypeFloatVector (Float vector)
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 ไม่ใช้กับ primary key
  • ประเภทข้อมูลของ 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)