إدراج الكيانات

تصف هذه القسم كيفية إدراج البيانات في Milvus عبر الجانب العميل.

يمكنك أيضًا استخدام MilvusDM لنقل البيانات إلى Milvus. MilvusDM هي أداة مفتوحة المصدر مصممة خصيصًا لاستيراد وتصدير بيانات Milvus.

يدعم Milvus 2.1 نوع البيانات VARCHAR على الحقول العلمية. عند بناء فهرس لحقل علمي من نوع VARCHAR ، يكون نوع الفهرس الافتراضي هو trie.

يقوم المثال التالي بإدراج 2000 صف من البيانات التي تم إنشاؤها عشوائيًا كبيانات عينة (يستخدم مثال Milvus CLI ملف CSV عن بُعد مُعَدٍّ سابقًا يحتوي على بيانات مماثلة). تستخدم التطبيقات الحقيقية غالبًا متجهات أعلى الأبعاد من المثال. يمكنك تحضير بياناتك الخاصة لاستبدال البيانات العينية.

إعداد البيانات

أولاً ، قم بإعداد البيانات التي سيتم إدراجها. يجب أن يتطابق نوع البيانات المراد إدراجها مع مخطط الكولكشن ، وإلا سيثير Milvus استثناءً.

يدعم Milvus القيم الافتراضية للحقول العلمية ، باستثناء حقول المفتاح الأساسي. يعني ذلك أنه أثناء إدراج البيانات أو تحديثها ، يمكن ترك بعض الحقول فارغة. لمزيد من المعلومات ، انظر إنشاء كولكشن.

بعد تمكين المخطط الديناميكي ، يمكنك إلحاق حقول ديناميكية بالبيانات. للحصول على معلومات مفصلة ، انظر المخطط الديناميكي.

import random
data = [
  [i for i in range(2000)],
  [str(i) for i in range(2000)],
  [i for i in range(10000, 12000)],
  [[random.random() for _ in range(2)] for _ in range(2000)],
  [], 
  None,
]

data.append([str("dy"*i) for i in range(2000)])

إدراج البيانات في Milvus

قم بإدراج البيانات في الكولكشن.

من خلال تحديد partition_name ، يمكنك اختيار القسم الذي سيتم إدراج البيانات فيه.

from pymilvus import Collection
collection = Collection("book")      # الحصول على كولكشن موجودة.
mr = collection.insert(data)
المعامل الوصف
data البيانات التي سيتم إدراجها في Milvus.
partition_name (اختياري) اسم القسم الذي سيتم إدخال البيانات فيه.

بعد إدراج الكيانات في كولكشن مُفَهَّرَسة سابقًا ، ليس هناك حاجة لإعادة فهرسة الكولكشن ، حيث ستقوم Milvus تلقائيًا بإنشاء فهارس للبيانات التي تم إدخالها حديثًا. لمزيد من المعلومات ، انظر هل يمكن إنشاء الفهارس بعد إدراج الفيكتورات؟

تحديث البيانات في Milvus

عند إدراج البيانات في Milvus ، يتم إدراجها في شرائح. يجب أن تصل الشرائح إلى حجم معين لتُختم وتُفهَرْس. ستستخدم الشرائح غير المُخْتَمَرَة البحث بالقوة الخام. لتجنب هذا الوضع ، من الأفضل استدعاء flush() لأي بيانات متبقية. سيقوم استدعاء flush() بختم أي شرائح متبقية وإرسالها إلى الفهرس. من المهم استدعاء هذه الطريقة فقط في نهاية جلسة الإدخال. قد يؤدي استدعاؤها بتواتر كثير إلى بيانات متفتتة تحتاج إلى تنظيف لاحقًا.

القيود

الميزة الحد الأقصى
بُعد الفيكتور ٣٢٬٧٦٨

تحديث الكيان

إضافة التحديث هو مزيج من عمليات الإدراج والحذف. في سياق قاعدة بيانات متجهات Milvus ، الإحداثيات هي عملية على مستوى البيانات. يقوم بالكتابة فوق الكيان الموجود إذا وجدت الحقل المحدد في الكولكشن ، ويقوم بإدراج كيان جديد إذا لم تكن القيمة المحددة موجودة.

يقوم المثال التالي بتحديث ٣٬٠٠٠ صف من البيانات التي تم إنشاؤها عشوائيًا كبيانات عينة. عند أداء عملية التحديث ، من المهم الانتباه إلى أن هذه العملية قد تؤثر على الأداء لأنها تشمل حذف البيانات.

إعداد البيانات

أولاً ، قم بإعداد البيانات التي ستُحَدَّث. يجب أن يتطابق نوع البيانات المراد تحديثه مع مخطط الكولكشن ، وإلا سيثير Milvus استثناءً.

يدعم Milvus القيم الافتراضية للحقول العلمية ، باستثناء حقول المفتاح الأساسي. يعني ذلك أنه أثناء إدراج البيانات أو تحديثها ، يمكن ترك بعض الحقول فارغة. لمزيد من المعلومات ، يُرجى الرجوع إلى إنشاء الكولكشن.

import random
nb = 3000
dim = 8
vectors = [[random.random() for _ in range(dim)] for _ in range(nb)]
data = [
    [i for i in range(nb)],
    [str(i) for i in range(nb)],
    [i for i in range(10000, 10000+nb)],
    vectors,
    [str("dy"*i) for i in range(nb)]
]

تحديث البيانات

يتم تحديث البيانات إلى الكولكشن.

from pymilvus import Collection
collection = Collection("book")  # الحصول على الكولكشن الموجودة.
mr = collection.upsert(data)

حذف الكيان

يدعم Milvus حذف الكيانات باستخدام التعبيرات البولية من خلال المفاتيح الأساسية.

تحضير تعبير منطقي

قم بتحضير تعبير منطقي لتصفية الكيانات التي ستتم حذفها.

يدعم Milvus فقط حذف الكيانات التي تم تحديد مفاتيحها الأساسية بشكل صريح، والتي يمكن تحقيقها باستخدام عامل "in". يمكن استخدام المشغلات الأخرى فقط في تصفية القيم المنفردة للاستعلام أو البحث الاتجاهي.

يقوم المثال التالي بتصفية البيانات باستخدام قيم المفتاح الأساسي لـ 0 و 1.

expr = "book_id in [0,1]"

شبيه ببيان SQL WHERE clause

حذف الكيان

استخدم التعبير المنطقي الذي قمت بإنشائه لحذف الكيانات. سيُرجع Milvus قائمة بمعرفات الكيانات التي تم حذفها.

from pymilvus import Collection
collection = Collection("book")      # الحصول على المجموعة الحالية.
collection.delete(expr)

ضغط البيانات

يدعم Milvus الضغط التلقائي للبيانات افتراضيًا. يمكنك تكوين Milvus لتمكين أو تعطيل الضغط والضغط التلقائي.

إذا تم تعطيل الضغط التلقائي، يمكنك لا زالة ضغط البيانات يدويًا.

ضغط البيانات يدويًا

نظرًا لأن الضغط يستغرق عادة وقتاً طويلًا، يتم معالجة طلبات الضغط بشكل غير متزامن.

from pymilvus import Collection
collection = Collection("book")      # الحصول على المجموعة الحالية.
collection.compact()

فحص حالة الضغط

يمكنك استخدام معرف الضغط المُرجع عند تشغيل الضغط اليدوي لفحص حالة الضغط.

collection.get_compaction_state()