46.6kデモを予約するログイン無料で始める

Milvus Quickstart:五分間だけでMilvus ベクトルデータベースをインストール

Milvusベクトルデータベースがサポートしている展開方式は、スタンドアロンモードとクラスターモードの2つがあります。

ようこそ、Vector Database 101へ。  前回のチュートリアルでは、Milvusの概要と歴史、そしてMilvus 1.xとMilvus 2.xの主な違いを簡単に説明しました。また、Milvus 2.xのアーキテクチャを一通り目を通し、Milvusのアーキテクチャがどのようにベクトルデータベースの必要な機能をすべて実現しているかを解説しました。  まだ前回のチュートリアル(非構造化データ、ベクトルデータベース、Milvusの概要)を読んでいない方は、ぜひ読んでみてください。既に読んでいたなら、尚更素晴らしいです。それでは、Milvusを始めましょう。  このチュートリアルでは、異なる展開方法を学び、初めてのベクトルデータベースをインストールするために、ステップバイステップのガイドを提供します。


では、始めましょう

Milvusは、以下の2つの展開方式を提供しています:スタンドアロンとクラスター。スタンドアロンモードでは、コーディネータ、ワーカーノード、フォワードプロキシなどのすべてのノードがシングルインスタンスとして展開されます。永続的なデータとメタデータには、それぞれMinIOとetcdを利用します。将来のリリースでは、これら2つのサードパーティ依存関係に頼らず、単一プロセスですべて実行できるようにする予定です。

クラスター版は、完全な機能を備えたMilvusです。8つのマイクロサービスコンポーネントに隔離したインスタンス/ポッドに加えて、MinIO、etcd、Pulsar(ログブローカーとして機能し、ログの公開/購読サービスを提供)という3つのサードパーティ依存関係も含まれています。まだ Milvus の概要(前回のチュートリアル)を確認していない場合は、ぜひご覧になってください。各サードパーティ依存関係の用途と、Milvus クラスタに含めた理由を理解するのに大変役立ちます。


Milvusスタンドアロンのインストール(Docker Compose)

Milvus スタンドアロンは、非常に簡単にインストールできるように設計されています。このセクションでは、docker-compose を使用して Milvus をインストールする方法を説明します。推奨される前提条件については、Milvus のドキュメントページをご覧ください。 まず、スタンドアロンインストールに必要な docker-compose.yml 配置ファイルをダウンロードしましょう。Debian ベースの Linux (Ubuntu を含む) を使用している場合は、以下のコマンドを実行してください。

wget https://github.com/milvus-io/milvus/releases/download/v2.4.12/milvus-standalone-docker-compose.yml -O docker-compose.yml
sudo docker compose up -d
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.111.133, 185.199.109.133, ...
    Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1303 (1.3K) [application/octet-stream]
    Saving to: docker-compose.yml
    docker-compose.yml  100%[===================>]   1.27K  --.-KB/s    in 0s
    2022-06-29 13:58:49 (113 MB/s) - docker-compose.yml saved [1303/1303]

MacOS を使用している場合は、最初に Docker Desktop をインストールする必要があります。以下のように brew を使用することをお勧めします:

brew install --cask docker

その後、以下のコマンドを実行してください:

curl https://github.com/milvus-io/milvus/releases/download/v2.0.2/milvus-standalone-docker-compose.yml -o docker-compose.yml

準備が整ったら、以下のコマンドで Milvus スタンドアロンインスタンスを起動できます:

docker-compose up -d

Docker Compose は現在 Docker CLI に統合されています。次のようにdocker compose upを試してください:

Creating milvus-etcd  ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done

次のコマンドで、コンテナのステータスを確認できます:

$ docker ps -a
    CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS                    PORTS                      NAMES
    711d54ab15c7   milvusdb/milvus:v2.0.2                     "/tini -- milvus run…"   42 seconds ago   Up 40 seconds             0.0.0.0:19530->19530/tcp   milvus-standalone
    0d85f4927864   minio/minio:RELEASE.2020-12-03T00-03-10Z   "/usr/bin/docker-ent…"   42 seconds ago   Up 40 seconds (healthy)   9000/tcp                   milvus-minio
    99de39278b35   quay.io/coreos/etcd:v3.5.0                 "etcd -advertise-cli…"   42 seconds ago   Up 40 seconds             2379-2380/tcp              milvus-etcd

以下は、各コンテナの役割の簡単な説明です。  milvus-standalone: 単一マシン上で機能するようにコンパイル/圧縮されたバージョンのMilvusです。  Milvus スタンドアロンを停止するには、以下のコマンドを実行してください:

$ docker-compose down

これで Milvus スタンドアロンの設定は完了です。簡単でしょう?

Milvus standalone (apt)

また、Debianベースの展開に向けて、便利な apt パッケージも提供しています。以下のコマンドを実行すれば良いです:

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:milvusdb/milvus
$ sudo apt update
$ sudo apt install milvus

これで完了です。実行中のサービスの状態を確認するには、以下のコマンドを使用できます:

$ sudo systemctl status milvus
$ sudo systemctl status milvus-etcd
$ sudo systemctl status milvus-minio

Milvusクラスター

前回のチュートリアルから、Milvusは主に以下の4つのコンポーネントで構成されていることがわかりました。それはそれぞれ、アクセスレイヤー、コーディネーターサービス、ワーカーノード、オブジェクトストレージです。リクエストはアクセスレイヤー内のプロキシクラスターに送信され、そこからコーディネーターレイヤーまたはベクトルデータ用のストリーミングサービスに転送されます。コーディネーターサービス内のステートフルなコーディネーターノードは、すべてのステートレスなワーカーノードを管理・制御し、容易な水平スケーリングを実現します。オブジェクトストレージは、S3や「S3ライク」のストレージレイヤーを通じて行われ、Milvusはクラウドおよびオンプレミスの環境でMinIOを使用して動作します。  Milvusの残りのサードパーティ依存関係であるPulsar/Kafkaおよびetcdは、どちらも分散型でクラウドネイティブなツールであり、Milvus全体をオーケストレーションエンジンとしてKubernetes上で実行することが可能です。ほぼすべての分散型アプリケーションに対して、Kubernetesを使用するのは最適な選択と言えるのは、アプリケーションの展開、維持およびスケーリングを独創的なサポートを提供しているからです。Helmを通じて、MilvusをKubernetesアプリケーションとして展開することをお勧めします:

% helm repo add milvus https://milvus-io.github.io/milvus-helm/
"milvus" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "milvus" chart repository
Update Complete. Happy Helming

これで依存関係の準備が整いましたので、Milvus(クラスター)をインストールしてみましょう。

% helm install my-release milvus/milvus
    W0629 16:01:00.674407   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.676536   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.678594   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.680671   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.808448   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.809339   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.809344   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    W0629 16:01:00.809594   21803 warnings.go:70 policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
    NAME: my-release
    LAST DEPLOYED: Wed Jun 29 16:01:00 2022
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None

インストールが完了すると、kubectlを使用して起動中のポッドを確認できます:

$ kubectl get pods
    NAME                                             READY  STATUS   RESTARTS  AGE
    my-release-etcd-0                                1/1    Running   0        2m23s
    my-release-etcd-1                                1/1    Running   0        2m23s
    my-release-etcd-2                                1/1    Running   0        2m23s
    my-release-milvus-datacoord-6fd4bd885c-gkzwx     1/1    Running   0        2m23s
    my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        2m23s
    my-release-milvus-indexcoord-5bfcf6bdd8-nmh5l    1/1    Running   0        2m23s
    my-release-milvus-indexnode-5c5f7b5bd9-l8hjg     1/1    Running   0        2m24s
    my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        2m24s
    my-release-milvus-querycoord-579cd79455-xht5n    1/1    Running   0        2m24s
    my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        2m24s
    my-release-milvus-rootcoord-7fb9488465-dmbbj     1/1    Running   0        2m23s
    my-release-minio-0                               1/1    Running   0        2m23s
    my-release-minio-1                               1/1    Running   0        2m23s
    my-release-minio-2                               1/1    Running   0        2m23s
    my-release-minio-3                               1/1    Running   0        2m23s
    my-release-pulsar-autorecovery-86f5dbdf77-lchpc  1/1    Running   0        2m24s
    my-release-pulsar-bookkeeper-0                   1/1    Running   0        2m23s
    my-release-pulsar-bookkeeper-1                   1/1    Running   0        98s
    my-release-pulsar-broker-556ff89d4c-2m29m        1/1    Running   0        2m23s
    my-release-pulsar-proxy-6fbd75db75-nhg4v         1/1    Running   0        2m23s
    my-release-pulsar-zookeeper-0                    1/1    Running   0        2m23s
    my-release-pulsar-zookeeper-metadata-98zbr       1/1   Completed  0        2m24s

これで完了です。Milvusがオンプレミスのクラスターに直接インストールされました。次回のチュートリアルでは、Milvus内でコレクションを作成し、埋め込みデータの挿入とクエリを実行する方法について解説します。 クラウドインフラ上でMilvusを実行することに興味がある場合は、AWS MarketplaceでMilvusスタンドアロンをご覧ください。

まとめ

今回のチュートリアルでは、Milvusスタンドアロン(docker-composeを使用)とMilvusクラスター(helmを使用)のインストール方法を学びました。スタンドアロン版はテスト用途に適しており、クラスター版は内部クラスターやオンプレミス展開に適しています。  次回のチュートリアルでは、Milvusの基本操作を学びます。具体的には、Milvusサーバーへの接続、コレクション(関係データベースでいうと、テーブルに相当)の作成、埋め込みベクトルデータの挿入、ベクトル検索の実行方法を見ていきます。  次のチュートリアルでお会いしましょう!