การสร้างคอลเลกชัน
หัวข้อนี้อธิบายถึงวิธีการสร้างคอลเลกชันใน 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)