🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
  • Home
  • Blog
  • 如何在 Amazon EKS 上部署開放原始碼 Milvus 向量資料庫

如何在 Amazon EKS 上部署開放原始碼 Milvus 向量資料庫

  • Engineering
August 09, 2024
AWS

本篇文章最初發表於AWS 網站,經過翻譯、編輯,並經授權轉貼於此。

向量嵌入與向量資料庫概述

生成式人工智能 (GenAI) 的興起,尤其是大型語言模型(LLM) 的興起,大幅提升了向量資料庫的興趣,使其成為 GenAI 生態系統中不可或缺的元件。因此,向量資料庫正被越來越多的使用案例所採用。

IDC 報告預測,到 2025 年,將有超過 80% 的商業資料是非結構化的,以文字、影像、音訊和視訊等格式存在。要理解、處理、儲存和查詢這些大量的非結構化資料,是一項重大的挑戰。GenAI 和深度學習的常見做法是將非結構化資料轉換為向量嵌入,並儲存和索引至向量資料庫,例如MilvusZilliz Cloud(完全管理的 Milvus),以進行向量相似性或語意相似性搜尋。

向量嵌入到底是什麼?簡單來說,它們是浮點數在高維空間中的數值表示。兩個向量之間的距離表示它們的相關性:者越接近,彼此的相關性就越高,反之亦然。這表示相似向量對應相似的原始資料,這與傳統的關鍵字或精確搜尋不同。

How to perform a vector similarity search 如何執行向量相似性搜尋

圖 1:如何執行向量相似性搜尋

向量嵌入的儲存、索引和搜尋能力是向量資料庫的核心功能。目前,主流的向量資料庫分為兩大類。第一類是擴充現有的關聯式資料庫產品,例如 Amazon OpenSearch Service 的KNN外掛,以及 Amazon RDS forPostgreSQL的 pgvector 擴充。第二類是專門的向量資料庫產品,包括 Milvus、Zilliz Cloud (完全管理的 Milvus)、PineconeWeaviateQdrantChroma 等知名案例。

嵌入技術和向量資料庫在各種人工智能驅動的用例中都有廣泛的應用,包括影像相似性搜尋、視訊重複資料刪除與分析、自然語言處理、推薦系統、目標廣告、個人化搜尋、智慧型客戶服務和詐欺偵測。

Milvus是眾多向量資料庫中最受歡迎的開源選項之一。本篇文章將介紹 Milvus,並探討在 AWS EKS 上部署 Milvus 的實作。

Milvus 是什麼?

Milvus是一個高度靈活、可靠、快速的雲原生開源向量資料庫。它為向量相似性搜尋與 AI 應用程式提供動力,並致力於讓每個組織都能存取向量資料庫。Milvus 可以儲存、索引和管理由深度神經網路和其他機器學習 (ML) 模型所產生的十億以上向量嵌入。

Milvus 於 2019 年 10 月以開源 Apache License 2.0發布。它目前是LF AI & Data Foundation 下的畢業專案。在撰寫這篇部落格時,Milvus 的Docker pull下載量已超過5000 萬次,並被許多客戶使用,例如 NVIDIA、AT&T、IBM、eBay、Shopee 和 Walmart。

Milvus 主要功能

身為雲端原生向量資料庫,Milvus 擁有以下主要功能:

  • 十億級向量資料集的高效能與毫秒搜尋。

  • 多語言支援與工具鏈。

  • 橫向擴充能力和高可靠性,即使在系統中斷的情況下也是如此。

  • 混合搜尋,透過搭配標量篩選與向量相似性搜尋來達成。

Milvus 架構

Milvus 遵循資料流與控制流分離的原則。系統分為四個層級,如圖所示:

Milvus Architecture Milvus 架構

圖 2 Milvus 架構

  • 存取層:存取層由一組無狀態代理組成,是系統的前端層,也是使用者的終端。

  • 協調服務:協調服務會指派任務給工作節點。

  • 工作節點:工作節點是遵循協調器服務指示並執行使用者觸發的 DML/DDL 指令的蠢執行器。

  • 儲存:儲存設備負責資料持久化。它包括元儲存、日誌中介及物件儲存。

Milvus 部署選項

Milvus 支援三種執行模式:Milvus Lite、Standalone 和 Distributed

  • Milvus Lite是一個 Python 函式庫,可以匯入本機應用程式。作為 Milvus 的輕量級版本,它非常適合在 Jupyter Notebook 或資源有限的智慧型裝置上執行快速原型。

  • 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 資料庫叢集。

接下來,我們會提供使用 EKS 和其他服務部署 Milvus 叢集的逐步指導。

在 AWS EKS 上部署 Milvus

先決條件

我們將使用 AWS CLI 建立 EKS 叢集並部署 Milvus 資料庫。需要以下先決條件:

  • 已安裝 AWS CLI並配置適當權限的 PC/Mac 或 Amazon EC2 實例。如果您使用 Amazon Linux 2 或 Amazon Linux 2023,則預設會安裝 AWS CLI 工具。

  • 已安裝 EKS 工具,包括 Helm、Kubectl、eksctl 等。

  • 一個 Amazon S3 儲存桶。

  • 一個 Amazon MSK 實例。

建立 MSK 時的注意事項

  • Milvus 的最新穩定版本 (v2.3.13) 依賴於 Kafka 的autoCreateTopics 功能。因此在建立 MSK 時,我們需要使用自訂配置,並將auto.create.topics.enable 屬性從預設的false 改為true 。此外,為了增加 MSK 的訊息吞吐量,建議增加message.max.bytesreplica.fetch.max.bytes 的值。詳情請參閱自訂 MSK 配置
auto.create.topics.enable=true
message.max.bytes=10485880
replica.fetch.max.bytes=20971760
  • Milvus 不支援 MSK 的 IAM 角色認證。因此,在建立 MSK 時,請在安全設定中啟用SASL/SCRAM authentication 選項,並在 AWS Secrets Manager 中設定usernamepassword 。詳情請參閱使用 AWS Secrets Manager 進行登入憑證認證

Figure 3 Security settings enable SASL SCRAM authentication.png 圖 3 安全設定 啟用 SASL SCRAM 驗證.png

圖 3:安全性設定:啟用 SASL/SCRAM 驗證

  • 我們需要啟用從 EKS 叢集的安全群組或 IP 位址範圍存取 MSK 安全群組。

建立 EKS 叢集

创建 EKS 群集的方法有很多,例如通过控制台、CloudFormation、eksctl 等。本文章將介紹如何使用 eksctl 建立 EKS 叢集。

eksctl 是一個簡單的命令列工具,用於在 Amazon EKS 上建立和管理 Kubernetes 叢集。它提供了最快、最簡單的方式為 Amazon EKS 建立一個有節點的新群集。更多資訊請參閱 eksctl網站

  1. 首先,使用下列程式碼片段建立eks_cluster.yaml 檔案。將cluster-name 改為您的群集名稱,將region-code 改為您要建立群集的 AWS 區域,將private-subnet-idx 改為您的私有子網路。 注意:此組態檔會透過指定私有子網路,在現有的 VPC 中建立 EKS 群集。如果您要建立新的 VPC,請移除 VPC 和子網路設定,然後eksctl 會自動建立新的 VPC。
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
  1. 然後,執行eksctl 指令來建立 EKS 群集。
eksctl create cluster -f eks_cluster.yaml

此指令會建立下列資源:

  • 具有指定版本的 EKS 群集。

  • 一個包含三個 m6i.2xlarge EC2 實體的受管節點群組。

  • 一個IAM OIDC 身份提供者和一個名為aws-load-balancer-controller 的 ServiceAccount,我們稍後安裝AWS Load Balancer Controller 時會用到。

  • 一個命名空間milvus ,以及此命名空間中的一個 ServiceAccountmilvus-s3-access-sa 。稍後配置 S3 作為 Milvus 的物件儲存時將使用此命名空間。

    注意:為了簡單起見,這裡的milvus-s3-access-sa 被授予完整的 S3 存取權限。在生產部署中,建議遵循最小權限原則,僅授予用於 Milvus 的特定 S3 存儲桶的存取權限。

  • 多個附加元件,其中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
  1. 建立ebs-sc StorageClass,設定 GP3 為儲存類型,並將其設定為預設 StorageClass。Milvus 使用 etcd 作為其 Meta Storage,並需要此 StorageClass 來建立和管理 PVC。
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"}}}'
  1. 安裝 AWS Load Balancer Controller。我們稍後會在 Milvus 服務和 Attu Ingress 中使用此控制器,因此讓我們事先安裝。
  • 首先,新增eks-charts repo 並更新。
helm repo add eks https://aws.github.io/eks-charts
helm repo update
  • 接著,安裝 AWS Load Balancer Controller。將cluster-name 改為您的群集名稱。命名為aws-load-balancer-controller 的 ServiceAccount 已經在之前的步驟中建立 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 群集

Milvus 支援多種部署方法,例如 Operator 和 Helm。Operator 比較簡單,但 Helm 更直接、更靈活。在這個範例中,我們會使用 Helm 來部署 Milvus。

使用 Helm 部署 Milvus 時,您可以透過values.yaml 檔案自訂配置。按一下values.yaml檢視所有選項。預設情況下,Milvus 會在集群內建立 minio 和 pulsar,分別作為物件儲存空間和訊息儲存空間。我們將做一些設定變更,使其更適合生產。

  1. 首先,新增 Milvus Helm repo 並更新它。
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
  1. 使用下列程式碼片段建立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 授權 Milvus 存取 S3 (在本例中,它是milvus-s3-access-sa ,這是我們建立 EKS 叢集時所建立的)。確保將<region-code> 改為群集所在的 AWS 區域。將<bucket-name> 改為 S3 儲存桶的名稱,將<root-path> 改為 S3 儲存桶的前綴(此欄位可留空)。

第 2 節:將 MSK 設定為訊息儲存空間。以 MSK 的 SASL/SCRAM 認證類型對應的端點位址取代<broker-list> 。將<username><password> 改為 MSK 帳戶的使用者名稱和密碼。您可以從 MSK 客戶端資訊取得<broker-list> ,如下圖所示。

Figure 4 Configure MSK as the Message Storage of Milvus.png 圖 4 設定 MSK 為 Milvus 的訊息儲存空間.png

圖 4: 設定 MSK 為 Milvus 的訊息儲存空間

第 3 節:開放 Milvus 服務,並啟用群集外部的存取。Milvus 端點預設使用 ClusterIP 類型的服務,只能在 EKS 集群內存取。如果需要,您可以將其變更為 LoadBalancer 類型,以允許從 EKS 集群外部訪問。LoadBalancer 類型服務使用 Amazon NLB 作為負載平衡器。根據安全最佳實務,aws-load-balancer-scheme 在此預設設定為內部模式,這表示只允許內部網路存取 Milvus。點擊查看 NLB 配置說明

第 4 節:安裝並配置開放原始碼的 Milvus 管理工具Attu。它有直觀的圖形使用者介面,讓您輕鬆與 Milvus 互動。我們啟用 Attu,使用 AWS ALB 設定入口,並將其設定為internet-facing 類型,以便可以透過網際網路存取 Attu。點選此文件取得 ALB 設定指南。

第 5 節:啟用 Milvus 核心元件的 HA 部署。Milvus 包含多個獨立且解耦的元件。例如,協調器服務作為控制層,處理 Root、Query、Data 和 Index 元件的協調。存取層中的 Proxy 則作為資料庫存取端點。這些元件預設只有 1 個 pod 複製本。為了提高 Milvus 的可用性,部署這些服務元件的多個複本是特別必要的。

注意:Root、Query、Data 和 Index 協調器元件的多重複製部署需要啟用activeStandby 選項。

第 6 節:調整 Milvus 元件的資源分配,以滿足工作負載的需求。Milvus 網站也提供一個大小工具,可根據資料量、向量尺寸、索引類型等產生配置建議。它還可以一鍵生成 Helm 配置文件。以下配置是該工具針對 100 萬 1024 維向量和 HNSW 索引類型提出的建議。

  1. 使用 Helm 建立 Milvus (部署在命名空間milvus)。注意:您可以使用自訂名稱取代<demo>
helm install <demo> milvus/milvus -n milvus -f milvus_cluster.yaml
  1. 執行下列指令檢查部署狀態。
kubectl get deployment -n milvus

以下輸出顯示 Milvus 元件都是 AVAILABLE,且協調元件已啟用多重複製。

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

到目前為止,我們已成功部署 Milvus 向量資料庫。現在,我們可以透過端點存取 Milvus。Milvus 透過 Kubernetes 服務揭露端點。Attu 透過 Kubernetes Ingress 開啟端點。

存取 Milvus 端點

執行下列指令取得服務端點:

kubectl get svc -n milvus

您可以檢視數個服務。Milvus 支援兩個連接埠,連接埠19530 和連接埠9091

  • 連接埠19530 用於 gRPC 和 RESTful API。當您使用不同的 Milvus SDK 或 HTTP 用戶端連接到 Milvus 伺服器時,它是預設的連接埠。
  • 連接埠9091 是 Kubernetes 內的指標收集、pprof 剖析和健康探測的管理連接埠。

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 管理 Milvus

如前所述,我們已安裝 Attu 來管理 Milvus。執行下列指令來取得端點:

kubectl get ingress -n milvus

您可以看到一個名為demo-milvus-attu 的 Ingress ,其中ADDRESS 欄是存取 URL。

NAME            CLASS   HOSTS   ADDRESS                                     PORTS   AGE
demo-milvus-attu   <none>   *       k8s-attu-xxxx.us-west-2.elb.amazonaws.com   80      27s

在瀏覽器中打開 Ingress 位址,看到以下頁面。按一下Connect進行登入。

Figure 5 Log in to your Attu account.png 圖 5 登入您的 Attu 帳戶.png

圖 5:登入您的 Attu 帳戶

登入後,您可以透過 Attu 管理 Milvus 資料庫。

Figure 6 The Attu interface.png 圖 6 Attu 介面.png

圖 6: Attu 介面

測試 Milvus 向量資料庫

我們將使用Milvus範例程式碼來測試Milvus資料庫是否正常運作。首先,使用下列指令下載hello_milvus.py 範例程式碼:

wget https://raw.githubusercontent.com/milvus-io/pymilvus/master/examples/hello_milvus.py

修改範例程式碼中的 host 為 Milvus 服務端點。

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

如果系統返回以下結果,則表示 Milvus 運行正常。

=== 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,並提供在 AWS 上部署 Milvus 的指南,使用 Amazon EKS、S3、MSK 和 ELB 等管理服務來達到更高的彈性和可靠性。

作為各種 GenAI 系統的核心元件,特別是 Retrieval Augmented Generation (RAG),Milvus 支援並整合各種主流 GenAI 模型和框架,包括 Amazon Sagemaker、PyTorch、HuggingFace、LlamaIndex 和 LangChain。立即使用 Milvus 開始您的 GenAI 創新之旅!

參考資料

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

繼續閱讀