إدارة المخطط
يقدم هذا الموضوع المخطط في ملفوس. يُستخدم المخطط لتحديد خصائص المجموعة والحقول الموجودة بداخلها.
مخطط الحقل
مخطط الحقل هو التعريف المنطقي للحقل. وهو أول ما تحتاج إلى تعريفه قبل تحديد مخطط المجموعة وإدارة المجموعات.
يدعم Milvus حقل مفتاح أساسي واحد فقط في المجموعة.
خصائص مخطط الحقل
الخصائص | الوصف | ملاحظة |
---|---|---|
name |
اسم الحقل في المجموعة المراد إنشاؤها | نوع البيانات: سلسلة. إلزامي |
dtype |
نوع بيانات الحقل | إلزامي |
description |
وصف الحقل | نوع البيانات: سلسلة. اختياري |
is_primary |
ما إذا كان سيتم تعيين الحقل كحقل مفتاح أساسي أم لا | نوع البيانات: منطقية (true أو false ).إلزامي لحقل المفتاح الأساسي |
auto_id (إلزامي لحقل المفتاح الأساسي) |
التبديل لتمكين أو تعطيل التخصيص التلقائي للمعرف (المفتاح الأساسي). | True أو False |
max_length (إلزامي لحقل VARCHAR) |
الحد الأقصى لطول البايت للسلاسل المسموح بإدراجها. لاحظ أن الأحرف متعددة البايتات (على سبيل المثال، أحرف Unicode) قد تشغل أكثر من بايت واحد لكل منها، لذا تأكد من أن طول البايت للسلاسل المدرجة لا يتجاوز الحد المحدد. | [1, 65,535] |
dim |
بُعد المتجه | نوع البيانات: عدد صحيح ∈ [1، 32768]. إلزامي لحقل متجه كثيف. حذف لحقل متجه متناثر. |
is_partition_key |
ما إذا كان هذا الحقل هو حقل مفتاح التقسيم. | نوع البيانات: منطقية (true أو false ). |
إنشاء مخطط حقل
لتقليل التعقيد في إدخالات البيانات، يسمح لك Milvus بتحديد قيمة افتراضية لكل حقل متجه أثناء إنشاء مخطط الحقل، باستثناء حقل المفتاح الأساسي. يشير هذا إلى أنه إذا تركت حقلاً فارغًا عند إدراج البيانات، يتم تطبيق القيمة الافتراضية التي حددتها لهذا الحقل.
إنشاء مخطط حقل عادي:
from pymilvus import DataType, FieldSchema
id_field = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, description="primary id")
age_field = FieldSchema(name="age", dtype=DataType.INT64, description="age")
embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128, description="vector")
# The following creates a field and use it as the partition key
position_field = FieldSchema(name="position", dtype=DataType.VARCHAR, max_length=256, is_partition_key=True)
إنشاء مخطط حقل بقيم الحقول الافتراضية:
from pymilvus import DataType, FieldSchema
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
# configure default value `25` for field `age`
FieldSchema(name="age", dtype=DataType.INT64, default_value=25, description="age"),
embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128, description="vector")
]
أنواع البيانات المدعومة
DataType
يحدد نوع البيانات التي يحتوي عليها الحقل. تدعم الحقول المختلفة أنواع بيانات مختلفة.
يدعم حقل المفتاح الأساسي:
- INT64: numpy.int64
- varchar: varchar
يدعم الحقل العددي:
- BOOL: منطقية (
true
أوfalse
) - INT8: numpy.int8
- INT16: numpy.int16
- INT32: numpy.int32
- INT64: numpy.int64
- FLOAT: numpy.float32
- مزدوج: numpy.double.numpy.double
- varchar: varchar
- JSON: JSON
- صفيف: مصفوفة
يتوفر JSON كنوع بيانات مركب. يتألف حقل JSON من أزواج مفاتيح وقيمة. كل مفتاح عبارة عن سلسلة، ويمكن أن تكون القيمة رقمًا أو سلسلة أو قيمة منطقية أو مصفوفة أو قائمة. لمزيد من التفاصيل، راجع JSON: نوع بيانات جديد.
- BOOL: منطقية (
يدعم حقل المتجه:
- BINARY_VECTOR: يخزّن البيانات الثنائية كسلسلة من 0 و1، ويستخدم لتمثيل الميزات المدمجة في معالجة الصور واسترجاع المعلومات.
- FLOAT_VECTOR: يخزن الأرقام ذات الفاصلة العائمة 32 بت، وتستخدم عادةً في الحوسبة العلمية والتعلم الآلي لتمثيل الأرقام الحقيقية.
- FLOAT16_VECTOR: يخزّن الأرقام ذات الفاصلة العائمة نصف الدقيقة ذات 16 بت، وتستخدم في التعلم العميق وحسابات وحدة معالجة الرسومات من أجل كفاءة الذاكرة وعرض النطاق الترددي.
- BFLOAT16_VECTOR: يخزّن الأرقام ذات الفاصلة العائمة 16 بت بدقة منخفضة ولكن بنفس نطاق الأس مثل Float32، وهي شائعة في التعلّم العميق لتقليل متطلبات الذاكرة والحسابات دون التأثير على الدقة بشكل كبير.
- SPARSE_FLOAT_VECTOR: يخزن قائمة بالعناصر غير الصفرية والمؤشرات المقابلة لها، وتستخدم لتمثيل المتجهات المتفرقة. لمزيد من المعلومات، راجع المتجهات المتفرقة.
يدعم ميلفوس حقول متجهات متعددة في مجموعة. لمزيد من المعلومات، راجع البحث المختلط.
مخطط المجموعة
مخطط المجموعة هو التعريف المنطقي للمجموعة. وعادةً ما تحتاج إلى تعريف مخطط الحقل قبل تعريف مخطط المجموعة وإدارة المجموعات.
خصائص مخطط المجموعة
الخصائص | الوصف | ملاحظة |
---|---|---|
field |
الحقول في المجموعة المراد إنشاؤها | إلزامي |
description |
وصف المجموعة | نوع البيانات: سلسلة. اختياري |
partition_key_field |
اسم الحقل الذي تم تصميمه ليكون بمثابة مفتاح التقسيم. | نوع البيانات: سلسلة. اختياري. |
enable_dynamic_field |
ما إذا كان سيتم تمكين المخطط الديناميكي أم لا | نوع البيانات: منطقية (true أو false ).اختياري، الإعداد الافتراضي False .للحصول على تفاصيل حول المخطط الديناميكي، راجع المخطط الديناميكي وأدلة المستخدم لإدارة المجموعات. |
إنشاء مخطط مجموعة
from pymilvus import DataType, FieldSchema, CollectionSchema
id_field = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, description="primary id")
age_field = FieldSchema(name="age", dtype=DataType.INT64, description="age")
embedding_field = FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128, description="vector")
# Enable partition key on a field if you need to implement multi-tenancy based on the partition-key field
position_field = FieldSchema(name="position", dtype=DataType.VARCHAR, max_length=256, is_partition_key=True)
# Set enable_dynamic_field to True if you need to use dynamic fields.
schema = CollectionSchema(fields=[id_field, age_field, embedding_field], auto_id=False, enable_dynamic_field=True, description="desc of a collection")
قم بإنشاء مجموعة بالمخطط المحدد:
from pymilvus import Collection, connections
conn = connections.connect(host="127.0.0.1", port=19530)
collection_name1 = "tutorial_1"
collection1 = Collection(name=collection_name1, schema=schema, using='default', shards_num=2)
- يمكنك تعريف رقم الجزء مع
shards_num
. - يمكنك تحديد خادم ميلفوس الذي ترغب في إنشاء مجموعة عليه من خلال تحديد الاسم المستعار في
using
. - يمكنك تمكين ميزة مفتاح التقسيم على أحد الحقول عن طريق تعيين
is_partition_key
إلىTrue
على الحقل إذا كنت بحاجة إلى تنفيذ التآخي المتعدد المستند إلى مفتاح التقسيم. - يمكنك تمكين المخطط الديناميكي عن طريق تعيين
enable_dynamic_field
إلىTrue
في مخطط المجموعة إذا كنت بحاجة إلى تمكين الحقل الديناميكي.
يمكنك أيضًا إنشاء مجموعة باستخدام Collection.construct_from_dataframe
، والتي تقوم تلقائيًا بإنشاء مخطط مجموعة من DataFrame وإنشاء مجموعة.
from pymilvus import Collection
import pandas as pd
df = pd.DataFrame({
"id": [i for i in range(nb)],
"age": [random.randint(20, 40) for i in range(nb)],
"embedding": [[random.random() for _ in range(dim)] for _ in range(nb)],
"position": "test_pos"
})
collection, ins_res = Collection.construct_from_dataframe(
'my_collection',
df,
primary_field='id',
auto_id=False
)
ما التالي
- تعرف على كيفية إعداد المخطط عند إدارة المجموعات.
- اقرأ المزيد عن المخطط الديناميكي.
- اقرأ المزيد حول مفتاح التقسيم في تعدد التآلف.