🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • دليل المستخدم
  • Home
  • Docs
  • دليل المستخدم

  • المخطط وحقول البيانات

  • شرح المخطط

إدارة المخطط

يقدم هذا الموضوع المخطط في ملفوس. يُستخدم المخطط لتحديد خصائص المجموعة والحقول الموجودة بداخلها.

مخطط الحقل

مخطط الحقل هو التعريف المنطقي للحقل. وهو أول ما تحتاج إلى تعريفه قبل تحديد مخطط المجموعة وإدارة المجموعات.

يدعم 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: نوع بيانات جديد.

  • يدعم حقل المتجه:

    • 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
    )

ما التالي

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟