ローカル環境での実行(Docker Compose利用)

1. 前提条件

項目 推奨内容 備考
OS Linux, macOS, Windows (WSL2) Docker Desktop 4.22+ を推奨
ハードウェア RAM 8 GB 以上(16 GB 推奨) ベクトル化用モジュールはメモリを多く消費します weaviate.io
ソフトウェア Docker Engine 24 以上 / Docker Compose v2 以上 docker compose(ハイフン無し)の CLI を前提に説明

2. プロジェクトディレクトリの作成

bash
mkdir ~/weaviate-local cd ~/weaviate-local

3. docker-compose.yml の最小構成例

yaml
version: "3.9" services: weaviate: image: cr.weaviate.io/semitechnologies/weaviate:1.31.1 command: ["--host","0.0.0.0","--port","8080","--scheme","http"] ports: - "8080:8080" # REST / GraphQL - "50051:50051" # gRPC environment: QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: "true" PERSISTENCE_DATA_PATH: "/var/lib/weaviate" ENABLE_API_BASED_MODULES: "true" # OpenAI など API ベースのモジュールを許可 CLUSTER_HOSTNAME: "node1" volumes: - weaviate_data:/var/lib/weaviate # 永続化ボリューム restart: on-failure:0 volumes: weaviate_data:

このファイルは公式ドキュメントの Sample Docker Compose file を簡略化したものです。weaviate.io

ポイント

  • Weaviate 本体だけを起動するシングルノード構成

  • 匿名アクセスを許可 (AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true)

  • データはホスト側 weaviate_data ボリュームに永続化


4. 起動と停止

bash
# バックグラウンドで起動 docker compose up -d # ログをフォロー(必要に応じて) docker compose logs -f weaviate

Weaviate が 8080 にバインドされ、/v1/meta エンドポイントが 200 OK を返せば起動成功です。weaviate.io

停止は docker compose down、データを残したくない場合は docker compose down -v を使用します。


5. 動作確認

ブラウザまたは curl で確認:

bash
curl http://localhost:8080/v1/meta | jq

レスポンスにバージョンや modules が表示されれば正常です。Python なら

python
import weaviate client = weaviate.connect_to_local() print(client.get_meta()) client.close()

6. 主要環境変数の意味(抜粋)

変数 目的
QUERY_DEFAULTS_LIMIT REST/GraphQL のデフォルト取得件数
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED 認証無しアクセスの可否
PERSISTENCE_DATA_PATH コンテナ内データ保存パス
ENABLE_API_BASED_MODULES OpenAI など外部 API モジュールを有効化
CLUSTER_HOSTNAME Raft クラスタ識別用ホスト名(シングルでも設定推奨)

詳細は公式「環境変数リスト」を参照してください。weaviate.io


7. ベクトル化モジュールを追加する場合(text2vec-transformers の例)

  1. Weaviate 本体の ENABLE_MODULES を設定

  2. 推論用コンテナ を追加(下記例では t2v-transformers

yaml
services: weaviate: # 省略… environment: ENABLE_MODULES: "text2vec-transformers" TRANSFORMERS_INFERENCE_API: "http://t2v-transformers:8080" t2v-transformers: image: cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-all-MiniLM-L6-v2 environment: ENABLE_CUDA: 0 # GPU を使う場合は 1

TRANSFORMERS_INFERENCE_API により Weaviate が別コンテナのエンベッディング API を呼び出します。weaviate.io


8. 永続化・バックアップ・アップグレード

操作 手順の要点
データバックアップ docker compose down → ボリューム weaviate_datadocker cpdocker run --rm -v weaviate_data:/data busybox tar czf /backup/weaviate-data.tgz /data で取得
バージョンアップ image タグを新バージョンに変更 → docker compose pull && docker compose up -d
マルチノード化 weaviate-node-1, weaviate-node-2 … を services に追加し、CLUSTER_*, RAFT_* を設定(公式サンプルを参照)weaviate.io

9. よくあるトラブルと対策

症状 原因と対処
8080 で応答がない メモリ不足で OOM → docker stats を確認し RAM/Swap を増やす
CLUSTER_HOSTNAME に関するエラー DHCP 環境でホスト名が変わる → CLUSTER_HOSTNAME を固定文字列にする
transformers モジュールが初期化しない モデルイメージ名のタイプミス、CUDA 未対応 GPU など → イメージタグと ENABLE_CUDA を再確認

まとめ

Docker Compose を用いると、1 ファイル・1 コマンドでローカルに Weaviate を用意できます。必要に応じてモジュールを追記し、永続化ボリュームでデータを安全に保持してください。ローカル開発で構成に慣れた後は、同じ YAML を Kubernetes Helm へ移植することで本番環境へスムーズに移行できます。

ChatGPT4o 生成日:2025/06/20