الأسئلة الشائعة التشغيلية
ماذا لو فشلت في سحب صورة Milvus Docker من Docker Hub؟
في حال فشلت في سحب صورة Milvus Docker من Docker Hub، حاول إضافة مرايا سجل أخرى.
يمكن للمستخدمين من البر الرئيسي للصين إضافة عنوان URL "https://registry.docker-cn.com" إلى مصفوفة مرايا السجل في /etc.docker/daemon.json.
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
هل Docker هو الطريقة الوحيدة لتثبيت وتشغيل Milvus؟
Docker هي طريقة فعالة لنشر Milvus، ولكنها ليست الطريقة الوحيدة. يمكنك أيضاً نشر ميلفوس من التعليمات البرمجية المصدرية. يتطلب ذلك Ubuntu (18.04 أو أعلى) أو CentOS (7 أو أعلى). انظر بناء ميلفوس من التعليمات البرمجية المصدرية لمزيد من المعلومات.
ما هي العوامل الرئيسية التي تؤثر على الاستدعاء؟
يتأثر الاستدعاء بشكل رئيسي بنوع الفهرس ومعلمات البحث.
بالنسبة للفهرس المسطح، يأخذ Milvus مسحًا شاملًا داخل المجموعة، مع إرجاع 100%.
بالنسبة لفهارس IVF، تحدد معلمة nprobe نطاق البحث داخل المجموعة. تؤدي زيادة nprobe إلى زيادة نسبة المتجهات التي يتم البحث عنها واسترجاعها، ولكنها تقلل من أداء الاستعلام.
بالنسبة لفهرس HNSW، تحدد المعلمة ef نطاق البحث في الرسم البياني. تؤدي زيادة ef إلى زيادة عدد النقاط التي يتم البحث عنها في الرسم البياني والاستدعاء، ولكنها تقلل من أداء الاستعلام.
لمزيد من المعلومات، راجع فهرسة المتجهات.
لماذا لم تدخل التغييرات التي أجريتها على ملفات التكوين حيز التنفيذ؟
لا يدعم Milvus التعديل على ملفات التكوين أثناء وقت التشغيل. يجب إعادة تشغيل Milvus Docker حتى تدخل تغييرات ملفات التكوين حيز التنفيذ.
كيف أعرف ما إذا كان Milvus قد بدأ بنجاح؟
إذا تم بدء تشغيل Milvus باستخدام Docker Compose، قم بتشغيل docker ps
لمراقبة عدد حاويات Docker قيد التشغيل والتحقق مما إذا كانت خدمات Milvus قد بدأت بشكل صحيح.
بالنسبة لـ Milvus المستقلة، يجب أن تكون قادرًا على مراقبة ثلاث حاويات Docker قيد التشغيل على الأقل، إحداها خدمة Milvus والاثنتان الأخريان هما خدمة إدارة وتخزين إلخd. لمزيد من المعلومات، راجع تثبيت ميلفوس Standalone.
لماذا يختلف الوقت في ملفات السجل عن وقت النظام؟
يرجع اختلاف الوقت عادةً إلى حقيقة أن الجهاز المضيف لا يستخدم التوقيت العالمي المنسق (UTC).
تستخدم ملفات السجل داخل صورة Docker التوقيت العالمي المنسق (UTC) بشكل افتراضي. إذا كان جهازك المضيف لا يستخدم التوقيت العالمي المنسق، فقد تحدث هذه المشكلة.
كيف أعرف ما إذا كانت وحدة المعالجة المركزية الخاصة بي تدعم Milvus؟
تعتمد عمليات الحوسبة الخاصة ب Milvus على دعم وحدة المعالجة المركزية لمجموعة تعليمات تمديد SIMD (تعليمات أحادية التعليمات ومتعددة البيانات). يعد دعم وحدة المعالجة المركزية الخاصة بك لمجموعة تعليمات تمديد SIMD أمرًا حاسمًا لبناء الفهرس والبحث عن تشابه المتجهات داخل Milvus. تأكد من أن وحدة المعالجة المركزية لديك تدعم واحدة على الأقل من مجموعات تعليمات SIMD التالية:
- SSE4.2
- AVX
- AVX2
- AVX512
قم بتشغيل الأمر lscpu للتحقق مما إذا كانت وحدة المعالجة المركزية لديك تدعم مجموعات تعليمات SIMD المذكورة أعلاه:
$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512
لماذا يقوم Milvus بإرجاع illegal instruction
أثناء بدء التشغيل؟
يتطلب Milvus أن تدعم وحدة المعالجة المركزية الخاصة بك مجموعة تعليمات SIMD: SSE4.2، أو AVX، أو AVX2، أو AVX512. يجب أن تدعم وحدة المعالجة المركزية واحدة منها على الأقل لضمان عمل Milvus بشكل طبيعي. يشير الخطأ illegal instruction
الذي تم إرجاعه أثناء بدء التشغيل إلى أن وحدة المعالجة المركزية لديك لا تدعم أياً من مجموعات التعليمات الأربع المذكورة أعلاه.
راجع دعم وحدة المعالجة المركزية لمجموعة تعليمات SIMD.
هل يمكنني تثبيت Milvus على نظام ويندوز؟
نعم، يمكنك تثبيت Milvus على نظام ويندوز إما عن طريق التحويل البرمجي من التعليمات البرمجية المصدرية أو من حزمة ثنائية.
راجع تشغيل Milvus على ويندوز لمعرفة كيفية تثبيت Milvus على ويندوز.
حصلت على خطأ عند تثبيت pymilvus على ويندوز. ماذا أفعل؟
يرجى محاولة استخدام الأمر التالي لتحديث pymilvus إلى أحدث إصدار.
pip install --upgrade pymilvus
هل يمكنني نشر ميلفوس عند قطع الاتصال بالإنترنت؟
نعم، يمكنك تثبيت ميلفوس في بيئة غير متصلة بالإنترنت. انظر تثبيت ميلفوس دون اتصال لمزيد من المعلومات.
أين يمكنني العثور على السجلات التي تم إنشاؤها بواسطة ميلفوس؟
تتم طباعة سجل ميلفوس إلى ستاوت (الإخراج القياسي) وستدرر (الخطأ القياسي) بشكل افتراضي، ولكننا نوصي بشدة بإعادة توجيه السجل إلى وحدة تخزين ثابتة في الإنتاج. للقيام بذلك، قم بتحديث log.file.rootPath
في milvus.yaml. وإذا قمت بنشر Milvus مع مخطط milvus-helm
، فإنك تحتاج أيضًا إلى تمكين ثبات السجل أولاً عبر --set log.persistence.enabled=true
.
إذا لم تقم بتغيير التهيئة، يمكن أن يساعدك استخدام سجلات kubectl logs <pod-name> أو سجلات docker logs CONTAINER أيضًا في العثور على السجل.
هل يمكنني إنشاء فهرس لمقطع قبل إدراج البيانات فيه؟
نعم، يمكنك ذلك. ولكننا نوصي بإدراج البيانات على دفعات، على ألا يتجاوز حجم كل منها 256 ميجابايت، قبل فهرسة كل مقطع.
هل يمكنني مشاركة مثيل إلخd بين عدة مثيلات ميلفوس؟
نعم، يمكنك مشاركة مثيل إلخd بين عدة مثيلات Milvus. للقيام بذلك، تحتاج إلى تغيير etcd.rootPath
إلى قيمة منفصلة لكل مثيل من مثيلات Milvus في ملفات التكوين لكل منها قبل بدء تشغيلها.
هل يمكنني مشاركة مثيل Pulsar بين مثيلات Milvus متعددة؟
نعم، يمكنك مشاركة مثيل Pulsar بين مثيلات Milvus متعددة. للقيام بذلك، يمكنك
- إذا تم تمكين الإيجارات المتعددة على مثيل Pulsar الخاص بك، ففكر في تخصيص مستأجر منفصل أو مساحة اسم منفصلة لكل مثيل Milvus. وللقيام بذلك، تحتاج إلى تغيير
pulsar.tenant
أوpulsar.namespace
في ملفات التكوين الخاصة بمثيلات Milvus الخاصة بك إلى قيمة فريدة لكل منها قبل بدء تشغيلها. - إذا كنت لا تخطط لتمكين الإيجار المتعدد على مثيل Pulsar الخاص بك، ففكر في تغيير
msgChannel.chanNamePrefix.cluster
في ملفات التكوين الخاصة بمثيلات Milvus إلى قيمة فريدة لكل منها قبل بدء تشغيلها.
هل يمكنني مشاركة مثيل MinIO بين مثيلات Milvus متعددة؟
نعم، يمكنك مشاركة مثيل MinIO بين مثيلات Milvus متعددة. للقيام بذلك، تحتاج إلى تغيير minio.rootPath
إلى قيمة فريدة لكل مثيل من مثيلات Milvus في ملفات التكوين لكل منها قبل بدء تشغيلها.
كيف يمكنني التعامل مع رسالة الخطأ pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
؟
تشير رسالة الخطأ Illegal uri [example.db]
إلى أنك تحاول الاتصال بـ Milvus Lite باستخدام إصدار سابق من PyMilvus لا يدعم هذا النوع من الاتصال. لحل هذه المشكلة، قم بترقية تثبيت PyMilvus إلى الإصدار 2.4.2 على الأقل، والذي يتضمن دعم الاتصال بـ Milvus Lite.
يمكنك ترقية PyMilvus باستخدام الأمر التالي:
pip install pymilvus>=2.4.2
لماذا أحصل على نتائج أقل من limit
التي قمت بتعيينها في البحث/الاستعلام الخاص بي؟
هناك عدة أسباب قد تجعلك تتلقى نتائج أقل من limit
الذي حددته:
بيانات محدودة: قد لا تحتوي المجموعة على كيانات كافية لاستيفاء الحد الذي طلبته. إذا كان العدد الإجمالي للكيانات في المجموعة أقل من الحد، فستتلقى بطبيعة الحال نتائج أقل.
تكرار المفاتيح الأساسية: يعطي ميلفوس الأولوية لكيانات محددة عند مواجهة مفاتيح أساسية مكررة أثناء البحث. يختلف هذا السلوك بناءً على نوع البحث:
استعلام (مطابقة تامة): يقوم Milvus بتحديد أحدث كيان بمفتاح PK المطابق. البحث عن المفاتيح الأساسية: يقوم Milvus بتحديد الكيان الذي يتمتع بأعلى درجة تشابه، حتى إذا كانت الكيانات تشترك في نفس PK. يمكن أن يؤدي هذا التحديد للأولويات إلى نتائج فريدة أقل من الحد الأقصى إذا كانت مجموعتك تحتوي على العديد من المفاتيح الأساسية المكررة.
عدم كفاية التطابقات: قد تكون تعبيرات تصفية البحث الخاصة بك صارمة للغاية، مما يؤدي إلى عدد أقل من الكيانات التي تستوفي حد التشابه. إذا كانت الشروط التي تم تعيينها للبحث مقيدة للغاية، فلن يتطابق عدد كافٍ من الكيانات، مما يؤدي إلى نتائج أقل من المتوقع.
MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'
. ما سبب هذا الخطأ وكيف يمكن حله؟
يحدث هذا الخطأ عند محاولة استخدام برنامج Milvus Lite على نظام أساسي يعمل بنظام ويندوز. تم تصميم Milvus Lite بشكل أساسي لبيئات Linux وقد لا يكون لديه دعم أصلي لنظام Windows.
الحل هو استخدام بيئة Linux:
- استخدم نظام تشغيل يستند إلى لينكس أو جهاز افتراضي لتشغيل ميلفوس لايت.
- سيضمن هذا النهج التوافق مع تبعيات المكتبة ووظائفها.
ما هي أخطاء "الطول يتجاوز الحد الأقصى للطول" في Milvus، وكيف يمكن فهمها ومعالجتها؟
تحدث أخطاء "الطول يتجاوز الحد الأقصى للطول" في Milvus عندما يتجاوز حجم عنصر البيانات الحد الأقصى للحجم المسموح به للمجموعة أو الحقل. فيما يلي بعض الأمثلة والتفسيرات:
خطأ في حقل JSON:
<MilvusException: (code=1100, message=the length (398324) of json field (metadata) exceeds max length (65536): expected=valid length json string, actual=length exceeds max length: invalid parameter)>
خطأ في طول السلسلة:
<ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>
خطأ في حقل VarChar:
<MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>
لفهم هذه الأخطاء ومعالجتها:
- افهم أن
len(str)
في بايثون يمثل عدد الأحرف، وليس الحجم بالبايت. - بالنسبة لأنواع البيانات المستندة إلى السلسلة مثل VARCHAR و JSON، استخدم
len(bytes(str, encoding='utf-8'))
لتحديد الحجم الفعلي بالبايت، وهو ما يستخدمه Milvus لـ "الطول الأقصى".
مثال في بايثون
# Python Example: result of len() str cannot be used as "max-length" in Milvus
>>> s = "你好,世界!"
>>> len(s) # Number of characters of s.
6
>>> len(bytes(s, "utf-8")) # Size in bytes of s, max-length in Milvus.
18
pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
. ما سبب هذا الخطأ وكيف يمكن حله؟
يشير هذا الخطأ إلى أنك تحاول الاتصال بـ Milvus Lite باستخدام إصدار سابق من pymilvus لا يدعمه. لحل هذه المشكلة، قم بترقية تثبيت pymilvus إلى الإصدار 2.4.2 على الأقل. يدعم هذا الإصدار الاتصال بـ Milvus Lite. للترقية، استخدم الأمر التالي:
pip install pymilvus>=2.4.2
هل لا تزال لديك أسئلة؟
يمكنك ذلك:
- الاطلاع على Milvus على GitHub. لا تتردد في طرح الأسئلة ومشاركة الأفكار ومساعدة الآخرين.
- انضم إلى منتدى Milvus أو قناة Slack للحصول على الدعم والتفاعل مع مجتمعنا مفتوح المصدر.