حدود StructArray
يشمل دعم StructArray تعريف المخطط، وإدراج الحمولات، والفهرسة، وأنماط البحث، والمرشحات الخاصة بـ StructArray. استخدم هذه الصفحة كمرجع للحدود قبل الاعتماد على سلوك StructArray في بيئة الإنتاج.
تأتي معظم حدود StructArray من أحد ثلاثة مصادر: نموذج مخطط StructArray، ووضع البحث الذي تختاره لحقول المتجهات الفرعية، وإصدار Milvus الذي تعمل عليه مجموعتك.
نظرة عامة على الحدود
| المجال | الحد |
|---|---|
| شكل المخطط | لا يمكن استخدام Struct إلا كنوع عنصر لحقل Array. لا يتم دعم Struct كحقل مجموعة من المستوى الأعلى. |
| مخطط الحقل الفرعي | تشترك جميع عناصر Struct الموجودة في حقل StructArray نفسه في مخطط Struct واحد محدد مسبقًا. |
| السعة | max_capacity مطلوب ويحدد عدد عناصر Struct التي يمكن لكيان واحد تخزينها في حقل StructArray. |
| تغييرات الحقول الفرعية | بعد إنشاء حقل StructArray، لا يمكنك إضافة حقول فرعية إلى حقل StructArray الموجود. |
| مسار الحقل الفرعي | استخدم مسارات structArray[subfield] ، مثل chunks[emb] ، للفهارس وأهداف البحث وحقول الإخراج والمرشحات. لا تستخدم chunks.emb. |
| إدراج الشكل | أدخل حقل StructArray كمصفوفة من الكائنات. لا تستخدم صيغة المسار داخل حمولات الإدراج. |
| فهارس المتجهات | يقبل حقل المتجه أو الحقل الفرعي للمتجه فهرسًا واحدًا فقط. استخدم حقولًا فرعية منفصلة للمتجه للبحث في EmbeddingList والبحث على مستوى العناصر. |
| الدوال | لا يتم دعم وظائف الحقول للحقول أو الحقول الفرعية داخل حقل StructArray. |
| الحقول القابلة للقيمة الفارغة | تخضع حقول StructArray القابلة للقيمة الفارغة لقيود الإصدار. وعندما تكون مدعومة، تنطبق القيمة الفارغة على حقل StructArray بأكمله، وليس على عنصر Struct فردي بشكل مستقل. |
| حقل الإضافة الديناميكي | تخضع إضافة حقل StructArray إلى مجموعة موجودة للإصدار وتتطلب أن يكون الحقل المضاف قابلاً للقيمة الفارغة. |
حدود المخطط
| الحد | التفاصيل |
|---|---|
| Struct ليس نوع حقل من المستوى الأعلى. | قم بإنشاء حقل StructArray كـ " datatype=DataType.ARRAY " مع " element_type=DataType.STRUCT " و" struct_schema". |
| تشترك جميع العناصر في مخطط واحد. | يتبع كل عنصر Struct في حقل StructArray نفس قائمة الحقول الفرعية وأنواع بيانات الحقول الفرعية. |
max_capacity مطلوب. | يجب ألا يتجاوز عدد عناصر Struct في كيان واحد عدد max_capacity المُعد لحقل StructArray. |
| الحقول الفرعية الحالية ثابتة. | لا يمكنك إضافة حقول فرعية جديدة إلى حقل StructArray موجود. لتغيير مخطط الحقول الفرعية، قم بإزالة حقل StructArray ثم أضفه مرة أخرى باستخدام المخطط المحدث. |
| لا يتم دعم StructArray المتداخل. | لا يمكن أن يحتوي حقل StructArray على حقول فرعية متداخلة من نوع Array أو ArrayOfVector أو Struct أو ArrayOfStruct. |
| لا يتم دعم الدوال داخل StructArray. | لا تقم بتعريف دوال الحقول لحقول StructArray أو حقولها الفرعية. |
للاطلاع على أمثلة لإنشاء المخطط، راجع إنشاء حقل StructArray.
أنواع بيانات الحقول الفرعية المدعومة
يتم تعيين الحقول الفرعية لـ StructArray إلى تخزين مادي بنمط المصفوفة. يسرد الجدول التالي الأنواع المادية المدعومة وغير المدعومة.
| النوع المادي للحقل الفرعي في Struct | الدعم | ملاحظات |
|---|---|---|
Array | مدعوم | قم بتعريف الحقل الفرعي على النحو التالي: DataType.BOOL. |
Array | مدعوم | حدد الحقل الفرعي على أنه DataType.INT8 أو DataType.INT16 أو DataType.INT32 أو DataType.INT64. |
Array | مدعوم | حدد الحقل الفرعي على أنه DataType.FLOAT أو DataType.DOUBLE. |
Array | مدعوم | حدد الحقل الفرعي على أنه DataType.VARCHAR وقم بتعيين max_length. |
ArrayOfVector | مدعوم | حدد الحقل الفرعي على أنه DataType.FLOAT_VECTOR وقم بتعيين dim. |
ArrayOfVector | مدعوم | حدد الحقل الفرعي على أنه DataType.FLOAT16_VECTOR وقم بتعيين dim. |
ArrayOfVector | مدعوم | حدد الحقل الفرعي على أنه DataType.BFLOAT16_VECTOR وقم بتعيين dim. |
ArrayOfVector | مدعوم | حدد الحقل الفرعي على أنه DataType.INT8_VECTOR وقم بتعيين dim. |
ArrayOfVector | مدعوم | حدد الحقل الفرعي على أنه DataType.BINARY_VECTOR وقم بتعيين dim. |
ArrayOfVector | غير مدعوم | لا يتم دعم الحقول الفرعية للمتجهات المتفرقة في حقول StructArray. |
Array | غير مدعوم | استخدم VARCHAR ، وليس String. |
Array | غير مدعوم | لا يتم دعم الحقول الفرعية JSON في حقول StructArray. |
Array | غير مدعوم | الحقول الفرعية للهندسة ووظائف نظم المعلومات الجغرافية (GIS) غير مدعومة في حقول StructArray. |
Array | غير مدعوم | الحقول الفرعية النصية غير مدعومة في حقول StructArray. |
Array | غير مدعوم | الحقول الفرعية من نوع Timestamptz والتعبيرات المرتبطة بوقت محدد غير مدعومة في حقول StructArray. |
Array أو ArrayOfVector أو Struct أو ArrayOfStruct | غير مدعوم | لا تدعم حقول StructArray الحقول الفرعية المتداخلة من نوع المصفوفة أو المصفوفة المتجهة أو Struct أو Array-of-Struct. |
حدود المخطط القابل للفراغ والديناميكي
يعتمد سلوك StructArray القابل للقيمة الفارغة وإضافة حقول StructArray الديناميكية على الإصدار.
| القدرة | الحد |
|---|---|
| حقل StructArray القابل للإفراغ | مدعوم في Milvus 3.0.0 والإصدارات الأحدث. قم بتعيين nullable=True على الكائن الأصلي لـ StructArray؛ ولا تقم بتكوين الحقول الفرعية لـ Struct على أنها قابلة للفراغ بشكل مستقل. |
| القيمة الفارغة في Python | استخدم None لإدراج قيمة StructArray فارغة في Python. لا تستخدم Null أو null. |
| نطاق القيمة الفارغة | تنطبق القيمة الفارغة على حقل StructArray بأكمله. على سبيل المثال، chunks=None صالحة فقط عندما يكون chunks قابلاً للقيمة الفارغة. |
| قيمة StructArray "null" جزئيًا | عندما يحتوي حقل StructArray على قيمة صفيف صالحة، لا تخلط صفيفات الحقول الفرعية التي يمكن أن تكون null مع صفيفات الحقول الفرعية الصالحة في نفس القيمة. |
| إضافة حقل StructArray ديناميكيًا | مدعوم في Milvus 3.0.0 والإصدارات الأحدث. |
| متطلبات القابلية للقيمة الفارغة للإضافة الديناميكية | يجب أن يكون حقل StructArray المضاف إلى مجموعة موجودة قابلاً للقيمة null لأن الكيانات الموجودة لا تحتوي على قيمة للحقل الجديد. |
| الكيانات الموجودة بعد الإضافة الديناميكية | تُرجع الكيانات الموجودة قيمة " null " للحقل StructArray المضاف. |
يدعم Milvus 3.0.0 والإصدارات الأحدث حقول StructArray القابلة للقيمة الفارغة، ومصفوفات المتجهات القابلة للقيمة الفارغة، والإضافة الديناميكية لحقول StructArray في كل من عمليات النشر المستقلة والموزعة. لا تدعم إصدارات Milvus السابقة هذه الإمكانيات.
في Zilliz Cloud، تتوفر هذه الإمكانيات على المجموعات حسب الطلب (On-Demand Clusters) التي تعمل بنظام Milvus 3.0.0 أو أحدث. ولا تدعمها مجموعات الخدمة (Serving Clusters).
للاطلاع على أمثلة الإدراج التي تحتوي على حقول StructArray القابلة للقيمة null، راجع إدراج البيانات في حقول StructArray.
حدود الإدراج
| الحد | التفاصيل |
|---|---|
| شكل الحمولة | أدخل حقل StructArray كمصفوفة من كائنات Struct، مثل chunks: [{"text": "...", "emb": [...]}]. |
| أسماء الحقول الفرعية | داخل كل كائن Struct، استخدم أسماء الحقول الفرعية مثل text و emb ، وليس المسارات مثل chunks[text]. |
| مواءمة المخطط | يجب أن يتطابق كل عنصر Struct مع مخطط Struct. |
| السعة | يجب ألا يتجاوز عدد عناصر Struct في كيان واحد max_capacity. |
| أبعاد المتجه | يجب أن تتطابق قيم المتجهات مع dim المُعدة لحقولها الفرعية المتجهة. |
| تكرار في وضع البحث | إذا كنت بحاجة إلى كل من البحث في قائمة التضمين (EmbeddingList) والبحث على مستوى العناصر، فاكتب المتجهات في حقلين فرعيين منفصلين للمتجهات. |
حدود الفهرس والمقياس
يمكن فهرسة حقل فرعي متجه من نوع StructArray إما للبحث في EmbeddingList أو للبحث على مستوى العناصر. ولا يمكن لنفس الحقل الفرعي المتجه استخدام مجموعتي المقاييس معًا لأن كل حقل متجه أو حقل فرعي متجه لا يقبل سوى فهرس واحد.
| وضع البحث | عائلة المقاييس | مستوى النتيجة |
|---|---|---|
| البحث في EmbeddingList | MAX_SIM، أو مقاييس MAX_SIM_COSINE ، أو MAX_SIM_IP ، أو MAX_SIM_L2 ، أو المقاييس الثنائية MAX_SIM_* | نتائج على مستوى الكيان. |
| البحث على مستوى العناصر | مقاييس متجهة عادية مثل L2 ، IP ، COSINE ، HAMMING ، أو JACCARD | نتائج على مستوى العنصر التي يمكن أن تتضمن إزاحة العنصر المطابق. |
استخدم حقول فرعية متجهة منفصلة عندما يكون كلا الوضعين مطلوبين. على سبيل المثال، استخدم chunks[emb_list_vector] للبحث في EmbeddingList و chunks[emb] للبحث على مستوى العنصر.
تُعتبر الحقول الفرعية للمتجهات في StructArray حقولًا فرعية للمتجهات عند تخطيط مخطط المجموعة. حافظ على إجمالي عدد حقول المتجهات والحقول الفرعية للمتجهات ضمن حدود الإصدار المستهدف ومستوى الخدمة.
للاطلاع على مصفوفة أنواع الفهارس وأنواع المقاييس المدعومة، راجع حقول StructArray للفهرس.
حدود البحث
| سلوك البحث | الدعم والحدود |
|---|---|
| البحث الأساسي في EmbeddingList | مدعوم في الحقول الفرعية للمتجهات StructArray المفهرسة باستخدام مقاييس MAX_SIM*. يُرجع نتائج على مستوى الكيان. |
| البحث الأساسي على مستوى العناصر | مدعوم في الحقول الفرعية للمتجهات StructArray المفهرسة باستخدام مقاييس المتجهات العادية. يمكنه إرجاع إزاحات العناصر المطابقة. |
| البحث في النطاق | مدعوم وفقًا لوضع البحث ودعم الفهرس/المقياس في الإصدار المستهدف. لمعرفة سلوك نطاق البحث المختلط في طلبات StructArray على مستوى العنصر، تحقق من الإصدار المستهدف. |
| البحث بالتجميع | يمكن أن يُرجع البحث بالتجميع على مستوى العناصر إزاحات. يعتمد سلوك التجميع في البحث المختلط لطلبات StructArray على مستوى العناصر على الإصدار. |
| البحث المختلط | يمكن أن يتضمن طلب البحث الهجين طلبات الحقول الفرعية للمتجه StructArray فقط عندما يدعم الإصدار المستهدف تركيبة البحث هذه. ولا يزال كل طلب يتبع عائلة المقاييس الخاصة بالحقل الفرعي للمتجه المفهرس. |
| إخراج الإزاحة | يتوفر الإزاحة لنتائج البحث على مستوى العنصر. يُرجع بحث EmbeddingList نتائج على مستوى الكيان ولا يستخدم إزاحات العناصر كوحدة النتيجة الأساسية. |
حدود التصفية والمشغلات
تتم معالجة تصفية القيم العددية لـ StructArray بواسطة عوامل StructArray، مثل element_filter ومجموعة MATCH_*. توجد مصفوفة دعم المسندات التفصيلية في StructArray Operators.
على مستوى عام:
استخدم
$[subfield]فقط داخل مشغلات StructArray.استخدم الحقول الفرعية القياسية للمسلّطات القياسية.
لا تستخدم الحقول الفرعية المتجهة كمدخلات للمسلّطات القياسية في
$[...].لا يتم دعم صيغة مسار JSON، ووظائف JSON، ووظائف حاويات المصفوفات، ووظائف مطابقة النص، ووظائف الهندسة / نظم المعلومات الجغرافية، وتعبيرات Timestamptz للمسلّطات على مستوى عناصر StructArray.
يفضل استخدام المقارنات المنطقية الصريحة مثل
$[has_code] == trueبدلاً من التعبيرات المنطقية المجردة.
الصفحات ذات الصلة
لإنشاء حقل StructArray، اقرأ إنشاء حقل StructArray.
لإدراج البيانات، اقرأ " إدراج البيانات في حقول StructArray".
لإنشاء فهارس متجهة وقيمية، اقرأ «فهرسة حقول StructArray».
لمراجعة صيغة مرشح StructArray، اقرأ " عوامل StructArray".