এন্টিটিগুলি ঢোকান
এই বিষয়টি ব্যবহারকারী দিক থেকে মিলভুসে ডেটা ঢোকানোর উপর বিবরণ করে।
আপনি আমদানি করতে MilvusDM ব্যবহার করেও তথ্য মিলভুসে মাইগ্রেট করতে পারবেন। MilvusDM হল একটি ওপেন সোর্স টুল যা মিলভুস দিয়ে ডেটা ইমপোর্ট এবং এক্সপোর্টের জন্য বিশেষভাবে তৈরি করা।
মিলভুস 2.1 স্কেলার ফিল্ডের জন্য VARCHAR
ডেটা ধরতে সমর্থন করে। স্কেলার ফিল্ডের জন্য ইনডেক্স তৈরি করার সময়, VARCHAR এর ধরনের স্কেলার ফিল্ডের জন্য ডিফল্ট ইনডেক্স প্রকার হল একটি trie।
নীচের উদাহরণটি ২,০০০টি এল্যাব তৈরি করা ডেটা ঢোকানোর জন্য ব্যবহার করে (মিলভুস সিএলআই উদাহরণটি একটি পূর্বনির্মিত দূরবর্তী CSV ফাইল ব্যবহার করে একই রকম ডেটা ধরে)। বাস্তব অ্যাপ্লিকেশনগুলি উদাহরণের থেকে উচ্চ-মাত্রার ভেক্টর ব্যবহার করতে পারে। আপনি আপনার নিজের ডেটা প্রস্তুত করতে পারেন উদাহরণটি প্রতিস্থাপন করতে।
তথ্য প্রস্তুত করুন
প্রথমে, ঢোকানোর জন্য তথ্য প্রস্তুত করুন। ঢোকানোর ডেটার প্রকার অবশ্যই কালেকশনের স্কিমা মেলে থাকতে হবে, অন্যথায় মিলভুস একটি অসম্পূর্ণতা হেফাজত রাখবে।
মিলভুস স্কেলার ফিল্ডের জন্য ডিফল্ট মান সমর্থন করে, প্রাথমিক কী ফিল্ডগুলির বাদে। এটা বোঝার জন্য মিলভুস ডেটা ঢোকান বা আপডেট করার সময়, নির্দিষ্ট ফিল্ডগুলি ফাকা রাখা যেতে পারে। বিস্তারিত জানতে, কালেকশন তৈরি করতে দেখুন।
ডায়নামিক স্কিমা চালু করার পরে, আপনি ডেটা অবস্থান সংশোধন করতে পারেন। বিস্তারিত জানতে, ডায়নামিক স্কিমা দেখুন।
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)
মিলভুসে ডেটা ঢোকান
ডেটাটি একটি কালেকশনে ঢোকান।
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 |
এপিআই কল প্রক্রিয়া নিয়ন্ত্রণ করার জন্য ব্যবহৃত সন্দর্ভ। |
CollectionName |
ডেটা ঢোকানোর জন্য কালেকশনের নাম। |
partitionName |
ডেটা ঢোকানোর জন্য বিভাগের নাম। স্পর্শ পরিস্থিতিতে ডেটা ডিফল্ট বিভাগে ঢোকানো হবে। |
columnarData |
প্রতিটি ফিল্ডে ঢোকানোর জন্য ডেটা। |
যখন ইনডেক্স সহ একটি কালেকশনে এন্টিটিগুলি ঢোকানো হয় যেগুলি ইতিমধ্যে ইনডেক্সিত হয়েছে, তাহলে আপনাকে কালেকশনটি আবার ইনডেক্স করতে দরকার হয় না, কারণ মিলভুস নতুনভাবে ঢোকানো ডেটার জন্য স্বয়ংক্রিয়ভাবে একটি ইনডেক্স তৈরি করে।
মিলভুসে ডেটা রিফ্রেশ করা
যখন ডেটা মিলভুসে ঢোকানো হয়, তা সেগমেন্টে ঢোকানো হয়। সেগমেন্টগুলি ইনডেক্স করা এবং মোচন করা হতে হবে। আমোচিত সেগমেন্টগুলি অবশিষ্ট থাকবে, এবং brute force search এর মাধ্যমে কুয়েরী হবে। এই অবস্থান থেকে পালাতে flush()
কল করা হলো ভালো। flush()
মেথড অবশিষ্ট সেগমেন্টগুলি মোচন করে এবং ইনডেক্সে পাঠায়। এই মেথডটি অনেক গুরুত্বপূর্ণ, যা শুধুমাত্র ঢোকানো সেশন শেষ হলেই কল করা উচিত। এই মেথডটি অত্যন্ত সতর্কতার সাথে কল করা উচিত, কারন এটি অত্যাধিক সময় ব্যবহার করলে টুকরাপূর্ণ ডেটা সৃষ্টি করতে পারে, যা পরে পরিষ্কার করা দরকার পড়বে।
সীমাবদ্ধতা
বৈশিষ্ট্য | সর্বাধিক সীমা |
---|---|
ভেক্টর মাত্রা | ৩২,৭৬৮ |
ডেটা আপডেট করা
ডেটা প্রস্তুত করা
প্রথমে আপডেট করার জন্য ডেটা প্রস্তুত করুন। আপডেট করা যাবে শুধুমাত্র কলেকশনের স্কিমা এর সাথে মিলভুসের উপায়ে।
মিলভুস স্কেলার ফিল্ডগুলির জন্য ডিফল্ট মান সমর্থন করে, প্রাথমিক কী ফিল্ডগুলির বাদে। এটা মানে প্রবেশ বা আপডেট প্রসেসের সময়, নির্দিষ্ট ফিল্ডগুলি ফাঁকা রাখা সম্ভব। বিস্তারিত জানতে দয়া করে কলেকশন সৃষ্টি সম্পর্কে দেখুন।
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("ডেটা আপডেট করা ব্যর্থ, ত্রুটি: %v", err)
}