انٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹٹ
یہ موضوع بیان کرتا ہے کہ کس طرح کلائنٹ سائیڈ سے Milvus میں ڈیٹا داخل کیا جاتا ہے۔
آپ MilvusDM بھی استعمال کرسکتے ہیں تاکہ ڈیٹا کو Milvus میں مائیگریٹ کیا جا سکے۔ MilvusDM ایک اوپن سورس ٹول ہے جو Milvus کے ساتھ ڈیٹا کا درآمد اور نکال کرنے کے لئے خصوصی طور پر ڈیزائن کیا گیا ہے۔
Milvus 2.1 سکالر فیلڈ کے لئے VARCHAR
ڈیٹا ٹائپ کو سپورٹ کرتا ہے۔ جب کسی VARCHAR
ٹائپ کے سکالر فیلڈ کے لئے انڈیکس بنایا جاتا ہے تو ڈیفالٹ انڈیکس ٹائپ ایک ترائی ہوتا ہے۔
نیچے دیے گئے مثال میں 2,000 رو اتفاقی تخلیق شدہ ڈیٹا کی صورت میں نمونہ ڈیٹا شامل ہوتی ہے (Milvus CLI مثال میں پہلے سے تیار ریموٹ CSV فائل کا استعمال کرتا ہے جو مشابہ ڈیٹا موجود ہوتی ہے)۔ واقعی اطلاقات مثال کی نسبت سے زیادہ ڈائمنشن کے ویکٹرز استعمال کر سکتی ہیں۔ آپ خود اس مثال کو بدلنے کے لئے اپنی موجودہ ڈیٹا تیار کر سکتے ہیں۔
ڈیٹا کی تیاری کریں
پہلے، ڈالنے والے ڈیٹا کی تیاری کریں۔ ڈالنے والے ڈیٹا کی قسم کا ڈیٹا کا نمونہ، وصولی کی اسکیما سے مشابہ ہونا ضروری ہے، ورنہ Milvus استثناء پھینکے گا۔
Milvus سکالر فیلڈز کے لئے ڈیفالٹ قیمتوں کا سپورٹ کرتا ہے، مختصر کن فیلڈس، پرائمری کی فیلڈز کو چھوڑ کر، یعنی کہ ڈیٹا ڈالنے یا اپ ڈیٹ کے دوران، مختصر کن فیلڈز خالی چھوڑ دیے جا سکتے ہیں۔ مزید معلومات کے لئے، کمیٹی سکایما کو دیکھیں۔
ڈائنامک اسکیما کو فعال کرنے کے بعد، آپ ڈیٹا میں ڈائنامک فیلڈز شامل کر سکتے ہیں۔ مزید معلومات کے لئے، ڈائنامک اسکیما دیکھیں۔
bookIDs := make([]int64, 0, 2000)
wordCounts := make([]int64, 0, 2000)
bookIntros := make([][]float32, 0, 2000)
for i := 0; i < 2000; i++ {
bookIDs = append(bookIDs, int64(i))
wordCounts = append(wordCounts, int64(i+10000))
v := make([]float32, 0, 2)
for j := 0; j < 2; j++ {
v = append(v, rand.Float32())
}
bookIntros = append(bookIntros, v)
}
idColumn := entity.NewColumnInt64("book_id", bookIDs)
wordColumn := entity.NewColumnInt64("word_count", wordCounts)
introColumn := entity.NewColumnFloatVector("book_intro", 2, bookIntros)
Milvus میں ڈیٹا ڈالیں
ڈیٹا کو کلیکشن میں ڈالیں۔
partition_name
کو مخصوص کرکے، آپ کو چننا ہے کہ ڈیٹا کو کس پارٹیشن میں ڈالنا ہے۔
_, err = milvusClient.Insert(
context.Background(), // ctx
"book", // CollectionName
"", // partitionName
idColumn, // columnarData
wordColumn, // columnarData
introColumn, // columnarData
)
if err != nil {
log.Fatal("failed to insert data:", err.Error())
}
پیرامیٹر | تفصیل |
---|---|
ctx |
API کال کرنے کے لیے استعمال ہونے والا سرکہ۔ |
CollectionName |
ڈیٹا ڈالنے والے کلیکشن کا نام۔ |
partitionName |
ڈیٹا کو ڈالنے والے پارٹیشن کا نام۔ اگر خالی چھوڑا جائے، تو ڈیٹا ڈیفالٹ پارٹیشن میں ڈالا جائے گا۔ |
columnarData |
ہر فیلڈ میں ڈالنے والا ڈیٹا۔ |
ایک انڈیکس بنایا ھوا کلیکشن میں انٹٹ
ڈیٹا تیار کرنا
سب سے پہلے ڈیٹا تیار کریں جو اپ ڈیٹ ہونا ہے۔ اپ ڈیٹ ہونے والے ڈیٹا کی قسم کو مدد سےا کرنا ضروری ہے۔ اگر نہیں تو Milvus استثناء پھینکے گا۔
Milvus علامت کے پول کے لئے ابتدائی اقدار کا ساتھ دینا سپورٹ کرتا ہے، بجاۓ ابتدائی کنجی کے فیلڈ کے لئے۔ یعنی ڈیٹا اندراج یا اپ ڈیٹ کرنے کے دوران، کچھ فیلڈ خالی رہ سکتے ہیں۔ مزید معلومات کے لئے براہ کرم کالیکشن تخلیق کی جائیں۔
nEntities := 3000
dim := 8
idList := make([]int64, 0, nEntities)
randomList := make([]float64, 0, nEntities)
embeddingList := make([][]float32, 0, nEntities)
for i := 0; i < nEntities; i++ {
idList = append(idList, int64(i))
}
for i := 0; i < nEntities; i++ {
randomList = append(randomList, rand.Float64())
}
for i := 0; i < nEntities; i++ {
vec := make([]float32, 0, dim)
for j := 0; j < dim; j++ {
vec = append(vec, rand.Float32())
}
embeddingList = append(embeddingList, vec)
}
idColData := entity.NewColumnInt64("ID", idList)
randomColData := entity.NewColumnDouble("random", randomList)
embeddingColData := entity.NewColumnFloatVector("embeddings", dim, embeddingList)
ڈیٹا اپ ڈیٹ کرنا
ڈیٹا کو کالیکشن میں اپ ڈیٹ کریں۔
if _, err := c.Upsert(ctx, collectionName, "", idColData, embeddingColData);
err != nil {
log.Fatalf("failed to upsert data, err: %v", err)
}