VectorDBにもダッシュボードがある!Milvus公式「Attu v3」でデータ可視化&AIワークベンチを体験する
ベクトル検索やAIのナレッジ検索(RAG)を始めるとき、こんなことを感じたことはありませんか?
- 「今、データベースの中にどんなデータがどんな形で入っているのか見たい…」
- 「ベクトル検索の結果、本当に意図したデータがヒットしているかGUIで手軽に確認したい…」
- 「RDBMS(MySQLやPostgreSQL)にはphpMyAdminやDBeaverがあるのに、VectorDBはターミナルやコードだけで中身がブラックボックスになりがち…」
安心してください。VectorDBにも、めちゃくちゃ使いやすい専用ダッシュボードがあります!
それが、Milvusの開発元(Zilliz)が公式で提供しているGUIツール 「Attu(アッツ)」 です。
現在、Milvus 3.0の登場に合わせて最新メジャーバージョン 「Attu v3(Attu 3.0)」 がリリースされ、単なる管理画面から 「The AI Workbench for Milvus」 へと劇的な進化を遂げました。
この記事では、MilvusとAttuの起動から、実際に触って楽しめる「デモデータ」の投入、そしてビジュアル機能&AI機能を遊び倒すまで を一気通貫でガイドします!
(※前回の記事を読んでいなくても、この記事だけで完全に動かせます 🚀)
🧭 Attu(アッツ)v3とは?
Attuは、Milvus専用に設計された 公式のビジュアル管理ツール(AI Workbench) です。
Webアプリ(Docker)としてブラウザから使えるほか、デスクトップアプリ(Mac / Windows / Linux)も提供されています。
- 開発元: Milvusの開発元である Zilliz 公式ツール
- スローガン: 「The AI Workbench for Milvus」
-
何ができるの?:
- コレクション(テーブル)やスキーマをマウス操作で視覚的に設計・確認
- 蓄積されたベクトルデータやテキストをスプレッドシート感覚で閲覧・編集
- 自然言語のテキストを入力して類似度検索をテスト実行(Embeddingプロバイダー連携)
- 検索結果をそのままPythonコードとして出力する 「Code View」
- 50以上のDB操作ツールを操る本格的な「AI Agent」 とのチャット対話
- 自然言語やCSVファイルからAIが最適なスキーマを自動生成
📌 【知っておきたいライセンス情報】
Attuはバージョンv2.5.12までは Apache License 2.0 のオープンソース(OSS)でしたが、v2.6.0以降(v3.0含む)はZilliz公式のプロプライエタリライセンス(独自ライセンス)へ移行 しています。
ソースコードの改変・再配布は制限されていますが、公式のDockerイメージやデスクトップアプリ(バイナリ)は無償で利用可能 です。
📋 MilvusとAttuのバージョン対応
Attu v3は、最新の Milvus 3.0 に完全対応しています。
| Milvus バージョン | 推奨 Attu バージョン | 主な対応機能 |
|---|---|---|
|
Milvus 3.x (この記事で動かす環境) |
Attu v3.0.0 | TEXT型、外部コレクション、MinHash重複排除、検索集計、リランキング、AI Agent(50+ツール) |
| Milvus 2.6.x | Attu v3.0.0 または v2.6.5 | スキーマ進化、Int8 Vector、JSON Index、AIスキーマ生成 |
| Milvus 2.5.x | Attu v2.5.10 | 全文検索(Text Match)、Bitmap Index |
🚀 ステップ1:Milvus 3.0 をDockerで起動する
まずは、ベクトルデータベース本体である Milvus 3.0 を起動します。
公式の起動スクリプトを使えば、コマンド2行でコンテナ1つの軽量なStandalone環境が立ち上がります。
# 1. 公式の起動スクリプトをダウンロード
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
# 2. Milvusコンテナの起動
bash standalone_embed.sh start
1〜2分待って、以下のコマンドでコンテナが Up (healthy) になっていれば準備完了です。
docker ps
# milvus-standalone ... Up (healthy) ... 0.0.0.0:19530->19530/tcp
💡 【Linux環境でコンテナが起動直後に落ちる場合】
Milvusコンテナは非rootユーザーで動作するため、ホスト側の./volumesがroot所有のままだと書き込み権限エラー(permission denied)で落ちることがあります。その場合はsudo chmod -R 777 volumesを実行してからコンテナを再起動(docker start milvus-standalone)してください。
🖥️ ステップ2:Attu v3 を起動してブラウザで開く
続いて、Attu v3のWebダッシュボードを起動します。こちらもDockerコマンド1発です。
docker run -d --name attu \
--add-host=host.docker.internal:host-gateway \
-p 3000:3000 \
-e MILVUS_ADDRESS=host.docker.internal:19530 \
-e ATTU_AUTH_MODE=none \
-v attu-data:/data \
zilliz/attu:v3.0.0
💡 起動オプションのポイント
-e ATTU_AUTH_MODE=none: ローカル体験用にログイン認証をスキップし、そのまま直接ダッシュボードを使えるようにする設定です(※指定しないと初期ユーザーのログイン画面が表示されます)。-e MILVUS_ADDRESS=...: 接続先Milvusのアドレスです。コンテナ内部からホストマシンのMilvusに接続するため、localhostではなくhost.docker.internal:19530を指定します。--add-host=host.docker.internal:host-gateway: Linux環境でホスト側を正しく名前解決するための設定です(Mac/WindowsのDocker Desktopなら省略可)。-v attu-data:/data: 接続先やAIエージェントとの対話履歴を SQLite(/data/attu.db)に安全に永続化します。
起動したら、ブラウザで http://localhost:3000 を開きます。
┌────────────────────────────────────────────────────────┐
│ Attu Login │
│ │
│ Milvus Address: [ host.docker.internal:19530 ] │
│ │
│ [ Connect ] │
└────────────────────────────────────────────────────────┘
接続先のアドレスを確認し、そのまま 「Connect」 を押せばログイン完了です!
📦 ステップ3:ダッシュボードを楽しむデモデータを投入する!
ダッシュボードに入っても、データが空っぽでは面白くありませんよね。
そこで、Attuの機能を遊び倒せる 「いい感じのガジェット商品カタログデータ」 をMilvusに投入しましょう!
投入するデモデータ(demo_products)
テキスト、価格、評価、カテゴリ、在庫フラグに加え、商品説明をAIで数値化した 384次元ベクトル が入ったリッチなデータセット(10件)です。
| id | 商品名 (title) | カテゴリ | 価格 | 評価 | 在庫 | 説明文 (description) の一部 |
|---|---|---|---|---|---|---|
| 1 | AirSound Pro ノイズキャンセリングイヤホン | オーディオ | ¥24,800 | 4.8 | あり | 強力なANC搭載。通勤電車やカフェでも静寂に… |
| 2 | ErgoType 分割型静音キーボード | PC周辺機器 | ¥18,500 | 4.6 | あり | 人間工学に基づいた左右分離型。肩こり軽減… |
| 3 | SwiftBook Air 14インチ軽量ノートPC | PC周辺機器 | ¥138,000 | 4.5 | あり | 重さ980gの超軽量。丸一日持続するバッテリー… |
| 4 | UltraVision 4K 27インチ高画質モニター | PC周辺機器 | ¥42,000 | 4.7 | なし | IPSパネル採用の4K。Type-C 1本で給電と映像… |
| 5 | BoneCon Sport 骨伝導ワイヤレスヘッドセット | オーディオ | ¥12,800 | 4.3 | あり | 耳を塞がないオープンイヤー型。ランニングに最適… |
| 8 | PowerMax 20000mAh 急速充電モバイルバッテリー | PC周辺機器 | ¥6,500 | 4.9 | あり | 65W高出力でノートPCも急速充電… |
| ... | (他 スマートLED、温湿度計、サーキュレーター等) | ... | ... | ... | ... | ... |
投入方法(Pythonスクリプト)
Pythonの環境管理ツール uv を使って、必要なライブラリのインストールとデータ投入を行います。
1. 環境構築とパッケージの追加
uv init
uv add "pymilvus==3.0.1" "sentence-transformers>=3.0,<4.0"
2. デモデータ投入スクリプトを作成する
hands-on/setup_demo_data.py を作成し、以下のコードを記述します。
# hands-on/setup_demo_data.py
from pymilvus import MilvusClient
from sentence_transformers import SentenceTransformer
def main():
print("=== Attu体験用デモデータの投入を開始します ===")
# 1. 埋め込みモデルの準備(多言語対応 384次元)
print("埋め込みモデルを読み込んでいます...")
model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")
DIM = model.get_sentence_embedding_dimension()
# 2. 魅力的なデモデータ(ガジェット・家電カタログ)
products = [
{
"id": 1,
"title": "AirSound Pro ノイズキャンセリングイヤホン",
"category": "オーディオ",
"price": 24800,
"rating": 4.8,
"in_stock": True,
"description": "強力なアクティブノイズキャンセリングを搭載。通勤電車やカフェでも静寂の中でハイレゾ高音質を楽しめます。最大32時間バッテリー。",
},
{
"id": 2,
"title": "ErgoType 分割型静音キーボード",
"category": "PC周辺機器",
"price": 18500,
"rating": 4.6,
"in_stock": True,
"description": "人間工学に基づいた左右分離型デザイン。長時間のタイピングでも肩こりや手首の疲労を軽減する静音キースイッチ採用。",
},
{
"id": 3,
"title": "SwiftBook Air 14インチ軽量ノートPC",
"category": "PC周辺機器",
"price": 138000,
"rating": 4.5,
"in_stock": True,
"description": "重さわずか980gの超軽量ボディ。丸一日持ち歩ける長持ちバッテリーと最新プロセッサで、どこでも快適に作業ができます。",
},
{
"id": 4,
"title": "UltraVision 4K 27インチ高画質モニター",
"category": "PC周辺機器",
"price": 42000,
"rating": 4.7,
"in_stock": False,
"description": "IPSパネル採用の鮮やかな4Kディスプレイ。USB Type-C 1本で給電と映像出力が可能。デザイン制作からプログラミングまで最適。",
},
{
"id": 5,
"title": "BoneCon Sport 骨伝導ワイヤレスヘッドセット",
"category": "オーディオ",
"price": 12800,
"rating": 4.3,
"in_stock": True,
"description": "耳を塞がないオープンイヤー型。ランニング中の車の音も聞こえて安全。クリアな通話マイク付きでテレワークにも最適。",
},
{
"id": 6,
"title": "SmartGlow 音声操作対応スマートLEDライト",
"category": "スマート家電",
"price": 4980,
"rating": 4.1,
"in_stock": True,
"description": "スマホアプリや音声アシスタントから調光・調色ができるシーリングライト。起床時に徐々に明るくなる目覚まし機能も搭載。",
},
{
"id": 7,
"title": "ThermoSensor 室内環境スマート温湿度計",
"category": "スマート家電",
"price": 3200,
"rating": 4.4,
"in_stock": True,
"description": "高精度センサーで部屋の温度と湿度を常時記録。湿度が下がると加湿器を自動でONにするスマートホーム連携が可能。",
},
{
"id": 8,
"title": "PowerMax 20000mAh 急速充電モバイルバッテリー",
"category": "PC周辺機器",
"price": 6500,
"rating": 4.9,
"in_stock": True,
"description": "65Wの高出力でノートPCも急速充電できる大容量バッテリー。飛行機持ち込み可能サイズで出張や旅行の必須アイテム。",
},
{
"id": 9,
"title": "BreezeSilent 自動首振りサーキュレーター",
"category": "スマート家電",
"price": 8800,
"rating": 4.2,
"in_stock": False,
"description": "DCモーター搭載で図書館並みの静音性を実現。3D立体首振りで部屋中の空気を効率よく循環させ、エアコン代を節約。",
},
{
"id": 10,
"title": "StudioSound ハイレゾ対応ワイヤレスヘッドホン",
"category": "オーディオ",
"price": 38000,
"rating": 4.9,
"in_stock": True,
"description": "アーティストの息づかいまで再現する最上級の解像感。低反発イヤーパッドでメガネをかけたままでも快適な装着感。",
},
]
# 3. テキスト(description)をベクトル化
print(f"{len(products)}件の商品説明をベクトル化しています...")
descriptions = [p["description"] for p in products]
vectors = model.encode(descriptions).tolist()
data = []
for i, p in enumerate(products):
item = p.copy()
item["vector"] = vectors[i]
data.append(item)
# 4. Milvusに接続してコレクションを作成・登録
print("Milvusに接続中 (http://localhost:19530)...")
client = MilvusClient(uri="http://localhost:19530")
COLLECTION = "demo_products"
if client.has_collection(COLLECTION):
print(f"既存のコレクション '{COLLECTION}' を削除して再作成します...")
client.drop_collection(COLLECTION)
print(f"コレクション '{COLLECTION}' を作成しています (Dimension={DIM}, Metric=COSINE)...")
client.create_collection(
collection_name=COLLECTION,
dimension=DIM,
metric_type="COSINE",
consistency_level="Strong",
)
print(f"データをMilvusに登録しています ({len(data)}件)...")
client.insert(collection_name=COLLECTION, data=data)
print("\n✅ デモデータの投入が完了しました!")
print(f"コレクション名: {COLLECTION}")
print(f"登録件数: {len(data)}件")
print("\nブラウザで Attu (http://localhost:3000) を開き、")
print(f"'{COLLECTION}' コレクションを選択してダッシュボードをお楽しみください!✨")
if __name__ == "__main__":
main()
3. スクリプトの実行
uv run python hands-on/setup_demo_data.py
実行すると、多言語対応の埋め込みモデル(paraphrase-multilingual-MiniLM-L12-v2)を使って説明文が自動でベクトル化され、Milvusに demo_products コレクションとして登録されます!
=== Attu体験用デモデータの投入を開始します ===
埋め込みモデルを読み込んでいます...
10件の商品説明をベクトル化しています...
コレクション 'demo_products' を作成しています (Dimension=384, Metric=COSINE)...
データをMilvusに登録しています (10件)...
✅ デモデータの投入が完了しました!
さあ、これで準備は完了です。ブラウザのAttu(http://localhost:3000)に戻って画面を更新してみましょう!
🎨 【ビジュアル編】Attu v3でデモデータを遊び倒す!
画面左メニューの「Collections」から、いま登録した demo_products をクリックしてください。
ここからがAttuの本領発揮です!
1. スキーマの可視化 (Visual Schema Designer)
まずは「Schema」タブを見てみましょう。
-
型構成が一目瞭然:
vectorが384次元(Dimension: 384)で、COSINE距離でインデックスが作られていること、メモリにロードされている(Loaded)状態が緑色のバッジで直感的に把握できます。 -
Milvus 3.0の新機能「TEXT型」対応: 長文テキストを扱う
TEXTフィールドや、BM25用の設定もGUI上で確認可能。 - フィールドの追加: 画面上の「Add Field」ボタンから、あとから新しい属性フィールドを追加することも可能です。
2. データブラウザ & スカラーフィルタ (Data Explorer)
「Data」タブを開くと、登録された10件のガジェットがスプレッドシートのように並んでいます!

- データの確認 & インライン編集: テーブルセルを直接クリックして数値を変更したり、不要なデータをゴミ箱アイコンで削除できます。
- インポート / エクスポート: CSV, JSON, Parquet 形式でのデータの入出力に対応。
-
スカラーフィルタ(条件絞り込み):
画面上部の検索バーにフィルタ式を入力して「Filter」を押してみましょう。-
category == "オーディオ" && rating >= 4.5
→ 高評価なイヤホン・ヘッドホンだけが瞬時に絞り込まれます! -
price <= 10000 && in_stock == true
→ 1万円以下で今すぐ買える商品だけが抽出されます。
-
3. 集計分析(Analytics)
Attu v3では、データの集計(Analytics)がGUI上で手軽に行えます。
- 商品の平均価格(
AVG(price))や最高評価(MAX(rating)) - カテゴリごとの商品件数(
COUNT)やグループ化(GROUP BY category)
といった分析クエリを、SQLやコードを書かずにGUIで確認できます。
4. ベクトル検索 Playground & Code View
いよいよメインディッシュの 「検索Playground」 です!
画面の「Vector Search」タブを開いてみましょう。
Attu v3の検索Playgroundは、従来のツールとは次元が違います:
-
自然言語テキストで直接検索可能(Embedding Provider連携):
OpenAI、Cohere、Jina、VoyageAIなどの埋め込みプロバイダーを設定しておけば、検索したい文章(日本語テキスト)を入力するだけで、自動でベクトル化して類似検索 を実行できます! -
生ベクトル入力や既存エンティティ検索にも対応:
もちろん、ベクトル値を直接入力したり、コレクション内の既存データを選んで「これに似た商品を探す」ことも可能です。 -
BM25 全文検索 / ハイブリッド検索:
キーワードによる完全一致検索と、ベクトルによる意味検索を掛け合わせたハイブリッド検索もGUI上でテストできます。
🤖 【AI機能編】Attu v3が「AI Workbench」と呼ばれる理由
Attu v3が従来のダッシュボードと決定的に違うのは、AIが深く統合されている点 です。
1. 50以上のツールを操る専属AI「AI Agent」チャット
Attu v3の画面右側には、常駐型の AI Agent が搭載されています。
このAIエージェントは、単なる雑談AIではありません。Milvusを操作するための50以上の専門スキル・ツールを装備 しています。
対応LLMも非常に豊富で、OpenAI、Anthropic Claude、DeepSeek、Google Gemini、OpenRouter やカスタムAPIエンドポイントを自由に選択可能です。
画面のチャット欄に、日本語で以下のように話しかけてみてください:
- 「
demo_productsコレクションの中で、一番価格が高い商品はどれ?」 - 「オーディオカテゴリの商品数を教えて」
- 「在庫切れ(in_stockがfalse)の商品をリストアップして」
- 「このクラスタの稼働状況やノード状態をチェックして」
AIエージェントが裏側でMilvusのAPIやクエリを自動実行し、結果を分かりやすく教えてくれます。
思考プロセスのアニメーションやストリーミング表示にも対応しており、まるで「Milvus専門のインフラエンジニア」が隣に座っているような感覚です。
2. AI-Powered Schema Generation(自然言語からのスキーマ自動生成)
新しいコレクションを作るとき、「AI」タブ を開いて作りたい要件をつぶやくだけで、AIがスキーマを自動設計してくれます。
プロンプト入力例:
「レシピ動画アプリの検索DBを作りたいです。料理のタイトル、調理時間(分)、カロリー、材料リスト、そして動画の特徴量ベクトル(512次元)を持たせてください。」
これをつぶやくだけで、最適なデータ型やベクトル設定が自動で組み上がります。
3. ファイルアップロードによるスキーマ自動推論
手持ちの CSVやJSONファイル(最大10MB)をドラッグ&ドロップ すると、AIがデータの中身をスキャンしてくれます。
「この列は文字列、この列は数値、この配列はベクトル」と自動判定してくれるため、手元のデータを即座にMilvusに取り込むことができます。
4. 試してみた様子
📊 クラスタ監視・運用機能も充実 (Monitoring & Topology)
開発だけでなく、本番運用に必要な監視機能もAttu v3の大きな見どころです。
- インタラクティブなトポロジー可視化: Coordinator、QueryNode、DataNode、IndexNodeがどのように接続され、稼働しているかをビジュアルに表示
- 16種類以上のPrometheusメトリクス: CPU、メモリ使用率、QPS、レイテンシなどの稼働状態をリアルタイムモニタリング
- スロークエリ分析: レスポンスが遅いクエリを特定し、ボトルネックを診断
📊 Attu v3 の機能まとめ
| カテゴリ | 機能 | メリット |
|---|---|---|
| ビジュアル | Visual Schema Designer | ベクトル次元やインデックス状態が一目で把握できる |
| ビジュアル | Data Explorer | スプレッドシート感覚での閲覧・編集・スカラー絞り込み(Parquet対応) |
| ビジュアル | Vector Search Playground | 自然言語テキストでの直接検索 & Pythonコード自動生成(Code View) |
| ビジュアル | Analytics(集計分析) |
COUNT, AVG, MAX などの集計やGROUP BYをGUIで実行 |
| ビジュアル | クラスタ監視 & トポロジー | ノードの稼働状況や16+のPrometheusメトリクスを可視化 |
| AI機能 | AI Agent (50+ tools) | 自然言語チャットでデータ検索・運用確認・クラスタ操作を対話実行 |
| AI機能 | AI Schema Generation | 日本語で要望を伝えるだけで最適なスキーマを自動作成 |
| AI機能 | File Upload Prediction | CSV/JSONを投げるだけで列の型やベクトル次元を自動推論 |
🧹 後片付け
ハンズオンが終わったら、起動したコンテナを停止・削除しておきましょう。
# 1. Attuの停止・削除
docker stop attu && docker rm attu
docker volume rm attu-data # ボリュームも削除する場合
# 2. Milvusの停止・削除
bash standalone_embed.sh stop
bash standalone_embed.sh delete # データごと削除する場合
🏁 おわりに:VectorDBは「目に見える&AIと触る」時代へ
これまでのVectorDBは、ターミナルやPythonスクリプトの中で多次元配列を扱う、どこか取っつきにくい世界に思われがちでした。
しかし、Milvus 3.0 + Attu v3 の組み合わせを使えば:
- データも検索結果も、すべて目で見える
- スキーマ設計はAIがやってくれる
- 自然言語テキストでそのまま類似検索できる
- DB操作や分析も50+ツールのAIエージェントにチャットで頼める
という、モダンで圧倒的に快適な開発体験が得られます。
ぜひ自分の手で docker run して、この「AI Workbench」の楽しさを体感してみてください!
📣 Milvusの対面ハンズオンイベント(無料)
Milvusの開発元 Zilliz では、実際に手を動かしながら学べる無料の対面ハンズオンイベントも開催されています。
- イベント名: Zilliz ハンズオン|全文検索とベクトル検索を、一つのエンジンで
- 詳細・お申し込み: milvus.connpass.com/event/403452
AttuやMilvus 3.0の新機能、Zilliz Cloud上でのハイブリッド検索構築などを直接体験できる絶好の機会ですので、興味がある方はぜひチェックしてみてください!







