درج موجودیت ها
این بخش شرح میدهد چگونه اطلاعات را از طریق سمت مشتری در Milvus درج کنید.
همچنین میتوانید از MilvusDM برای انتقال دادهها به Milvus استفاده کنید. MilvusDM یک ابزار منبع باز است که به طور خاص برای وارد کردن و صادر کردن دادههای Milvus طراحی شده است.
Milvus 2.1 از نوع داده VARCHAR
در فیلدهای اسکالر پشتیبانی میکند. هنگام ساخت نمایه برای یک فیلد اسکالر از نوع VARCHAR، نوع نمایه پیشفرض یک درخت تری است.
در مثال زیر، 2000 ردیف داده تصادفی تزریق میشود به عنوان داده نمونه (در مثال خط فرمان Milvus از یک فایل CSV از راه دور از پیش ساخته شده حاوی دادههای مشابه استفاده میکند). برنامههای واقعی اغلب از بردارهای بعد بالاتری نسبت به مثال استفاده میکنند. شما میتوانید داده خود را آماده کنید تا جایگزین داده نمونه شود.
آمادهسازی داده
ابتدا، دادهها را برای درج آماده کنید. نوع دادهای که قرار است درج شود باید با طرح مجموعه مطابقت داشته باشد، در غیر این صورت Milvus استثناء خواهد زد.
Milvus ارزشهای پیشفرض برای فیلدهای اسکالر را پشتیبانی میکند، به جز برای فیلدهای کلید اصلی. این بدان معناست که هنگام درج داده یا بهروزرسانی، میتوان برخی از فیلدها را خالی رها کرد. برای اطلاعات بیشتر، به ایجاد یک مجموعه نگاه کنید.
بعد از فعال کردن طرح داینامیک، میتوانید فیلدهای داینامیک را به دادهها اضافه کنید. برای اطلاعات توضیحی بیشتر، به طرح داینامیک مراجعه کنید.
import random
داده = [
[i for i in range(2000)],
[str(i) for i in range(2000)],
[i for i in range(10000, 12000)],
[[random.random() برای _ در دامنه(2)] برای _ در دامنه(2000)],
[],
None,
]
داده.append([str("dy"*i) برای i در دامنه(2000)])
درج داده در Milvus
داده را در مجموعه درج کنید.
با مشخص کردن partition_name
، میتوانید انتخاب کنید که داده را به کدام بخش درج کنید.
از pymilvus وارد کن Collection
مجموعه = Collection("book") # یک مجموعه موجود دریافت کنید.
mr = collection.insert(داده)
پارامتر | توضیحات |
---|---|
داده |
دادهای که باید در Milvus درج شود. |
partition_name (اختیاری) |
نام بخش که داده در آن درج خواهد شد. |
پس از درج موجودیتها در یک مجموعه قبلاً فهرستشده، نیازی به دوباره فهرستشدن مجموعه نیست، زیرا Milvus به طور خودکار فهرستها را برای دادههایی که به تازگی درج شدهاند، ایجاد خواهد کرد. برای اطلاعات بیشتر، به آیا میتوان فهرستها را پس از درج برداشت؟ مراجعه کنید.
تازهسازی داده در Milvus
هنگامی که داده در Milvus درج میشود، آنها در بخشها درج میشوند. بخشها باید به اندازهی خاصی برسند تا مهر شده و فهرست شوند. بخشهای مهر نشده از جستجوی نیروی خام استفاده خواهند کرد. برای جلوگیری از این وضعیت، بهتر است برای هر داده باقیمانده flush()
را فراخوانی کنید. فراخوانی flush()
هر بخش باقیمانده را مهر خواهد کرد و به فهرست خواهد فرستاد. اهمیت دارد که این متد فقط در پایان جلسه درج فراخوانی شود. فراخوانی آن بیش از حد میتواند منجر به دادههای پراکنده شود که بعدها باید پاک شوند.
محدودیتها
ویژگی | حداکثر محدودیت |
---|---|
بُعد بردار | ۳۲٬۷۶۸ |
بهروزرسانی موجودیت
بهروزرسانی درج ویژگی ترکیبی از عملیات درج و حذف است. در زمینه پایگاه داده بردار Milvus، بهروزرسانی یک عملیات سطح داده است. اگر مقدار مشخص شده در مجموعه وجود داشته باشد، موجودیت موجود را بازنویسی میکند و در صورت عدم وجود مقدار مشخص شده، یک موجودیت جدید را درج خواهد کرد.
مثال زیر ۳۰۰۰ ردیف داده تصادفی به عنوان داده نمونه بهروزرسانی میشود. هنگام انجام عملیات بهروزرسانی، مهم است بهیاد داشته باشید که این عملیات ممکن است بر روی عملکرد تأثیر بگذارد زیرا شامل حذف دادهها میشود.
آمادهسازی داده
ابتدا، دادهها را برای بهروزرسانی آماده کنید. نوع دادهای که قرار است بهروزرسانی شود باید با طرح مجموعه مطابقت داشته باشد، در غیر این صورت Milvus استثناء خواهد زد.
Milvus ارزشهای پیشفرض برای فیلدهای اسکالر را پشتیبانی میکند، به جز برای فیلدهای کلید اصلی. این بدان معناست که هنگام درج داده یا بهروزرسانی، میتوان برخی از فیلدها را خالی رها کرد. برای اطلاعات بیشتر، لطفا به ایجاد مجموعه مراجعه نمایید.
import random
nb = 3000
dim = 8
vectors = [[random.random() برای _ در دامنه(dim)] برای _ در دامنه(nb)]
داده = [
[i for i in range(nb)],
[str(i) برای i در دامنه(nb)],
[i for i in range(10000, 10000+nb)],
vectors,
[str("dy"*i) برای i در دامنه(nb)]
]
بهروزرسانی داده
دادهها را به مجموعه بهروزرسانی کنید.
از pymilvus وارد کن Collection
مجموعه = Collection("book") # مجموعه موجود را دریافت کنید.
mr = collection.upsert(داده)
حذف موجودیت
Milvus پشتیبانی از حذف موجودیت با استفاده از عبارات بولیایی از طریق کلیدهای اصلی دارد.
آمادهسازی عبارت بولیایی
برای فیلتر کردن موجودیتهای قرار است حذف شوند، یک عبارت بولیایی آماده کنید.
Milvus فقط حذف موجودیتها با کلید اصلی مشخص شده به صراحت را پشتیبانی میکند که میتوان از اپراتور "in" برای دستیابی به آن استفاده کرد. سایر اپراتورها تنها در فیلترینگ علامتی برای پرسوجو یا جستجوی برداری میتوانند استفاده شوند.
در مثال زیر، دادهها با استفاده از ارزشهای کلید اصلی 0 و 1 فیلتر میشوند.
expr = "book_id in [0,1]"
مشابه عبارت WHERE در SQL
حذف موجودیت
از عبارت بولیاییای که ایجاد کردید برای حذف موجودیتها استفاده کنید. 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()