كيفية المساهمة في ميلفوس: بداية سريعة للمطورين
Milvus هي قاعدة بيانات متجهة مفتوحة المصدر مصممة لإدارة البيانات المتجهة عالية الأبعاد. سواء كنت تقوم ببناء محركات بحث ذكية أو أنظمة توصية أو حلول ذكاء اصطناعي من الجيل التالي مثل الجيل المعزز للاسترجاع(RAG)، فإن Milvus أداة قوية في متناول يدك.
ولكن ما يدفع Milvus إلى الأمام حقًا ليس فقط تقنيته المتقدمة - بل مجتمع المطورين المتحمس والنابض بالحياة الذي يقف وراءه. كمشروع مفتوح المصدر، يزدهر ميلفوس ويتطور بفضل مساهمات المطورين أمثالك. كل إصلاح للأخطاء وإضافة للميزات وتحسين للأداء من المجتمع يجعل من ميلفوس أسرع وأكثر قابلية للتطوير وأكثر موثوقية.
سواءً كنت شغوفًا بالمصادر المفتوحة، أو متحمسًا للتعلم، أو ترغب في إحداث تأثير دائم في مجال الذكاء الاصطناعي، فإن ميلفوس هو المكان المثالي للمساهمة. سيرشدك هذا الدليل خلال العملية - بدءًا من إعداد بيئة التطوير الخاصة بك إلى إرسال أول طلب سحب. كما سنسلط الضوء على التحديات الشائعة التي قد تواجهك ونقدم لك الحلول للتغلب عليها.
هل أنت جاهز للانطلاق؟ لنجعل ميلفوس أفضل معًا!
إعداد بيئة تطوير ميلفوس الخاصة بك
أول شيء أولاً: إعداد بيئة التطوير الخاصة بك. يمكنك إما تثبيت Milvus على جهازك المحلي أو استخدام Docker - كلتا الطريقتين سهلة، لكنك ستحتاج أيضًا إلى تثبيت بعض التبعيات التابعة لجهة خارجية لتشغيل كل شيء.
بناء ميلفوس محلياً
إذا كنت تحب بناء الأشياء من الصفر، فإن بناء ميلفوس على جهازك المحلي أمر سهل للغاية. يجعل Milvus الأمر سهلاً من خلال تجميع جميع التبعيات في البرنامج النصي install_deps.sh
. إليك الإعداد السريع:
# Install third-party dependencies.
$ cd milvus/
$ ./scripts/install_deps.sh
# Compile Milvus.
$ make
بناء ميلفوس باستخدام Docker
إذا كنت تفضل Docker، فهناك طريقتان للقيام بذلك: يمكنك إما تشغيل الأوامر في حاوية مبنية مسبقًا أو تشغيل حاوية مطورة للحصول على نهج عملي أكثر.
# Option 1: Run commands in a pre-built Docker container
build/builder.sh make
# Option 2: Spin up a dev container
./scripts/devcontainer.sh up
docker-compose -f docker-compose-devcontainer.yml ps
docker exec -ti milvus-builder-1 bash
make milvus
ملاحظات المنصة: إذا كنت تستخدم نظام لينكس، فأنت على ما يرام - مشاكل التجميع نادرة جدًا. ومع ذلك، قد يواجه مستخدمو نظام ماك، خاصةً مع رقائق M1، بعض المشاكل على طول الطريق. لكن لا تقلق - لدينا دليل لمساعدتك في حل المشاكل الأكثر شيوعًا.
الشكل: تكوين نظام التشغيل
للحصول على دليل الإعداد الكامل، راجع دليل تطوير ميلفوس الرسمي.
المشاكل الشائعة وكيفية إصلاحها
في بعض الأحيان، لا يسير إعداد بيئة تطوير ميلفوس بسلاسة كما هو مخطط له. لا تقلق - إليك ملخص سريع للمشاكل الشائعة التي قد تواجهها وكيفية إصلاحها بسرعة.
البيرة المنزلية: قطع اتصال غير متوقع أثناء قراءة حزمة النطاق الجانبي
إذا كنت تستخدم Homebrew ورأيت خطأ مثل هذا:
==> Tapping homebrew/core
remote: Enumerating objects: 1107077, done.
remote: Counting objects: 100% (228/228), done.
remote: Compressing objects: 100% (157/157), done.
error: 545 bytes of body are still expected.44 MiB | 341.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: index-pack failed
Failed during: git fetch --force origin refs/heads/master:refs/remotes/origin/master
myuser~ %
الإصلاح: قم بزيادة حجم http.postBuffer
:
git config --global http.postBuffer 1M
إذا كنت تواجه أيضًا Brew: command not found
بعد تثبيت Homebrew، فقد تحتاج إلى إعداد تكوين مستخدم Git الخاص بك:
git config --global user.email xxxgit config --global user.name xxx
Docker: خطأ في الحصول على بيانات الاعتماد
عند العمل مع Docker، قد ترى هذا:
error getting credentials - err: exit status 1, out: ``
إصلاح: افتح~/.docker/config.json
وقم بإزالة الحقل credsStore
.
بايثون: لا توجد وحدة نمطية باسم "الجني
إذا ألقت Python هذا الخطأ، فذلك لأن Python 3.12 أزال الوحدة النمطية imp
، والتي لا تزال بعض التبعيات القديمة تستخدمها.
إصلاح: الرجوع إلى بايثون 3.11:
brew install python@3.11
كونان: الحجج غير المعترف بها أو الأمر غير موجود
مشكلة: إذا رأيت Unrecognized arguments: --install-folder conan
، فمن المحتمل أنك تستخدم إصدارًا غير متوافق من Conan.
إصلاح المشكلة: الرجوع إلى إصدار Conan 1.61:
pip install conan==1.61
المشكلة: المشكلة: إذا كنت ترى Conan command not found
، فهذا يعني أن بيئة Python الخاصة بك لم يتم إعدادها بشكل صحيح.
الإصلاح: أضف دليل Python's bin إلى PATH
:
export PATH="/path/to/python/bin:$PATH"
LLVM: استخدام معرّف غير معلن 'kSecFormatOpenSSL'
يعني هذا الخطأ عادةً أن تبعيات LLVM قديمة.
تم الإصلاح: قم بإعادة تثبيت LLVM 15 وتحديث متغيرات البيئة الخاصة بك:
brew reinstall llvm@15
export LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"
نصائح احترافية
تحقق دائمًا من إصدارات أدواتك وتبعياتها.
إذا كان هناك شيء لا يزال لا يعمل، فإن صفحة مشكلات Milvus GitHub هي مكان رائع للعثور على إجابات أو طلب المساعدة.
تهيئة كود VS لتكامل C++C و Go
إن جعل C++C و Go يعملان معًا في VS Code أسهل مما يبدو. باستخدام الإعداد الصحيح، يمكنك تبسيط عملية التطوير الخاصة بك لـ Milvus. ما عليك سوى تعديل ملف user.settings
الخاص بك باستخدام التكوين أدناه:
{
"go.toolsEnvVars": {
"PKG_CONFIG_PATH": "/Users/zilliz/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
"LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
"RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
},
"go.testEnvVars": {
"PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
"LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
"RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
},
"go.buildFlags": [
"-ldflags=-r /Users/zilliz/workspace/milvus/internal/core/output/lib"
],
"terminal.integrated.env.linux": {
"PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
"LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
"RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
},
"go.useLanguageServer": true,
"gopls": {
"formatting.gofumpt": true
},
"go.formatTool": "gofumpt",
"go.lintTool": "golangci-lint",
"go.testTags": "dynamic",
"go.testTimeout": "10m"
}
إليك ما يفعله هذا التكوين
متغيرات البيئة: إعداد مسارات
PKG_CONFIG_PATH
،LD_LIBRARY_PATH
، و ، وRPATH
، وهي مسارات ضرورية لتحديد موقع المكتبات أثناء الإنشاءات والاختبارات.تكامل أدوات Go: تمكين خادم لغة Go (
gopls
) وتكوين أدوات مثلgofumpt
للتنسيق وgolangci-lint
للتنسيق.إعداد الاختبار: يضيف
testTags
ويزيد المهلة الزمنية لتشغيل الاختبارات إلى 10 دقائق.
بمجرد إضافته، يضمن هذا الإعداد تكاملاً سلسًا بين سير عمل C+++C و Go. إنه مثالي لبناء واختبار Milvus واختباره دون الحاجة إلى تعديل البيئة باستمرار.
نصيحة احترافية
بعد إعداد هذا الإعداد، قم بتشغيل بناء اختبار سريع للتأكد من أن كل شيء يعمل. إذا شعرت أن هناك شيئًا ما غير صحيح، تحقق مرة أخرى من المسارات وإصدار امتداد Go الخاص ب VS Code.
نشر ميلفوس
يدعم ميلفوس ثلاثة أوضاع للنشر - لايت،ومستقل، وموزع.
ميلفوسلايت هي مكتبة بايثون ونسخة خفيفة الوزن للغاية من ميلفوس. وهي مثالية للنماذج الأولية السريعة في بيئات Python أو بيئات دفتر الملاحظات وللتجارب المحلية صغيرة النطاق.
Milvus Standalone هو خيار النشر أحادي العقدة ل Milvus، باستخدام نموذج خادم العميل. إنه مكافئ Milvus ل MySQLQL، في حين أن Milvus Lite يشبه SQLite.
MilvusDistributed هو الوضع الموزع لـ Milvus، وهو مثالي لمستخدمي المؤسسات الذين يقومون ببناء أنظمة قواعد بيانات متجهة واسعة النطاق أو منصات بيانات متجهة.
تعتمد جميع عمليات النشر هذه على ثلاثة مكونات أساسية:
Milvus: محرك قاعدة البيانات المتجهة الذي يقود جميع العمليات.
Etcd: محرك البيانات الوصفية الذي يدير البيانات الوصفية الداخلية لـ Milvus.
MinIO: محرك التخزين الذي يضمن ثبات البيانات.
عند تشغيله في الوضع الموزع، يشتمل Milvus أيضًا على Pulsar لمعالجة الرسائل الموزعة باستخدام آلية Pub/Sub، مما يجعله قابلاً للتطوير في البيئات عالية الإنتاجية.
ميلفوس مستقل
تم تصميم الوضع المستقل للإعدادات ذات المثيل الواحد، مما يجعله مثاليًا للاختبار والتطبيقات صغيرة النطاق. إليك كيفية البدء:
# Deploy Milvus Standalone
sudo docker-compose -f deployments/docker/dev/docker-compose.yml up -d
# Start the standalone service
bash ./scripts/start_standalone.sh
Milvus Distributed (المعروف سابقًا باسم Milvus Cluster)
بالنسبة لمجموعات البيانات الكبيرة وحركة المرور العالية، يوفر الوضع الموزع قابلية التوسع الأفقي. فهو يجمع بين مثيلات Milvus المتعددة في نظام واحد متماسك. أصبح النشر سهلاً مع مشغّل Milvus، الذي يعمل على Kubernetes ويدير مجموعة Milvus بأكملها نيابةً عنك.
هل تريد إرشادات خطوة بخطوة؟ اطلع على دليل تثبيت Milvus.
تشغيل الاختبارات من النهاية إلى النهاية (E2E)
بمجرد نشر Milvus الخاص بك وتشغيله، يصبح اختبار وظائفه أمرًا سهلاً مع اختبارات E2E. تغطي هذه الاختبارات كل جزء من الإعداد لضمان عمل كل شيء كما هو متوقع. إليك كيفية تشغيلها:
# Navigate to the test directory
cd tests/python_client
# Install dependencies
pip install -r requirements.txt
# Run E2E tests
pytest --tags=L0 -n auto
للحصول على إرشادات متعمقة ونصائح حول استكشاف الأخطاء وإصلاحها، راجع دليل تطوير Milvus.
نصيحة احترافية
إذا كنت جديدًا على Milvus، فابدأ باستخدام وضع Milvus Lite أو الوضع المستقل للتعرف على إمكانياته قبل الترقية إلى الوضع الموزع لأعباء العمل على مستوى الإنتاج.
إرسال الكود الخاص بك
تهانينا! لقد أنهيتَ جميع اختبارات الوحدة واختبارات E2E (أو قمتَ بتصحيحها وإعادة تجميعها حسب الحاجة). في حين أن البناء الأول قد يستغرق بعض الوقت، إلا أن البنى المستقبلية ستكون أسرع بكثير - لذا لا داعي للقلق. بعد اجتياز كل شيء، أنت جاهز لإرسال تغييراتك والمساهمة في ميلفوس!
ربط طلب السحب (PR) الخاص بك بمشكلة
يجب ربط كل طلب سحب إلى ميلفوس بمشكلة ذات صلة. إليك كيفية التعامل مع هذا الأمر:
تحقق من المشكلات الموجودة: ابحث في متعقب المشكلات في ميلفوس لمعرفة ما إذا كانت هناك بالفعل مشكلة متعلقة بتغييراتك.
إنشاء مشكلة جديدة: إذا لم تكن هناك مشكلة ذات صلة، افتح مشكلة جديدة واشرح المشكلة التي تعمل على حلها أو الميزة التي تضيفها.
إرسال الكود الخاص بك
قم بتوسيع المستودع: ابدأ بتحويل ريبو Milvus إلى حسابك على GitHub.
أنشئ فرعًا: استنسخ الفرع الخاص بك محليًا وأنشئ فرعًا جديدًا لتغييراتك.
التزم بتوقيع موقّع بالتوقيع: تأكد من أن التزاماتك تتضمن توقيع
Signed-off-by
للامتثال لترخيص المصدر المفتوح:
git commit -m "Commit of your change" -s
تصادق هذه الخطوة على أن مساهمتك تتماشى مع شهادة منشأ المطور (DCO).
موارد مفيدة
للاطلاع على الخطوات التفصيلية وأفضل الممارسات، راجع دليل مساهمة ميلفوس.
فرص المساهمة
تهانينا - لقد قمت بتشغيل ملفوس! لقد استكشفتَ أوضاع النشر الخاصة به، وقمتَ بإجراء اختباراتك، وربما تعمّقتَ في التعليمات البرمجية. الآن حان الوقت للارتقاء إلى مستوى أعلى: ساهم في ميلفوس وساعد في تشكيل مستقبل الذكاء الاصطناعي والبيانات غير المنظمة.
بغض النظر عن مجموعة مهاراتك، هناك مكان لك في مجتمع Milvus! سواء أكنت مطورًا يحب حل التحديات المعقدة، أو كاتبًا تقنيًا يحب كتابة وثائق نظيفة أو مدونات هندسية، أو متحمسًا لعمليات النشر Kubernetes، فهناك طريقة لك لإحداث تأثير.
ألقِ نظرة على الفرص المتاحة أدناه واعثر على ما يناسبك. كل مساهمة تساعد في دفع ميلفوس إلى الأمام - ومن يدري؟ قد يؤدي طلب السحب التالي إلى تعزيز الموجة التالية من الابتكار. إذاً، ماذا تنتظر؟ لنبدأ! 🚀
المشاريع | مناسبة لـ | الإرشادات |
---|---|---|
ميلفوس, ميلفوس-سدك-جو | مطورو Go | / |
ميلفوس, معرفة أين | مطورو CPP | / |
pymilvus, milvus-sdk-node, milvus-sdk-java | المطورون المهتمون باللغات الأخرى | المساهمة في PyMilvus PyMilvus |
ميلفوس-هيلم | المتحمسون لـ Kubernetes | / |
ميلفوس-دوكس، ميلفوس-أيو/المجتمع/المدونة | الكتّاب التقنيون | المساهمة في مستندات ميلفوس |
ميلفوس-إنسايت | مطورو الويب | / |
كلمة أخيرة
تقدم ميلفوس العديد من حزم تطوير البرمجيات - بايثون (PyMilvus) وجافا وجو وGo وNode.js - التيتجعل من السهل البدء في البناء. المساهمة في Milvus لا تتعلق فقط بالرموز البرمجية - بل تتعلق بالانضمام إلى مجتمع حيوي ومبتكر.
🚀مرحباً بكم في مجتمع مطوري ميلفوس وبرمجة سعيدة! نحن متشوقون لرؤية ما ستبتكره.
المزيد من القراءة
- إعداد بيئة تطوير ميلفوس الخاصة بك
- نشر ميلفوس
- تشغيل الاختبارات من النهاية إلى النهاية (E2E)
- إرسال الكود الخاص بك
- فرص المساهمة
- كلمة أخيرة
- المزيد من القراءة
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word