Milvusのグラフィカルな管理ツール AttuをMacに導入してみた

[Attu](https://github.com/zilliztech/attu)はベクトルデータベース [Milvus](https://milvus.io/)のGUIで操作できるOSSの管理ツールです。

Docker版、desktop版があって、この投稿はMacのDesktop版の話です。ただGUIツールなので動いてしまえば、どの版でも操作は変わらないと思っています。

尚、参考までにMilvus自体の導入についてはMacに導入する方法を以下で書いています:
[M1 Mac上でcolimaを使ってベクトルDB Milvusをインストール](https://qiita.com/nishikyon/items/f529b63a1117d2f10099)

> - 2025/03/02: v2.4.12版にして、Macの「壊れているため開けません。ゴミ箱に入れる必要があります。」対応を追記
> - 2024/05/13: SaaS版watsonx.data　Milvusで接続する場合の情報を追記しました

# 1. Mac Desktop版の導入
（ちなみにそんなに特別な手順はありません）
### 1.1 対応するversionの確認
使用しているMilvusのバージョンによって、推奨のAttu Versionが異なるので以下で確認します。
[Compatibility](https://github.com/zilliztech/attu?tab=readme-ov-file#compatibility)
この投稿を更新時はMilvus2.5.xならv2.5.2となっていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3c8d72c7-604f-4064-979c-1a63c1c593b9.png)


### 1.2 desktop version of Attuのダウンロード
「[Install Desktop application](https://github.com/zilliztech/attu?tab=readme-ov-file#install-desktop-application)」にダウンロード先のLinkがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5bb33721-a75c-7895-a67a-03ab44bc5f06.png)
[desktop version of Attu.](https://github.com/zilliztech/attu/releases/)をクリックして、ダウンロードサイトを表示します。
対応するバージョンのセクションから、Assetsの中の
`attu-mac-arm64-vx.x.x.dmg`(`x.x.x`はバージョン)
をダウンロードします。(armプロセッサの場合、intelの場合はx64の方をダウンロード)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8eb3dff6-44b0-4572-8e92-e24da610dfec.png)


ダウンロードしたら、ファイルをダブルクリックして開きます。
以下のようなWindowが表示されるので、attus.appをドラックしてApplicationsのフォルダの上におけば導入完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/2ed8d639-5c2c-4ccf-bd6d-dacb4ab67157.png)


ただこのままではLaunchPadから開けないので、ターミナルを開いて以下のコマンドを実行します(実行時はMacのパスワードを聞かれるので入れます):
```sh
sudo xattr -rd com.apple.quarantine /Applications/attu.app
```


LaunchPad 開いて　attuのアイコンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/df909200-cb21-4cb0-9231-4b96ccec6a5b.png)

Attuの接続画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/30c100c6-3c96-4067-97f5-8959efca6f52.png)



# 2. AttuでMilvus接続

## SSL接続の場合の前準備
SSL接続が不要の場合は「接続画面で情報入力」に進んでください。
**またSSL接続でもSaaS版watsonx.dataのMilvusなどサーバーのCA証明書が不要な場合は「接続画面で情報入力」に進んでください。**

### サーバーのCA証明書が必要な場合
自分で作ったサーバーなど、サーバーのCA証明書が必要な場合は以下で設定します。
**尚、watsonx.data SaaS版のMilvusの場合はこの設定不要です。**
#### 1. サーバーのCA証明書の入手
MilvusサーバーのCA証明書を入手しておいてください。フォーマットはpem（base64）です。

#### 2. 　環境変数`ROOT_CERT_PATH`のセット
(ここではMacのコマンドで実施していますが、Windowsでも環境変数`ROOT_CERT_PATH`をセットすればOKだと思います。)

以下のコマンドで環境変数`ROOT_CERT_PATH`をセットします。このコマンドはAttuの起動前に実行されている必要があります。起動中の場合は一旦落としてください。


```
launchctl setenv ROOT_CERT_PATH <サーバーのCA証明書ファイルのPATH>
```
実行例:
```
launchctl setenv ROOT_CERT_PATH /Users/nishito/presto.crt
```
この方法で設定した環境変数はMac再起動でリセットされてしまうので、ログインの度にこのコマンドを実行してください。

尚、Mac再起動なしで他のサーバーに非SSLで接続したくなった場合など、この環境変数を削除したくなった場合は以下のコマンドで削除してください。
```
launchctl unsetenv ROOT_CERT_PATH 
```




## 接続画面で情報入力
まず「Authentication」をONにしてください。
ONにするとtoken, username, passwordをいれる画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3ecdbe61-90a3-4b30-a549-08d57dc4ca62.png)


最初の接続画面で以下の情報を入力し「Connect」をクリックします。
- Milvus Address
    - SSL無しの場合
      - 　`[ホスト名]:[ポート番号]`
を入れます。(例:`milvus.aaa.bbb:50000`)
    -

    - SSL接続の場合
        - 　`https://[ホスト名]:[ポート番号]`
    を入れます。(例:`https://milvus.aaa.bbb:50000`)
        - SaaS版watsonx.dataのMilvusを使用する場合は以下を参考にしてください
            - [watsonx.data: Milvus接続情報の取得](https://qiita.com/nishikyon/items/e25d426cf8990991a159)
                - 　「GRPCホスト」の値を使うことに注意！
                - 　
        

    - 最初はlocalhostのアドレス(127.0.0.1)とデフォルトのポート番号が入っています。
<p></p>

- Milvus Database(オプション)
    - `default`でない場合は、入力します

<p></p>

- username(オプション)
    - user認証を設定している場合はUsernameを入力します
    - SaaS版　watsonx.data MilvusでAPIKEY接続の場合はuseridは`ibmlhapikey`です
<p></p>

    
- password(オプション)
    - user認証を設定している場合はPasswordを入力します
    - SaaS版　watsonx.data MilvusでAPIKEY接続の場合はPasswordにAPIKEYを入れます
<p></p>

 尚、user認証は　自分で導入した場合デフォルトfalseのようなので、何も設定していない場合は、UsernameとPassword　はありません。
user認証設定した場合で何も変更していない場合は初期設定のAdmin Usernameは`root`、Passwordは`Milvus`です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5a2cde2d-de61-4af3-b7ea-188c3643cc97.png)


無事接続できると以下のような画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5382fdc2-07c5-442e-9c69-3d06f1e4ee96.png)


# 3. Attuで何かできる？
最新のドキュメントはどうも公式は存在してなかったです。Try＆Errorで使ってみるしかなく(!)。
一応[ここ](https://github.com/zilliztech/attu/blob/main/doc/en.md)にドキュメントはあったのですが、更新が3年前でした！！！　これ以上探しだせなかったのですが、また発見したら更新予定です。


### 1. Collectionの操作
作成・削除・名前変更・複製・インデックスの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/a563dcf9-114d-4d83-b020-17d00769d8e6.png)

Import/Export・データ削除・サンプルデータの作成・検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4f3b6c10-4e9a-4abf-8c67-e698c58b29b9.png)


スキーマの表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/34095c24-8009-44e0-9642-d2776e853e1b.png)


パーティションとセグメントの操作
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/627c084a-920f-45f1-b41b-9242713847f4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/0e5ad717-f513-429e-bccd-950da5bb2769.png)


### 2. ベクトル検索
ベクトルデータを手打ちは結構大変では？と思うので使えるのかよくわかってないです。わかってる方はうまくコピペデータを作って使うのかもしれません。さらにid指定でそのidのベクトル検索はできるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3e6e15b9-14ba-43be-a0dd-d64b13861242.png)


### 3. ユーザーとロールの管理
(以下はv2.3.xの画面です)
ユーザーの追加・編集・削除・パスワード更新
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8e35a1ae-3f6c-cb8c-1cca-f3024e704bc4.png)

ロールの追加・編集・削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/8f7bca3a-b59a-fb06-254f-b2dd75bb5e23.png)

### 4. システム・ビューの表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/95b4eba4-ce9e-43f1-8076-8eb6ce268026.png)


### 5. データベースの操作
データベースの作成・削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e87fc492-1d4a-4c4a-a36d-47f87add4b27.png)


上記の操作でコマンドやコードをいちいち書きたくない場合は、便利に使えるかもしれません。
以上です。

# 参考: Milvus関連投稿
-  [M1 Mac上でcolimaを使ってベクトルDB Milvusをインストール](https://qiita.com/nishikyon/items/f529b63a1117d2f10099)
-  [Docker composeで導入したMilvusにユーザー認証を有効化する](https://qiita.com/nishikyon/items/452d92c144f244ab855a)