このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。
このガイドでは、Weaviate クライアント v3 から v4.17.0 への移行と、Weaviate サーバーをバージョン 1.19.0 から 1.27.0 以降にアップグレードする方法について説明します。この移行は、weaviate-client v4 アップグレードを含む Dify バージョンに必要です。
概要
Dify v1.9.2 以降、weaviate-client が v3 から v4.17.0 にアップグレードされました。このアップグレードにより、パフォーマンスが大幅に向上し、安定性が向上しますが、Weaviate サーバーバージョン 1.27.0 以降が必要です。影響を受けるユーザー
この移行の影響を受けるのは:- 1.27.0 未満のバージョンでセルフホスト Weaviate インスタンスを実行しているセルフホスト Dify ユーザー
- 現在 Weaviate サーバーバージョン 1.19.0-1.26.x を使用しているユーザー
- weaviate-client v4 を含む Dify バージョンにアップグレードするユーザー
- クラウドホスト Weaviate ユーザー(Weaviate Cloud がサーバーバージョンを管理)
- すでに Weaviate 1.27.0+ を使用しているユーザーは、追加の手順なしで Dify をアップグレードできます
- Dify のデフォルト Docker Compose セットアップを実行しているユーザー(Weaviate バージョンは自動的に更新されます)
破壊的変更
クライアント v4 の要件
weaviate-client v4 では、いくつかの破壊的変更が導入されています:- 最小サーバーバージョン:Weaviate サーバー 1.27.0 以降が必要
- API 変更:新しいインポート構造(
weaviate.clientではなくweaviate.classes) - gRPC サポート:パフォーマンス向上のため、デフォルトでポート 50051 で gRPC を使用
- 認証の変更:更新された認証方法と構成
なぜアップグレードするのか?
- パフォーマンス:gRPC (50051) により、クエリおよびインポート操作が大幅に高速化
- 安定性:接続処理とエラー回復の改善
- 将来の互換性:最新の Weaviate 機能と継続的なサポートへのアクセス
- セキュリティ:Weaviate 1.19.0 は 1 年以上前のもので、セキュリティアップデートを受け取っていません
バージョン互換性マトリックス
| Dify バージョン | Weaviate-client バージョン | 互換性のある Weaviate サーバーバージョン |
|---|---|---|
| ≤ 1.9.1 | v3.x | 1.19.0 - 1.26.x |
| ≥ 1.9.2 | v4.17.0 | 1.27.0+(1.33.1 までテスト済み) |
この移行は、weaviate-client v4.17.0 以降を使用するすべての Dify バージョンに適用されます。
Weaviate サーバーバージョン 1.19.0 は 1 年以上前にリリースされ、現在は古くなっています。1.27.0+ にアップグレードすると、パフォーマンス、安定性、機能の数多くの改善にアクセスできます。
前提条件
移行を開始する前に、次の手順を完了してください:-
現在の Weaviate バージョンを確認
レスポンスで
versionフィールドを探します。 -
データをバックアップ
- Weaviate データの完全バックアップを作成
- Docker Compose を使用している場合は、Docker ボリュームをバックアップ
- 現在の構成設定を文書化
-
システム要件を確認
- データベース移行のための十分なディスク容量を確保
- Dify と Weaviate 間のネットワーク接続を検証
- 外部 Weaviate を使用している場合、gRPC ポート (50051) がアクセス可能であることを確認
-
ダウンタイムを計画
- 移行にはサービスのダウンタイムが必要
- 本番環境で実行している場合はユーザーに通知
- トラフィックの少ない時間帯に移行をスケジュール
移行パス
デプロイメント設定と現在の Weaviate バージョンに一致する移行パスを選択してください。パスを選択
- パス A – バックアップを使用した移行(1.19 から):まだ Weaviate 1.19 を使用している場合に推奨されます。バックアップを作成し、1.27+ にアップグレードし、孤立したデータを修復してから、スキーマを移行します。
- パス B – 直接リカバリ(すでに 1.27+ の場合):すでに 1.27+ にアップグレードしてナレッジベースが動作しなくなった場合に使用します。このパスはデータレイアウトの修復とスキーマ移行の実行に焦点を当てています。
パス A:バックアップを使用した移行(1.19 から)
最も安全なパスです。アップグレード前にバックアップを作成するため、問題が発生した場合に復元できます。
前提条件
- 現在 Weaviate 1.19 を実行中
- Docker + Docker Compose がインストール済み
- スキーマ移行スクリプト用に Python 3.12
ステップ A1:Weaviate 1.19 でバックアップモジュールを有効化
docker/docker-compose.yaml を編集して、weaviate サービスにバックアップ構成を含めます:
ステップ A2:バックアップを作成
-
コレクションを一覧表示:
-
バックアップをトリガー:必要に応じて特定のコレクション名を含めます。
-
バックアップステータスを確認:
-
バックアップファイルの存在を確認:
ステップ A3:Weaviate 1.27+ にアップグレード
-
Weaviate 1.27+ を同梱する Dify バージョンにアップグレード:
-
新しい Weaviate イメージを確認:
-
新しいバージョンで再起動:
ステップ A4:孤立した LSM データを修正(存在する場合)
孤立した LSM データは、ホストからまたはコンテナ内で修正できます: オプション A: ホストから(ボリュームがマウントされている場合):ステップ A5:スキーマを移行
-
依存関係をインストール(一時的な virtualenv で問題ありません):
-
移行スクリプトを実行:ローカルまたは Worker コンテナ内で実行できます。
オプション A: ローカルで実行(Python 3.12 と依存関係がインストールされている場合):オプション B: Worker コンテナ内で実行(Docker セットアップに推奨):移行スクリプトは構成に環境変数を使用するため、Docker コンテナ内での実行に適しています。Dify 1.11.0+ でuvの権限エラーが発生した場合は、代わりにuv run --no-cacheを使用してください。 -
Dify サービスを再起動:
- UI で検証:Dify を開き、移行されたナレッジベースに対して取得をテストします。
正常な移行を確認した後、
weaviate_migration_env とバックアップファイルを削除してディスク容量を回復できます。パス B:直接リカバリ(すでに 1.27+ の場合)
前提条件
- 現在 Weaviate 1.27+(1.33 を含む)を実行中
- Docker + Docker Compose がインストール済み
- 移行スクリプト用に Python 3.12
ステップ B1:孤立した LSM データを修復
Weaviate を停止して孤立した LSM データを修正:ステップ B2:スキーマ移行を実行
ステップ A5 と同じコマンドに従います。スクリプトはローカルまたは Worker コンテナ内で実行できます: Worker コンテナ内で実行する場合:移行スクリプトはカーソルベースのページネーションを使用して、大規模なコレクションを安全に処理します。移行完了後にオブジェクト数が一致することを確認してください。
ステップ B3:Dify で検証
- Dify のナレッジベース UI を開きます。
- 取得テストを使用して、クエリが結果を返すことを確認します。
- エラーが続く場合は、
docker compose logs weaviateを確認して追加の修復手順を確認してください(トラブルシューティングを参照)。
レガシーバージョンのデータ移行
自動移行
ほとんどの場合、Weaviate 1.27.0 は 1.19.0 からデータを自動的に移行します:- Weaviate 1.19.0 を停止
- 同じデータディレクトリで Weaviate 1.27.0 を起動
- Weaviate は古い形式を検出し、自動的に移行
- ログを監視して移行の進行状況とエラーを確認
手動移行(自動移行が失敗した場合)
自動移行が失敗した場合は、Weaviate のエクスポート/インポートツールを使用:1. 旧バージョンからデータをエクスポート
Cursor API またはバックアップ機能を使用してすべてのデータをエクスポートします。大規模なデータセットの場合は、Weaviate のバックアップ API を使用:2. 新しいバージョンにデータをインポート
Weaviate 1.27.0 にアップグレードした後、バックアップを復元:複雑なスキーマや大規模なデータセットの場合の包括的な移行ガイダンスについては、公式の Weaviate 移行ガイドを参照してください。
構成の変更
新しい環境変数
weaviate-client v4 を含む Dify バージョンで利用可能な新しい環境変数:WEAVIATE_GRPC_ENDPOINT
説明:Weaviate 接続の gRPC エンドポイントを指定します。gRPC を使用すると、バッチ操作とクエリのパフォーマンスが大幅に向上します。 形式:hostname:port(プロトコルプレフィックスなし)
デフォルトポート:
- 非セキュア:50051
- セキュア (TLS):443
更新された環境変数
既存のすべての Weaviate 環境変数は変更なし:- WEAVIATE_ENDPOINT:Weaviate の HTTP エンドポイント(例:
http://weaviate:8080) - WEAVIATE_API_KEY:認証用の API キー(有効な場合)
- WEAVIATE_BATCH_SIZE:インポートのバッチサイズ(デフォルト:100)
- WEAVIATE_GRPC_ENABLED:gRPC の有効化/無効化(v4 のデフォルト:true)
完全な構成例
検証手順
移行完了後、すべてが正常に動作していることを検証:1. Weaviate 接続を確認
Weaviate がアクセス可能で正しいバージョンで実行されていることを確認:2. Dify 接続を検証
Dify ログを確認して Weaviate への接続が成功していることを確認:3. ナレッジベースの作成をテスト
- Dify インスタンスにログイン
- ナレッジベースセクションに移動
- 新しいナレッジベースを作成
- テストドキュメント(PDF、TXT、または MD)をアップロード
- インデックス作成が完了するまで待つ
- ステータスが「QUEUING」→「INDEXING」→「AVAILABLE」に変わることを確認
ドキュメントが「QUEUING」ステータスで止まっている場合は、Celery worker が実行されているか確認:
docker compose logs worker4. ベクトル検索をテスト
- ナレッジベース統合を含むチャットアプリケーションを作成または開く
- ナレッジベースから情報を取得する質問をする
- 正しいスコアで関連する結果が返されることを確認
- 引用/ソースリンクが正しく機能することを確認
5. gRPC パフォーマンスを検証
gRPC が有効になっている場合、パフォーマンスの向上が見られるはずです:gRPC が適切に構成されている場合、ベクトル検索クエリは HTTP のみの接続と比較して 2〜5 倍高速になるはずです。
トラブルシューティング
問題:「No module named ‘weaviate.classes’」
原因:weaviate-client v4 がインストールされていないか、v3 がまだ使用されています。 解決策:問題:gRPC ポート (50051) で接続拒否
原因:ポート 50051 が公開されていない、アクセスできない、または Weaviate がリッスンしていません。 解決策:- バンドルされた Weaviate を使用する Docker Compose ユーザーの場合: ポートはコンテナ間で内部的に利用可能です。Docker 外部から接続しない限り、アクションは不要です。
-
外部 Weaviate の場合:
-
ファイアウォールルールを確認:
問題:認証エラー(401 未承認)
原因:API キーの不一致または認証構成の問題。 解決策:-
Weaviate と Dify の API キーが一致することを確認:
-
匿名アクセスを使用している場合:
次に、Dify 構成から
WEAVIATE_API_KEYを削除します。
問題:ドキュメントが「QUEUING」ステータスで止まる
原因:Celery worker が実行されていないか、Redis に接続されていません。 解決策:問題:移行後のパフォーマンス低下
原因:gRPC が有効になっていないか、正しく構成されていません。 解決策:-
gRPC 構成を検証:
次のように表示されるはずです:
-
gRPC 接続をテスト:
- それでも遅い場合は、Dify と Weaviate 間のネットワーク遅延を確認
問題:スキーマ移行エラー
原因:Weaviate バージョン間の互換性のないスキーマ変更またはデータの破損。 解決策:-
Weaviate ログで特定のエラーメッセージを確認:
-
現在のスキーマをリスト:
-
必要に応じて、破損したコレクションを削除(⚠️ すべてのデータが削除されます):
-
Dify を再起動してスキーマを再作成:
問題:Docker ボリュームの権限エラー
原因:Docker コンテナのユーザー ID の不一致。 解決策:問題:移行スクリプト実行時の権限拒否(Dify 1.11.0+)
原因:新しい Dify バージョンでは/home/dify ディレクトリが存在しない可能性があり、uv キャッシュの作成に失敗します。
解決策:
ロールバック計画
移行が失敗してロールバックする必要がある場合:ステップ 1:サービスを停止
ステップ 2:バックアップを復元
ステップ 3:Dify バージョンを元に戻す
ステップ 4:サービスを再起動
ステップ 5:ロールバックを検証
サービスが古いバージョンで実行されていることを確認:可能であれば、常にステージング環境でロールバック手順を最初にテストしてください。大規模な移行を試みる前に、複数のバックアップコピーを保持してください。
追加リソース
公式ドキュメント
コミュニティリソース
移行ツール
まとめ
この移行により、Dify のベクトルストレージ機能に重要な改善がもたらされます:- パフォーマンスの向上:gRPC サポートにより、クエリとインポート速度が大幅に向上(2〜5 倍高速)
- 安定性の向上:接続処理とエラー回復の強化
- セキュリティ:Weaviate 1.19.0 では利用できないセキュリティ更新とパッチへのアクセス
- 将来性:最新の Weaviate 機能と継続的なサポートへのアクセス
このガイドでカバーされていない問題が発生した場合は、Dify GitHub Issues ページで「weaviate」および「migration」ラベルを付けて報告してください。