كيفية نشر قاعدة بيانات Milvus Vector مفتوحة المصدر على Amazon EKS
نُشر هذا المنشور في الأصل على موقع AWS على الويب وتمت ترجمته وتحريره وإعادة نشره هنا بإذن.
نظرة عامة على تضمينات المتجهات وقواعد البيانات المتجهة
لقد عزز ظهور الذكاء الاصطناعي التوليدي (GenAI)، ولا سيما النماذج اللغوية الكبيرة(LLMs)، الاهتمام بقواعد البيانات المتجهة بشكل كبير، مما جعلها مكونًا أساسيًا في منظومة الذكاء الاصطناعي التوليدي. ونتيجة لذلك، يتم اعتماد قواعد البيانات المتجهة في حالات الاستخدام المتزايدة.
يتوقع تقرير شركة IDC أنه بحلول عام 2025، سيكون أكثر من 80% من بيانات الأعمال غير منظمة، وموجودة في تنسيقات مثل النصوص والصور والصوت ومقاطع الفيديو. يمثل فهم هذا الكم الهائل من البيانات غير المنظمة ومعالجتها وتخزينها والاستعلام عنها على نطاق واسع تحديًا كبيرًا. تتمثل الممارسة الشائعة في الذكاء الاصطناعي الجيني والتعلم العميق في تحويل البيانات غير المهيكلة إلى تضمينات متجهة وتخزينها وفهرستها في قاعدة بيانات متجهة مثل Milvus أو Zilliz Cloud (Milvus المدارة بالكامل) لعمليات البحث عن التشابه المتجه أو التشابه الدلالي.
ولكن ما هي بالضبط تضمينات المتجهات؟ ببساطة، هي تمثيلات عددية لأرقام الفاصلة العائمة في فضاء عالي الأبعاد. تشير المسافة بين متجهين إلى مدى ارتباطهما: فكلما كانت المسافة بين متجهين متقاربين، كلما كانا أكثر ارتباطًا ببعضهما البعض، والعكس صحيح. هذا يعني أن المتجهات المتشابهة تتوافق مع البيانات الأصلية المتشابهة، وهو ما يختلف عن عمليات البحث التقليدية بالكلمات الرئيسية أو البحث الدقيق.
كيفية إجراء بحث تشابه المتجهات
الشكل 1: كيفية إجراء بحث تشابه المتجهات
إن القدرة على تخزين وفهرسة والبحث في تضمينات المتجهات هي الوظيفة الأساسية لقواعد بيانات المتجهات. تنقسم قواعد البيانات المتجهة السائدة حاليًا إلى فئتين. الفئة الأولى توسع منتجات قواعد البيانات العلائقية الحالية، مثل خدمة Amazon OpenSearch Service مع المكون الإضافي KNN وAmazon RDS ل PostgreSQL مع امتداد pgvector. تتألف الفئة الثانية من منتجات قواعد البيانات المتجهة المتخصصة، بما في ذلك أمثلة معروفة مثل Milvus وZilliz Cloud (Milvus المدارة بالكامل) وP Pinecone وWeaviate وQdrant وChroma.
تتمتع تقنيات التضمين وقواعد البيانات المتجهة بتطبيقات واسعة النطاق عبر مختلف حالات الاستخدام القائمة على الذكاء الاصطناعي، بما في ذلك البحث عن تشابه الصور، وإلغاء تكرار الفيديو وتحليله، ومعالجة اللغة الطبيعية، وأنظمة التوصيات، والإعلانات المستهدفة، والبحث المخصص، وخدمة العملاء الذكية، واكتشاف الاحتيال.
Milvus هو أحد أكثر الخيارات مفتوحة المصدر شيوعًا من بين العديد من قواعد البيانات المتجهة. يقدم هذا المنشور Milvus ويستكشف ممارسة نشر Milvus على AWS EKS.
ما هو ميلفوس؟
Milvus هي قاعدة بيانات متجهية مفتوحة المصدر وموثوقة وسريعة للغاية ومفتوحة المصدر على السحابة. وهي تعمل على تشغيل تطبيقات البحث عن تشابه المتجهات والذكاء الاصطناعي وتسعى جاهدة لجعل قواعد بيانات المتجهات في متناول كل مؤسسة. يمكن ل Milvus تخزين وفهرسة وإدارة أكثر من مليار متجه تم إنشاؤها بواسطة الشبكات العصبية العميقة ونماذج التعلم الآلي الأخرى.
تم إصدار Milvus تحت رخصة أباتشي مفتوحة المصدر 2.0 في أكتوبر 2019. وهو حاليًا مشروع تخرج في إطار مؤسسة LF AI & Data Foundation. في وقت كتابة هذه المدونة، كانت Milvus قد وصلت إلى أكثر من 50 مليون عملية تنزيل من Docker draw وتم استخدامها من قبل العديد من العملاء، مثل NVIDIA و AT&T و IBM و eBay و Shopee و Walmart.
الميزات الرئيسية لـ Milvus
كقاعدة بيانات متجهة سحابية أصلية، يتميز ميلفوس بالميزات الرئيسية التالية:
أداء عالٍ وبحث في أجزاء من الثانية على مجموعات بيانات متجهات بمليار ثانية.
دعم متعدد اللغات وسلسلة أدوات.
قابلية التوسع الأفقي والموثوقية العالية حتى في حالة حدوث عطل.
بحث هجين يتحقق من خلال إقران التصفية القياسية بالبحث عن التشابه المتجه.
بنية ميلفوس
تتبع Milvus مبدأ الفصل بين تدفق البيانات وتدفق التحكم. ينقسم النظام إلى أربعة مستويات، كما هو موضح في الرسم البياني:
بنية ميلفوس
الشكل 2 بنية ميلفوس
طبقة الوصول: تتألف طبقة الوصول من مجموعة من الوكلاء عديمي الحالة وتعمل كطبقة أمامية للنظام ونقطة نهاية للمستخدمين.
خدمة المنسق: تقوم خدمة المنسق بتعيين المهام للعقد العاملة.
العقد العاملة: العقد العاملة هي عبارة عن منفّذات غبية تتبع التعليمات من خدمة المنسق وتنفذ أوامر DML/DDL التي يتم تشغيلها من قبل المستخدم.
التخزين: التخزين مسؤول عن ثبات البيانات. وهو يتألف من التخزين الوصفية ووسيط السجل وتخزين الكائنات.
خيارات نشر ميلفوس
يدعم ميلفوس ثلاثة أوضاع تشغيل: ميلفوس لايت، ومستقل، وموزع.
ميلفوس لايت هي مكتبة بايثون يمكن استيرادها إلى التطبيقات المحلية. وباعتبارها نسخة خفيفة الوزن من Milvus، فهي مثالية للنماذج الأولية السريعة في دفاتر Jupyter Notebooks أو التشغيل على الأجهزة الذكية ذات الموارد المحدودة.
Milvus Standalone هو عبارة عننشر خادم أحادي الجهاز. إذا كان لديك عبء عمل إنتاجي ولكنك تفضل عدم استخدام Kubernetes، فإن تشغيل Milvus Standalone على جهاز واحد بذاكرة كافية يعد خيارًا جيدًا.
يمكن نشرMilvus Distributed على مجموعات Kubernetes. وهو يدعم مجموعات بيانات أكبر، وتوافر أعلى، وقابلية أعلى للتوسع، وهو أكثر ملاءمة لبيئات الإنتاج.
تم تصميم Milvus منذ البداية لدعم Kubernetes، ويمكن نشره بسهولة على AWS. يمكننا استخدام خدمة Amazon Elastic Kubernetes Service (Amazon EKS) كخدمة Kubernetes مُدارة، وAmazon S3 كتخزين كائنات، وAmazon Managed Streaming for Apache Kafka (Amazon MSK) كتخزين الرسائل، وAmazon Elastic Load Balancing (Amazon ELB) كموازن تحميل لبناء مجموعة قواعد بيانات Milvus موثوقة ومرنة.
بعد ذلك، سنقدم إرشادات خطوة بخطوة حول نشر مجموعة Milvus باستخدام EKS والخدمات الأخرى.
نشر Milvus على AWS EKS
المتطلبات الأساسية
سنستخدم AWS CLI لإنشاء مجموعة EKS ونشر قاعدة بيانات Milvus. المتطلبات الأساسية التالية مطلوبة:
جهاز كمبيوتر / جهاز Mac أو مثيل Amazon EC2 مع تثبيت AWS CLI وتهيئته بالأذونات المناسبة. يتم تثبيت أدوات AWS CLI بشكل افتراضي إذا كنت تستخدم Amazon Linux 2 أو Amazon Linux 2023.
أدوات EKS مثبتة، بما في ذلك Helm و Kubectl و eksctl، إلخ.
دلو أمازون S3.
مثيل أمازون MSK.
اعتبارات عند إنشاء MSK
- يعتمد أحدث إصدار مستقر من ميلفوس (الإصدار 2.3.13) على خاصية
autoCreateTopics
الخاصة بكافكا. لذلك عند إنشاء MSK، نحتاج إلى استخدام تكوين مخصص وتغيير الخاصيةauto.create.topics.enable
من الخاصية الافتراضيةfalse
إلىtrue
. بالإضافة إلى ذلك، لزيادة إنتاجية الرسائل في MSK، يوصى بزيادة قيمmessage.max.bytes
وreplica.fetch.max.bytes
. راجع تكوينات MSK المخصصة للحصول على التفاصيل.
auto.create.topics.enable=true
message.max.bytes=10485880
replica.fetch.max.bytes=20971760
- لا يدعم Milvus المصادقة المستندة إلى دور MSK في MSK. لذلك، عند إنشاء MSK، قم بتمكين الخيار
SASL/SCRAM authentication
في تكوين الأمان، وقم بتكوينusername
وpassword
في مدير أسرار AWS. راجع مصادقة بيانات اعتماد تسجيل الدخول باستخدام AWS Secrets Manager للحصول على التفاصيل.
الشكل 3: إعدادات الأمان تمكين مصادقة SASL SCRAM.png
الشكل 3: إعدادات الأمان: تمكين مصادقة SASL/SCRAM
- نحن بحاجة إلى تمكين الوصول إلى مجموعة أمان MSK من مجموعة أمان مجموعة EKS العنقودية أو نطاق عناوين IP.
إنشاء مجموعة EKS
هناك العديد من الطرق لإنشاء مجموعة EKS، مثل عبر وحدة التحكم، CloudFormation، eksctl، إلخ. سيوضح هذا المنشور كيفية إنشاء مجموعة EKS باستخدام eksctl.
eksctl
هي أداة سطر أوامر بسيطة لإنشاء وإدارة مجموعات Kubernetes على Amazon EKS. يوفر أسرع وأسهل طريقة لإنشاء مجموعة جديدة مع عقد لأمازون EKS. راجع موقع eksctl على الويب لمزيد من المعلومات.
- أولاً، قم بإنشاء ملف
eks_cluster.yaml
باستخدام مقتطف الشفرة التالي. استبدلcluster-name
باسم المجموعة الخاصة بك، واستبدلregion-code
بمنطقة AWS حيث تريد إنشاء المجموعة واستبدلprivate-subnet-idx
بالشبكات الفرعية الخاصة بك. ملاحظة: يقوم ملف التكوين هذا بإنشاء مجموعة EKS في VPC موجودة عن طريق تحديد الشبكات الفرعية الخاصة. إذا كنت ترغب في إنشاء VPC جديد، فقم بإزالة تكوين VPC والشبكات الفرعية الخاصة بك، ثم سيقومeksctl
تلقائيًا بإنشاء واحدة جديدة.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: <cluster-name>
region: <region-code>
version: "1.26"
iam:
withOIDC: true
serviceAccounts:
- metadata:
name: aws-load-balancer-controller
namespace: kube-system
wellKnownPolicies:
awsLoadBalancerController: true
- metadata:
name: milvus-s3-access-sa
# if no namespace is set, "default" will be used;
# the namespace will be created if it doesn't exist already
namespace: milvus
labels: {aws-usage: "milvus"}
attachPolicyARNs:
- "arn:aws:iam::aws:policy/AmazonS3FullAccess"
# Use existed VPC to create EKS.
# If you don't config vpc subnets, eksctl will automatically create a brand new VPC
vpc:
subnets:
private:
us-west-2a: { id: <private-subnet-id1> }
us-west-2b: { id: <private-subnet-id2> }
us-west-2c: { id: <private-subnet-id3> }
managedNodeGroups:
- name: ng-1-milvus
labels: { role: milvus }
instanceType: m6i.2xlarge
desiredCapacity: 3
privateNetworking: true
addons:
- name: vpc-cni # no version is specified so it deploys the default version
attachPolicyARNs:
- arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
- name: coredns
version: latest # auto discovers the latest available
- name: kube-proxy
version: latest
- name: aws-ebs-csi-driver
wellKnownPolicies: # add IAM and service account
ebsCSIController: true
- بعد ذلك، قم بتشغيل الأمر
eksctl
لإنشاء مجموعة EKS.
eksctl create cluster -f eks_cluster.yaml
سيقوم هذا الأمر بإنشاء الموارد التالية:
مجموعة عقدة EKS بالإصدار المحدد.
مجموعة عُقَد مُدارة مع ثلاث مثيلات EC2 كبيرة m6i.2xlarge.
موفر هوية IAM OIDC وحساب خدمة يسمى
aws-load-balancer-controller
، والذي سنستخدمه لاحقًا عند تثبيت وحدة تحكم AWS Load Balancer Controller.مساحة اسم
milvus
وحساب خدمةmilvus-s3-access-sa
ضمن مساحة الاسم هذه. سيتم استخدام مساحة الاسم هذه لاحقًا عند تكوين S3 كمخزن كائنات لـ Milvus.ملاحظة: للتبسيط، يتم منح
milvus-s3-access-sa
هنا أذونات وصول S3 كاملة إلى S3. في عمليات نشر الإنتاج، يوصى باتباع مبدأ الامتيازات الأقل ومنح حق الوصول إلى دلو S3 المحدد المستخدم لـ Milvus فقط.إضافات متعددة، حيث
vpc-cni
،coredns
،kube-proxy
هي إضافات أساسية مطلوبة من قبل EKS.aws-ebs-csi-driver
هو برنامج تشغيل AWS EBS CSI الذي يسمح لمجموعات EKS بإدارة دورة حياة وحدات تخزين Amazon EBS.
الآن، نحتاج فقط إلى انتظار اكتمال إنشاء المجموعة.
انتظر حتى يكتمل إنشاء المجموعة. أثناء عملية إنشاء المجموعة، سيتم إنشاء الملف kubeconfig
أو تحديثه تلقائيًا. يمكنك أيضًا تحديثه يدويًا عن طريق تشغيل الأمر التالي. تأكد من استبدال region-code
بمنطقة AWS حيث يتم إنشاء الكتلة الخاصة بك، واستبدال cluster-name
باسم الكتلة الخاصة بك.
aws eks update-kubeconfig --region <region-code> --name <cluster-name>
بمجرد إنشاء المجموعة، يمكنك عرض العقد عن طريق تشغيل:
kubectl get nodes -A -o wide
- قم بإنشاء
ebs-sc
StorageClass تم تكوينه باستخدام GP3 كنوع التخزين، وقم بتعيينه كنوع التخزين الافتراضي. يستخدم Milvus موقع etcd كتخزين تعريفي ويحتاج إلى فئة التخزين هذه لإنشاء وإدارة PVCs.
cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-sc
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
EOF
بعد ذلك، قم بتعيين gp2
StorageClass الأصلي إلى غير افتراضي:
kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
- تثبيت وحدة تحكم AWS Load Balancer Controller. سنستخدم وحدة التحكم هذه لاحقًا لخدمة Milvus وخدمة Attu Ingress، لذا دعنا نثبتها مسبقًا.
- أولاً، قم بإضافة الريبو
eks-charts
وتحديثه.
helm repo add eks https://aws.github.io/eks-charts
helm repo update
- بعد ذلك، قم بتثبيت وحدة تحكم AWS Load Balancer Controller. استبدل
cluster-name
باسم مجموعتك. تم إنشاء حساب الخدمة المسمىaws-load-balancer-controller
بالفعل عندما أنشأنا مجموعة EKS في الخطوات السابقة.
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=<cluster-name> \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
- تحقق مما إذا تم تثبيت وحدة التحكم بنجاح.
kubectl get deployment -n kube-system aws-load-balancer-controller
- يجب أن يبدو الناتج كما يلي:
NAME READY UP-TO-DATE AVAILABLE AGE
aws-load-balancer-controller 2/2 2 2 12m
نشر مجموعة ميلفوس العنقودية
يدعم Milvus طرق نشر متعددة، مثل المشغل و Helm. المشغل أبسط، لكن Helm أكثر مباشرة ومرونة. سنستخدم Helm لنشر Milvus في هذا المثال.
عند نشر Milvus باستخدام Helm، يمكنك تخصيص التكوين عبر الملف values.yaml
. انقر على values.yaml لعرض جميع الخيارات. بشكل افتراضي، يقوم Milvus بإنشاء مينيو وبولسار داخل الكتلة كتخزين الكائنات وتخزين الرسائل، على التوالي. سنقوم بإجراء بعض التغييرات في التكوين لجعلها أكثر ملاءمة للإنتاج.
- أولاً، قم بإضافة ريبو Milvus Helm وتحديثه.
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
- قم بإنشاء ملف
milvus_cluster.yaml
مع مقتطف الشفرة التالي. يقوم هذا المقتطف البرمجي بتخصيص تكوين ملف Milvus، مثل تكوين Amazon S3 كمخزن للكائنات و Amazon MSK كقائمة انتظار للرسائل. سنقدم توضيحات مفصلة وإرشادات التكوين لاحقًا.
#####################################
# Section 1
#
# Configure S3 as the Object Storage
#####################################
# Service account
# - this service account are used by External S3 access
serviceAccount:
create: false
name: milvus-s3-access-sa
# Close in-cluster minio
minio:
enabled: false
# External S3
# - these configs are only used when `externalS3.enabled` is true
externalS3:
enabled: true
host: "s3.<region-code>.amazonaws.com"
port: "443"
useSSL: true
bucketName: "<bucket-name>"
rootPath: "<root-path>"
useIAM: true
cloudProvider: "aws"
iamEndpoint: ""
#####################################
# Section 2
#
# Configure MSK as the Message Storage
#####################################
# Close in-cluster pulsar
pulsar:
enabled: false
# External kafka
# - these configs are only used when `externalKafka.enabled` is true
externalKafka:
enabled: true
brokerList: "<broker-list>"
securityProtocol: SASL_SSL
sasl:
mechanisms: SCRAM-SHA-512
username: "<username>"
password: "<password>"
#####################################
# Section 3
#
# Expose the Milvus service to be accessed from outside the cluster (LoadBalancer service).
# or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
#####################################
service:
type: LoadBalancer
port: 19530
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: external #AWS Load Balancer Controller fulfills services that has this annotation
service.beta.kubernetes.io/aws-load-balancer-name : milvus-service #User defined name given to AWS Network Load Balancer
service.beta.kubernetes.io/aws-load-balancer-scheme: internal # internal or internet-facing, later allowing for public access via internet
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip #The Pod IPs should be used as the target IPs (rather than the node IPs)
#####################################
# Section 4
#
# Installing Attu the Milvus management GUI
#####################################
attu:
enabled: true
name: attu
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: alb # Annotation: set ALB ingress type
alb.ingress.kubernetes.io/scheme: internet-facing #Places the load balancer on public subnets
alb.ingress.kubernetes.io/target-type: ip #The Pod IPs should be used as the target IPs (rather than the node IPs)
alb.ingress.kubernetes.io/group.name: attu # Groups multiple Ingress resources
hosts:
-
#####################################
# Section 5
#
# HA deployment of Milvus Core Components
#####################################
rootCoordinator:
replicas: 2
activeStandby:
enabled: true # Enable active-standby when you set multiple replicas for root coordinator
resources:
limits:
cpu: 1
memory: 2Gi
indexCoordinator:
replicas: 2
activeStandby:
enabled: true # Enable active-standby when you set multiple replicas for index coordinator
resources:
limits:
cpu: "0.5"
memory: 0.5Gi
queryCoordinator:
replicas: 2
activeStandby:
enabled: true # Enable active-standby when you set multiple replicas for query coordinator
resources:
limits:
cpu: "0.5"
memory: 0.5Gi
dataCoordinator:
replicas: 2
activeStandby:
enabled: true # Enable active-standby when you set multiple replicas for data coordinator
resources:
limits:
cpu: "0.5"
memory: 0.5Gi
proxy:
replicas: 2
resources:
limits:
cpu: 1
memory: 4Gi
#####################################
# Section 6
#
# Milvus Resource Allocation
#####################################
queryNode:
replicas: 1
resources:
limits:
cpu: 2
memory: 8Gi
dataNode:
replicas: 1
resources:
limits:
cpu: 1
memory: 4Gi
indexNode:
replicas: 1
resources:
limits:
cpu: 4
memory: 8Gi
يحتوي الكود على ستة أقسام. اتبع التعليمات التالية لتغيير التكوينات المقابلة.
القسم 1: تكوين S3 كمخزن للكائنات. يمنح حساب الخدمة (ServiceAccount) ميلفوس حق الوصول إلى S3 (في هذه الحالة، هو milvus-s3-access-sa
، والذي تم إنشاؤه عندما أنشأنا مجموعة EKS). تأكد من استبدال <region-code>
بمنطقة AWS حيث توجد مجموعتك. استبدل <bucket-name>
باسم دلو S3 الخاص بك و <root-path>
بالبادئة الخاصة بدلو S3 (يمكن ترك هذا الحقل فارغًا).
القسم 2: تكوين MSK كمخزن رسائل. استبدل <broker-list>
بعناوين نقطة النهاية المطابقة لنوع مصادقة SASL/SCRAM لـ MSK. استبدل <username>
و <password>
باسم المستخدم وكلمة المرور لحساب MSK. يمكنك الحصول على <broker-list>
من معلومات عميل MSK، كما هو موضح في الصورة أدناه.
الشكل 4: تكوين MSK كمخزن رسائل لـ Milvus.png
الشكل 4: تكوين MSK كمخزن للرسائل في ملفوس
القسم 3: فضح خدمة ميلفوس وتمكين الوصول من خارج المجموعة. تستخدم نقطة نهاية ميلفوس خدمة من نوع ClusterIP بشكل افتراضي، والتي لا يمكن الوصول إليها إلا داخل مجموعة EKS. إذا لزم الأمر، يمكنك تغييرها إلى نوع LoadBalancer للسماح بالوصول من خارج مجموعة EKS. تستخدم خدمة نوع LoadBalancer من نوع LoadBalancer خدمة Amazon NLB كموازن تحميل. وفقًا لأفضل ممارسات الأمان، يتم تكوين aws-load-balancer-scheme
كوضع داخلي افتراضيًا هنا، مما يعني أنه لا يُسمح إلا بالوصول إلى الإنترانت إلى Milvus. انقر لعرض إرشادات تكوين NLB.
القسم 4: قم بتثبيت وتكوين Attu، وهي أداة إدارة ميلفوس مفتوحة المصدر. تحتوي على واجهة مستخدم رسومية بديهية تتيح لك التفاعل بسهولة مع ميلفوس. نقوم بتمكين Attu، وتكوين الدخول باستخدام AWS ALB، وتعيينه على internet-facing
بحيث يمكن الوصول إلى Attu عبر الإنترنت. انقر على هذا المستند للحصول على دليل تكوين ALB.
القسم 5: تمكين النشر HA لمكونات ميلفوس الأساسية. يحتوي Milvus على مكونات متعددة مستقلة ومنفصلة. على سبيل المثال، تعمل خدمة المنسق كطبقة التحكم، وتتعامل مع التنسيق لمكونات الجذر والاستعلام والبيانات والفهرس. يعمل الوكيل في طبقة الوصول كنقطة نهاية الوصول إلى قاعدة البيانات. هذه المكونات الافتراضية لنسخة متماثلة واحدة فقط. يعد نشر نسخ متماثلة متعددة لمكونات الخدمة هذه ضروريًا بشكل خاص لتحسين توافر Milvus.
ملاحظة: يتطلب النشر متعدد النسخ المتماثلة لمكونات منسق الجذر والاستعلام والبيانات والفهرس تمكين الخيار activeStandby
.
القسم 6: ضبط تخصيص الموارد لمكونات ملفوس لتلبية متطلبات أعباء العمل الخاصة بك. يوفر موقع Milvus الإلكتروني أيضًا أداة تحجيم لتوليد اقتراحات تهيئة استنادًا إلى حجم البيانات وأبعاد المتجهات وأنواع الفهارس، إلخ. ويمكنه أيضًا إنشاء ملف تكوين Helm بنقرة واحدة فقط. التكوين التالي هو الاقتراح الذي قدمته الأداة لمليون و1024 متجه بأبعاد 1 مليون متجه ونوع فهرس HNSW.
- استخدم Helm لإنشاء Milvus (تم نشره في مساحة الاسم
milvus
). ملاحظة: يمكنك استبدال<demo>
باسم مخصص.
helm install <demo> milvus/milvus -n milvus -f milvus_cluster.yaml
- قم بتشغيل الأمر التالي للتحقق من حالة النشر.
kubectl get deployment -n milvus
يوضح الإخراج التالي أن مكونات Milvus كلها متوفرة، ومكونات التنسيق لها نسخ متماثلة متعددة ممكّنة.
NAME READY UP-TO-DATE AVAILABLE AGE
demo-milvus-attu 1/1 1 1 5m27s
demo-milvus-datacoord 2/2 2 2 5m27s
demo-milvus-datanode 1/1 1 1 5m27s
demo-milvus-indexcoord 2/2 2 2 5m27s
demo-milvus-indexnode 1/1 1 1 5m27s
demo-milvus-proxy 2/2 2 2 5m27s
demo-milvus-querycoord 2/2 2 2 5m27s
demo-milvus-querynode 1/1 1 1 5m27s
demo-milvus-rootcoord 2/2 2 2 5m27s
الوصول إلى ميلفوس وإدارته
لقد نجحنا حتى الآن في نشر قاعدة بيانات ميلفوس المتجهة. والآن، يمكننا الوصول إلى ميلفوس من خلال نقاط النهاية. يعرض Milvus نقاط النهاية عبر خدمات Kubernetes. يعرض Attu نقاط النهاية عبر Kubernetes Ingress.
الوصول إلى نقاط نهاية ميلفوس
قم بتشغيل الأمر التالي للحصول على نقاط نهاية الخدمة:
kubectl get svc -n milvus
يمكنك عرض العديد من الخدمات. يدعم Milvus منفذين، المنفذ 19530
والمنفذ 9091
:
- المنفذ
19530
مخصص لـ gRPC و RESTful API. وهو المنفذ الافتراضي عند الاتصال بخادم Milvus باستخدام حزم Milvus SDKs أو عملاء HTTP مختلفين. - المنفذ
9091
هو منفذ إدارة لجمع المقاييس، وتوصيف pprof، واختبارات الصحة داخل Kubernetes.
توفر خدمة demo-milvus
نقطة نهاية الوصول إلى قاعدة البيانات، والتي تُستخدم لإنشاء اتصال من العملاء. ويستخدم NLB كموازن تحميل الخدمة. يمكنك الحصول على نقطة نهاية الخدمة من العمود EXTERNAL-IP
.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demo-etcd ClusterIP 172.20.103.138 <none> 2379/TCP,2380/TCP 62m
demo-etcd-headless ClusterIP None <none> 2379/TCP,2380/TCP 62m
demo-milvus LoadBalancer 172.20.219.33 milvus-nlb-xxxx.elb.us-west-2.amazonaws.com 19530:31201/TCP,9091:31088/TCP 62m
demo-milvus-datacoord ClusterIP 172.20.214.106 <none> 13333/TCP,9091/TCP 62m
demo-milvus-datanode ClusterIP None <none> 9091/TCP 62m
demo-milvus-indexcoord ClusterIP 172.20.106.51 <none> 31000/TCP,9091/TCP 62m
demo-milvus-indexnode ClusterIP None <none> 9091/TCP 62m
demo-milvus-querycoord ClusterIP 172.20.136.213 <none> 19531/TCP,9091/TCP 62m
demo-milvus-querynode ClusterIP None <none> 9091/TCP 62m
demo-milvus-rootcoord ClusterIP 172.20.173.98 <none> 53100/TCP,9091/TCP 62m
إدارة ميلفوس باستخدام أتو
كما هو موضح من قبل، قمنا بتثبيت Attu لإدارة ميلفوس. قم بتشغيل الأمر التالي للحصول على نقطة النهاية:
kubectl get ingress -n milvus
يمكنك رؤية مدخل يسمى demo-milvus-attu
، حيث العمود ADDRESS
هو عنوان URL الخاص بالوصول.
NAME CLASS HOSTS ADDRESS PORTS AGE
demo-milvus-attu <none> * k8s-attu-xxxx.us-west-2.elb.amazonaws.com 80 27s
افتح عنوان الدخول في المتصفح وشاهد الصفحة التالية. انقر على اتصال لتسجيل الدخول.
الشكل 5 تسجيل الدخول إلى حساب أتو الخاص بك.png
الشكل 5: تسجيل الدخول إلى حساب أتو الخاص بك
بعد تسجيل الدخول، يمكنك إدارة قواعد بيانات ملفوس من خلال أتو.
الشكل 6: واجهة أتو. png
الشكل 6: واجهة أتو
اختبار قاعدة بيانات ميلفوس المتجهة
سنستخدم كود مثال ميلفوس لاختبار ما إذا كانت قاعدة بيانات ميلفوس تعمل بشكل صحيح. أولاً، قم بتحميل كود المثال hello_milvus.py
باستخدام الأمر التالي:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/master/examples/hello_milvus.py
قم بتعديل المضيف في كود المثال إلى نقطة نهاية خدمة ميلفوس.
print(fmt.format("start connecting to Milvus"))
connections.connect("default", host="milvus-nlb-xxx.elb.us-west-2.amazonaws.com", port="19530")
قم بتشغيل الكود:
python3 hello_milvus.py
إذا أرجع النظام النتيجة التالية، فهذا يشير إلى أن ميلفوس يعمل بشكل طبيعي.
=== start connecting to Milvus ===
Does collection hello_milvus exist in Milvus: False
=== Create collection `hello_milvus` ===
=== Start inserting entities ===
Number of entities in Milvus: 3000
=== Start Creating index IVF_FLAT ===
=== Start loading ===
الخاتمة
يقدم هذا المنشور Milvus، إحدى أكثر قواعد البيانات المتجهة مفتوحة المصدر شيوعًا، ويوفر دليلًا حول نشر Milvus على AWS باستخدام الخدمات المدارة مثل Amazon EKS و S3 و MSK و ELB لتحقيق مرونة وموثوقية أكبر.
كمكون أساسي لأنظمة GenAI المختلفة، لا سيما الجيل المعزز للاسترجاع (RAG)، يدعم Milvus ويتكامل مع مجموعة متنوعة من نماذج وأطر عمل GenAI السائدة، بما في ذلك Amazon Sagemaker وPyTorch وPyTorch و HuggingFace وLlamaIndex وLangChain. ابدأ رحلة ابتكار GenAI مع Milvus اليوم!
المراجع
- نظرة عامة على تضمينات المتجهات وقواعد البيانات المتجهة
- ما هو ميلفوس؟
- نشر Milvus على AWS EKS
- اختبار قاعدة بيانات ميلفوس المتجهة
- الخاتمة
- المراجع
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