الإحماءCompatible with Milvus 2.6.4+

تكمل ميزةالإحماء عمليةالإحماء التخزين المتدرج عن طريق التحميل المسبق للحقول أو الفهارس المحددة في ذاكرة التخزين المؤقت قبل أن يصبح المقطع قابلاً للاستعلام. يمكنك تكوين عملية الإحماء على مستوى المجموعة أو المجموعة أو الحقل/الفهرس الفردي، مما يتيح تحكمًا دقيقًا في زمن وصول الاستعلام الأول واستخدام الموارد.

لماذا الإحماء

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

تحل خاصيةالإحماء هذه المشكلة عن طريق التخزين المؤقت للبيانات الهامة بشكل استباقي أثناء تهيئة المقطع.

إنه مفيد بشكل خاص عندما:

  • يتم استخدام فهارس قياسية معينة بشكل متكرر في ظروف التصفية.

  • الفهارس المتجهة ضرورية لأداء البحث ويجب أن تكون جاهزة على الفور.

  • يكون زمن انتظار البدء البارد بعد إعادة تشغيل QueryNode أو تحميل مقطع جديد غير مقبول.

في المقابل، لا يوصى بالإحماء للحقول أو الفهارس التي يتم الاستعلام عنها بشكل غير متكرر. يؤدي تعطيل الإحماء إلى تقصير وقت تحميل المقطع والحفاظ على مساحة ذاكرة التخزين المؤقت - وهو مثالي للحقول المتجهة الكبيرة أو الحقول القياسية غير الحرجة.

مستويات التكوين

المستوى

النطاق

طريقة التكوين

الأولوية

الحقل/الفهرس

حقل واحد أو فهرس واحد

أساليب SDK:

  • add_field()

  • alter_collection_field()

  • add_index()

  • alter_index_properties()

الأعلى

مجموعة

جميع الحقول/الفهارس في مجموعة

أساليب SDK:

  • create_collection()

  • alter_collection_properties()

متوسط

المجموعة العنقودية

جميع المجموعات في المجموعة

milvus.yaml ملف التكوين

أدنى (افتراضي)

تجاوز السلوك:

  • إذا كان الحقل يحتوي على إعداد الإحماء الخاص به، يكون لهذا الإعداد الأسبقية على إعدادات مستوى المجموعة ومستوى المجموعة.

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

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

  • عند استخدام عمليات التغيير، تسري أحدث قيمة تغيير.

تكوين الإحماء على مستوى المجموعة

يتم تكوين عملية الإحماء على مستوى المجموعة في ملف تكوين Milvus milvus.yaml ويتم تطبيقه على جميع المجموعات في المجموعة. هذا بمثابة خط الأساس الافتراضي.

يدعم كل نوع هدف إعدادين:

إعداد الإحماء

الوصف

السيناريو النموذجي

sync

التحميل المسبق قبل أن يصبح المقطع قابلاً للاستعلام. يزيد وقت التحميل قليلاً، لكن الاستعلام الأول لا يتكبد أي تأخير.

يُستخدم للبيانات ذات الأداء الحرج التي يجب أن تكون متاحة على الفور، مثل الفهارس القياسية عالية التردد أو فهارس المتجهات الرئيسية المستخدمة في البحث.

disable

تخطي التحميل المسبق. يصبح المقطع قابلاً للاستعلام بشكل أسرع، ولكن قد يؤدي الاستعلام الأول إلى التحميل عند الطلب.

يُستخدم للبيانات التي يتم الوصول إليها بشكل غير متكرر أو البيانات الكبيرة مثل الحقول المتجهة الخام أو الحقول القياسية غير الحرجة.

مثال YAML:

queryNode:
  segcore:
    tieredStorage:
      warmup:
        # options: sync, disable.
        # Specifies the timing for warming up the Tiered Storage cache.
        # - `sync`: data will be loaded into the cache before a segment is considered loaded.
        # - `disable`: data will not be proactively loaded into the cache, and loaded only if needed by search/query tasks.
        # Defaults to `sync`, except for vector field which defaults to `disable`.
        scalarField: sync
        scalarIndex: sync
        vectorField: disable # cache warmup for vector field raw data is by default disabled.
        vectorIndex: sync

المعلمة

إعداد الإحماء

الوصف

حالة الاستخدام الموصى بها

scalarField

sync | disable

يتحكم فيما إذا كان يتم تحميل بيانات الحقل القياسي مسبقاً.

استخدم sync فقط إذا كانت الحقول القياسية صغيرة ويتم الوصول إليها بشكل متكرر في المرشحات. خلاف ذلك، disable لتقليل وقت التحميل.

scalarIndex

sync | disable

يتحكم فيما إذا كان يتم تحميل الفهارس العددية مسبقاً.

استخدم sync للفهارس العددية المتضمنة في شروط التصفية المتكررة أو استعلامات النطاق.

vectorField

sync | disable

يتحكم فيما إذا كان يتم تحميل بيانات الحقل المتجه مسبقًا.

بشكل عام disable لتجنب الاستخدام الكثيف لذاكرة التخزين المؤقت. قم بتمكين sync فقط عندما يجب استرداد المتجهات الخام مباشرةً بعد البحث (على سبيل المثال، نتائج التشابه مع استدعاء المتجهات).

vectorIndex

sync | disable

يتحكم فيما إذا كان يتم تحميل فهارس المتجهات مسبقًا أم لا.

استخدم sync للفهارس المتجهة التي تعتبر حاسمة بالنسبة لزمن انتقال البحث. في أحمال العمل المجمعة أو منخفضة التردد، disable لجاهزية المقطع بشكل أسرع.

تكوين الإحماء على مستوى المجموعةCompatible with Milvus 2.6.11+

تسمح لك عملية الإحماء على مستوى المجموعة بتجاوز الإعدادات الافتراضية للمجموعة لمجموعة محددة. يكون هذا مفيدًا عندما يكون للمجموعة أنماط وصول مختلفة عن الخط الأساسي على مستوى المجموعة.

تعيين الإحماء عند إنشاء مجموعة

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

client.create_collection(
    collection_name="my_collection",
    schema=schema,
    properties={
        "warmup.scalarField": "sync",
        "warmup.scalarIndex": "sync",
        "warmup.vectorField": "disable",
        "warmup.vectorIndex": "sync"
    }
)

تغيير إعدادات الإحماء على مجموعة موجودة

يجب تغيير خصائص المجموعة قبل استدعاء load(). يؤدي تغيير مجموعة محملة إلى إرجاع خطأ. تسري التغييرات على إعدادات الإحماء في المرة التالية التي تقوم فيها بتحميل المجموعة.

client.alter_collection_properties(
    collection_name="my_collection",
    properties={
        "warmup.vectorIndex": "disable",
        "warmup.scalarField": "sync"
    }
)

مرجع الخاصية:

الخاصية

إعدادات الإحماء

الوصف

warmup.scalarField

sync | disable

إعداد الإحماء لجميع الحقول القياسية في المجموعة.

warmup.scalarIndex

sync | disable

إعداد الإحماء لجميع الفهارس القياسية في المجموعة.

warmup.vectorField

sync | disable

| إعداد الإحماء لجميع الحقول المتجهة في المجموعة.

warmup.vectorIndex

sync | disable

| إعداد الإحماء لجميع الفهارس المتجهة في المجموعة.

تكوين الإحماء على مستوى الحقلCompatible with Milvus 2.6.11+

يوفر الإحماء على مستوى الحقل أفضل دقة، مما يسمح لك بالتحكم في سلوك الإحماء للحقول الفردية. يكون هذا مفيدًا عندما يكون لحقول محددة أنماط وصول فريدة.

ينطبق الإحماء على مستوى الحقل على البيانات الخام للحقل فقط، وليس على الفهارس الموجودة في هذا الحقل. لتكوين الإحماء لفهرس، استخدم التكوين على مستوى الفهرس.

تعيين الإحماء عند إنشاء حقل

from pymilvus import MilvusClient, DataType

schema = MilvusClient.create_schema()

schema.add_field(
    field_name="id",
    datatype=DataType.INT64,
    is_primary=True
)

schema.add_field(
    field_name="category",
    datatype=DataType.VARCHAR,
    max_length=128,
    warmup="sync"  # Preload this field at load time
)

schema.add_field(
    field_name="embedding",
    datatype=DataType.FLOAT_VECTOR,
    dim=768,
    warmup="disable"  # Do not preload vector raw data
)

تغيير إعدادات الإحماء في حقل موجود

يجب تغيير إعدادات الحقل قبل استدعاء load(). يؤدي تغيير حقل على مجموعة محملة إلى إرجاع خطأ. تسري التغييرات في إعدادات الإحماء في المرة التالية التي تقوم فيها بتحميل المجموعة.

client.alter_collection_field(
    collection_name="my_collection",
    field_name="category",
    field_params={"warmup": "sync"}
)

تكوين الإحماء على مستوى الفهرسCompatible with Milvus 2.6.11+

تسمح لك عملية الإحماء على مستوى الفهرس بالتحكم في التحميل المسبق للفهارس الفردية، بشكل مستقل عن إعدادات الإحماء الخاصة بالحقل الأساسي.

تعيين الإحماء عند إنشاء فهرس

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

index_params = client.prepare_index_params()

index_params.add_index(
    field_name="embedding",
    index_type="HNSW",
    metric_type="COSINE",
    params={
        "M": 16,
        "efConstruction": 256,
        "warmup": "sync"  # Preload this index at load time
    }
)

index_params.add_index(
    field_name="category",
    index_type="AUTOINDEX",
    params={"warmup": "disable"}  # Do not preload this index
)

client.create_index(
    collection_name="my_collection",
    index_params=index_params
)

تغيير إعدادات الإحماء على فهرس موجود

يجب تغيير إعدادات الفهرس قبل استدعاء load(). يؤدي تغيير فهرس على مجموعة محملة إلى إرجاع خطأ. تسري التغييرات على إعدادات الإحماء في المرة التالية التي تقوم فيها بتحميل المجموعة.

client.alter_index_properties(
    collection_name="my_collection",
    index_name="embedding",
    properties={"warmup": "sync"}
)

مرجع سلوك الإحماء

يلخص الجدول التالي سلوك الإحماء في مراحل مختلفة من دورة حياة المقطع.

إعدادات الإحماء

مرحلة التحميل

مرحلة البحث/الاستعلام

مرحلة الإصدار

sync

يتم تحميل البيانات إلى وحدة التخزين المحلية. تعتمد الوجهة (قرص أو ذاكرة) على إعداد mmap.

يصل الاستعلام إلى ذاكرة التخزين المؤقت المحلية مباشرةً.

يتم مسح البيانات المحلية المخزنة مؤقتاً.

disable

لا يتم تحميل البيانات إلى التخزين المحلي.

يتم جلب البيانات عند الطلب من وحدة تخزين الكائنات، ثم يتم تخزينها مؤقتاً محلياً استناداً إلى إعداد mmap.

يتم مسح البيانات المحلية المخزنة مؤقتاً.

التفاعل مع mmap:

إعداد الإحماء

تم تمكين Mmap

موقع البيانات

sync

true

القرص المحلي (localStorage.path/cache/...)

sync

false

الذاكرة المحلية

disable

true

تم التعيين إلى القرص المحلي عند أول وصول

disable

false

يتم تعيينها إلى الذاكرة المحلية عند أول وصول

بنية دليل ذاكرة التخزين المؤقت المحلية (عند تمكين mmap):

نوع البيانات

مسار الدليل

بيانات الحقول العددية/المتجهة

localStorage.path/cache/<collection_id>/local_chunk/...

ملفات الفهرس العددية/المتجهة

localStorage.path/cache/<collection_id>/local_chunk/index_files/...

أفضل الممارسات

يؤثر الإحماء على التحميل الأولي فقط. إذا تم إخلاء البيانات المخزنة مؤقتًا في وقت لاحق، فسيقوم الاستعلام التالي بإعادة تحميلها عند الطلب.

  • تجنب الإفراط في استخدام sync. يزيد التحميل المسبق للعديد من الحقول من وقت التحميل وضغط ذاكرة التخزين المؤقت.

  • ابدأ بتحفظ - قم بتمكين الإحماء فقط للحقول والفهارس التي يتم الوصول إليها بشكل متكرر.

  • راقب وقت استجابة الاستعلام ومقاييس ذاكرة التخزين المؤقت، ثم قم بتوسيع التحميل المسبق حسب الحاجة.

  • بالنسبة لأحمال العمل المختلطة، قم بتطبيق sync على المجموعات الحساسة للأداء و disable على المجموعات الموجهة نحو السعة.