الشروع في العمل مع مجموعة ميلفوس العنقودية و K8s
مقدمة
Milvus هي قاعدة بيانات متجهات موزعة تهدف إلى تخزين وفهرسة وإدارة متجهات التضمين الضخمة. إن قدرتها على الفهرسة والبحث بكفاءة من خلال تريليونات من المتجهات تجعل من Milvus خيارًا مفضلاً لأعباء عمل الذكاء الاصطناعي والتعلم الآلي.
من ناحية أخرى، يتفوق Kubernetes (K8s) في إدارة التطبيقات المدمجة في حاويات وتوسيع نطاقها. فهو يوفر ميزات مثل التوسع التلقائي، والشفاء الذاتي، وموازنة التحميل، وهي ميزات ضرورية للحفاظ على التوافر والأداء العالي في بيئات الإنتاج.
لماذا نستخدمهما معاً؟
يمكن لـ K8s توسيع نطاق مجموعات Milvus تلقائيًا بناءً على عبء العمل. مع نمو بياناتك أو زيادة عدد الاستعلامات، يمكن لـ K8s تشغيل المزيد من مثيلات Milvus للتعامل مع الحمل، مما يضمن استمرار استجابة تطبيقاتك.
إحدى الميزات البارزة في K8s هي التوسعة الأفقية، مما يجعل توسيع مجموعة Milvus الخاصة بك أمرًا سهلاً. مع نمو مجموعة البيانات الخاصة بك، تستوعب K8s هذا النمو دون عناء، مما يجعلها حلاً مباشرًا وفعالًا.
بالإضافة إلى ذلك، فإن القدرة على التعامل مع الاستعلامات تتوسع أفقياً مع K8s. فمع زيادة حمل الاستعلام، يمكن ل K8s نشر المزيد من مثيلات Milvus للتعامل مع استعلامات البحث المتزايدة عن التشابه، مما يضمن استجابات منخفضة زمن الاستجابة حتى في ظل الأحمال الثقيلة.
المتطلبات الأساسية وإعداد K8s
المتطلبات الأساسية
Docker - تأكد من تثبيت Docker على نظامك.
Kubernetes - جهّز مجموعة Kubernetes العنقودية. يمكنك استخدام
minikube
للتطوير المحلي أو خدمة Kubernetes الخاصة بمزود خدمة سحابية لبيئات الإنتاج.Helm - قم بتثبيت Helm، وهو مدير حزم لـ Kubernetes، لمساعدتك في إدارة تطبيقات Kubernetes، يمكنك مراجعة وثائقنا لمعرفة كيفية القيام بذلك https://milvus.io/docs/install_cluster-helm.md
Kubectl - قم بتثبيت
kubectl
، وهي أداة سطر أوامر للتفاعل مع مجموعات Kubernetes، لنشر التطبيقات وفحص موارد المجموعة وإدارتها وعرض السجلات.
إعداد K8s
بعد تثبيت كل ما هو مطلوب لتشغيل مجموعة K8s، وإذا كنت تستخدم minikube
، فابدأ تشغيل مجموعتك باستخدام:
minikube start
تحقق من حالة مجموعة K8s الخاصة بك باستخدام:
kubectl cluster-info
نشر ميلفوس على K8s
في عملية النشر هذه، سنختار Milvus في وضع الكتلة للاستفادة من قدراته الموزعة الكاملة. سنستخدم Helm، لتبسيط عملية التثبيت.
1. أمر تثبيت Helm
helm install my-milvus milvus/milvus --set pulsar.enabled=false --set kafka.enabled=true
يقوم هذا الأمر بتثبيت Milvus على مجموعة K8s الخاصة بك مع تمكين Kafka وتعطيل Pulsar. يعمل Kafka كنظام مراسلة داخل Milvus، حيث يتعامل مع تدفق البيانات بين المكونات المختلفة. يؤدي تعطيل Pulsar وتمكين Kafka إلى تخصيص عملية النشر وفقًا لتفضيلات ومتطلبات المراسلة الخاصة بنا.
2. إعادة توجيه المنفذ
للوصول إلى ميلفوس من جهازك المحلي، قم بإنشاء منفذ لإعادة توجيه المنفذ: kubectl port-forward svc/my-milvus 27017:19530
.
يقوم هذا الأمر بتعيين المنفذ 19530
من خدمة Milvus svc/my-milvus
إلى نفس المنفذ على جهازك المحلي، مما يسمح لك بالاتصال بـ Milvus باستخدام أدوات محلية. إذا تركت المنفذ المحلي غير محدد (كما هو الحال في :19530
)، سيقوم K8s بتخصيص منفذ متاح، مما يجعله ديناميكيًا. تأكد من ملاحظة المنفذ المحلي المخصص إذا اخترت هذه الطريقة.
3. التحقق من النشر:
kubectl get pods
NAME READY STATUS RESTARTS AGE
my-milvus-datacoord-595b996bd4-zprpd 1/1 Running 0 85m
my-milvus-datanode-d9d555785-47nkt 1/1 Running 0 85m
my-milvus-etcd-0 1/1 Running 0 84m
my-milvus-etcd-1 1/1 Running 0 85m
my-milvus-etcd-2 1/1 Running 0 85m
my-milvus-indexcoord-65bc68968c-6jg6q 1/1 Running 0 85m
my-milvus-indexnode-54586f55d-z9vx4 1/1 Running 0 85m
my-milvus-kafka-0 1/1 Running 0 85m
my-milvus-kafka-1 1/1 Running 0 85m
my-milvus-kafka-2 1/1 Running 0 85m
my-milvus-minio-0 1/1 Running 0 96m
my-milvus-minio-1 1/1 Running 0 96m
my-milvus-minio-2 1/1 Running 0 96m
my-milvus-minio-3 1/1 Running 0 96m
my-milvus-proxy-76bb7d497f-sqwvd 1/1 Running 0 85m
my-milvus-querycoord-6f4c7b7598-b6twj 1/1 Running 0 85m
my-milvus-querynode-677bdf485b-ktc6m 1/1 Running 0 85m
my-milvus-rootcoord-7498fddfd8-v5zw8 1/1 Running 0 85m
my-milvus-zookeeper-0 1/1 Running 0 85m
my-milvus-zookeeper-1 1/1 Running 0 85m
my-milvus-zookeeper-2 1/1 Running 0 85m
يجب أن ترى قائمة بالقرون مشابهة للمخرجات أعلاه، وكلها في حالة التشغيل. يشير هذا إلى أن مجموعة ميلفوس الخاصة بك تعمل. على وجه التحديد، ابحث عن 1/1 تحت العمود READY
، مما يدل على أن كل كبسولة جاهزة تمامًا وتعمل. إذا لم تكن أي كبسولات في حالة التشغيل، فقد تحتاج إلى مزيد من التحقيق لضمان نشر ناجح.
مع نشر مجموعة Milvus الخاصة بك وتأكيد تشغيل جميع المكونات، فأنت الآن جاهز للمتابعة إلى استيعاب البيانات والفهرسة. سيتضمن ذلك الاتصال بمثيل Milvus الخاص بك، وإنشاء مجموعات، وإدراج ناقلات للبحث والاسترجاع.
استيعاب البيانات والفهرسة
للبدء في استيعاب وفهرسة البيانات في مجموعة ميلفوس الخاصة بنا، سنستخدم مجموعة أدوات تطوير البرمجيات pymilvus SDK. هناك خياران للتثبيت:
SDK الأساسي:
pip install pymilvus
لتضمين النصوص الغنية والنماذج المتقدمة:
pip install pymilvus[model]
وقت إدراج البيانات في مجموعتنا، سنستخدم pymilvus
، يمكنك إما تثبيت SDK فقط مع pip install pymilvus
أو إذا كنت ترغب في استخراج تضمينات النص الغني، يمكنك أيضًا استخدام PyMilvus Models
عن طريق التثبيت pip install pymilvus[model]
.
الاتصال وإنشاء مجموعة:
أولاً، قم بالاتصال بمثيل ميلفوس الخاص بك باستخدام المنفذ الذي قمت بإعادة توجيهه سابقاً. تأكد من تطابق URI مع المنفذ المحلي المعين من قبل K8s:
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://127.0.0.1:52070",
)
client.create_collection(collection_name="quick_setup", dimension=5)
تحدد المعلمة dimension=5
حجم المتجه لهذه المجموعة، وهو أمر ضروري لإمكانيات البحث عن المتجهات.
إدراج البيانات
إليك كيفية إدراج مجموعة أولية من البيانات، حيث يمثل كل متجه عنصرًا، ويضيف حقل اللون سمة وصفية:
data=[
{"id": 0, "vector": [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592], "color": "pink_8682"},
{"id": 1, "vector": [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], "color": "red_7025"},
{"id": 2, "vector": [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, 0.7894058910881185, 0.20785793220625592], "color": "orange_6781"},
{"id": 3, "vector": [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345], "color": "pink_9298"},
{"id": 4, "vector": [0.4452349528804562, -0.8757026943054742, 0.8220779437047674, 0.46406290649483184, 0.30337481143159106], "color": "red_4794"},
{"id": 5, "vector": [0.985825131989184, -0.8144651566660419, 0.6299267002202009, 0.1206906911183383, -0.1446277761879955], "color": "yellow_4222"},
{"id": 6, "vector": [0.8371977790571115, -0.015764369584852833, -0.31062937026679327, -0.562666951622192, -0.8984947637863987], "color": "red_9392"},
{"id": 7, "vector": [-0.33445148015177995, -0.2567135004164067, 0.8987539745369246, 0.9402995886420709, 0.5378064918413052], "color": "grey_8510"},
{"id": 8, "vector": [0.39524717779832685, 0.4000257286739164, -0.5890507376891594, -0.8650502298996872, -0.6140360785406336], "color": "white_9381"},
{"id": 9, "vector": [0.5718280481994695, 0.24070317428066512, -0.3737913482606834, -0.06726932177492717, -0.6980531615588608], "color": "purple_4976"}
]
res = client.insert(
collection_name="quick_setup",
data=data
)
print(res)
يفترض الرمز المقدم أنك قمت بإنشاء مجموعة بطريقة الإعداد السريع. كما هو موضح في الكود أعلاه,
يتم تنظيم البيانات المراد إدراجها في قائمة من القواميس، حيث يمثل كل قاموس سجل بيانات، يُطلق عليه اسم كيان.
ويحتوي كل قاموس على حقل غير معرّف بشكل منهجي يسمى اللون.
يحتوي كل قاموس على المفاتيح المقابلة لكل من الحقول المحددة مسبقًا والحقول الديناميكية.
إدراج المزيد من البيانات
colors = ["green", "blue", "yellow", "red", "black", "white", "purple", "pink", "orange", "brown", "grey"]
data = [ {
"id": i,
"vector": [ random.uniform(-1, 1) for _ in range(5) ],
"color": f"{random.choice(colors)}_{str(random.randint(1000, 9999))}"
} for i in range(1000) ]
res = client.insert(
collection_name="quick_setup",
data=data[10:]
)
print(res)
بحث التشابه
بعد ملء المجموعة، يمكنك إجراء بحث تشابه للعثور على متجهات قريبة من متجه الاستعلام. قيمة متغير query_vectors هي قائمة تحتوي على قائمة فرعية من المتجهات. تمثل القائمة الفرعية تضمين متجه من 5 أبعاد.
query_vectors = [
[0.041732933, 0.013779674, -0.027564144, -0.013061441, 0.009748648]
]
res = client.search(
collection_name="quick_setup", # target collection
data=query_vectors, # query vectors
limit=3, # number of returned entities
)
print(res)
يبحث هذا الاستعلام عن أفضل 3 متجهات الأكثر تشابهًا مع متجه الاستعلام، مما يوضح قدرات البحث القوية في Milvus.
إلغاء تثبيت ميلفوس من K8s
بمجرد الانتهاء من هذا البرنامج التعليمي، لا تتردد في إلغاء تثبيت Milvus من مجموعة K8s الخاصة بك باستخدام:helm uninstall my-milvus
.
سيؤدي هذا الأمر إلى إزالة جميع مكونات Milvus المنشورة في الإصدار my-milvus
، مما يؤدي إلى تحرير موارد المجموعة.
خاتمة
يُظهر نشر Milvus على مجموعة Kubernetes قابلية التوسع والمرونة في قواعد البيانات المتجهة في التعامل مع أعباء عمل الذكاء الاصطناعي والتعلم الآلي. من خلال هذا البرنامج التعليمي، تكون قد تعلمت أساسيات إعداد Milvus مع Helm، وإنشاء مجموعة، وإجراء عمليات استيعاب البيانات وعمليات البحث عن التشابه.
يجب أن يكون تثبيت Milvus على مجموعة Kubernetes مع Helm أمرًا بسيطًا ومباشرًا. للتعمق أكثر في توسيع نطاق مجموعات Milvus لمجموعات بيانات أكبر أو أعباء عمل أكثر كثافة، تقدم وثائقنا إرشادات مفصلة https://milvus.io/docs/scaleout.md
لا تتردد في التحقق من الكود على Github، وتحقق من Milvus، وجرّب تكوينات وحالات استخدام مختلفة، وشارك تجاربك مع المجتمع من خلال الانضمام إلى Discord الخاص بنا.
- مقدمة
- لماذا نستخدمهما معاً؟
- المتطلبات الأساسية وإعداد K8s
- استيعاب البيانات والفهرسة
- بحث التشابه
- إلغاء تثبيت ميلفوس من K8s
- خاتمة
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