Lifematics Corporate Blog

Lifematics社のコーポレートブログへようこそ!

オンプレミス環境でのDify構築ガイド

こんにちは!前回の記事では、自社環境での生成AI活用をお考えの皆様向けに Dify × Ollama × ローカルLLMモデルでAI活用基盤を構築するメリットについてご紹介しました。 今回は、実際にその組み合わせで構築する場合の手順をご紹介します。 OllamaとGPUを使用してチャットモデルと埋め込みモデルをDifyに追加する手順のほか、簡単なRAG(Retrieval-Augmented Generation)アプリケーションの作成例も含まれています。

前提条件

本手順を実施するにあたり、以下の環境が必要です。

  • Docker および Docker Compose がインストールされていること
  • NVIDIA GPU が搭載されており、NVIDIA ドライバがインストールされていること
  • sudo 権限を持つユーザーアカウント
  • 十分なディスク容量とメモリ(推奨: メモリ16GB以上)

動作確認環境

目次

  1. Difyのインストール
  2. ユーザーの追加
  3. チャットモデルの追加
  4. 埋め込みモデルの追加
  5. RAGアプリケーションの作成

1. Difyのインストール

まず、Docker Composeを使用してDifyのインストールを行っていきます。 Dify標準のdocker-compose.yamlを利用することで、かなりシンプルにインストールすることができます。

参考: Dify公式ドキュメント

1.1 必要なツールのインストール

Difyのセットアップに jq コマンドを使うので、インストールしておきます(最新版を自動取得するため)。

sudo apt-get update
sudo apt-get install -y jq

1.2 Difyのソースコードを取得

最新バージョンのDifyをGitHubからクローンします。

git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git

1.3 環境変数の設定

Dockerディレクトリに移動し、環境変数ファイルを準備します。

cd dify/docker
cp .env.example .env

必要に応じて .env ファイルを編集します。デフォルト設定でも動作しますが、本番環境では適切な設定変更を推奨します。

1.4 Difyの起動

Docker Composeを使用してDifyを起動します。初回起動時は、イメージのpullが行われるため数分かかります。

sudo docker compose up -d

1.5 動作確認

Webブラウザhttp://<サーバーのIPアドレス> にアクセスします。初回アクセス時には、管理者ユーザーのセットアップ画面が表示されます。

以下の情報を入力してセットアップを完了します。

  • メールアドレス
  • ユーザー名
  • パスワード

セットアップが完了すると、ワークフローのスタジオ画面にアクセスできるようになります。


2. ユーザーの追加

次に、Difyにチームメンバーを追加していきます。

2.1 設定画面へのアクセス

  1. 画面右上のアカウントアイコンをクリック
  2. 「設定」を選択

2.2 メンバーの招待

  1. 設定画面の「招待」ボタンをクリック
  2. 招待したいメンバーのメールアドレスと権限を入力

※メール送信にはSMTPサーバーの設定が必要になりますが、表示される招待リンクを該当のメンバーに直接共有すれば招待できます。


3. チャットモデルの追加

Difyの基本的なインストールができたので、Ollamaを使用してGPUベースのチャットモデルをDifyに追加します。

3.1 Ollamaサーバーの起動

Docker Composeを使用してOllamaサーバーを起動します。以下の内容で docker-compose.yml ファイルを作成します。

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
    ports:
      - "11434:11434"
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    volumes:
      - open-webui:/app/backend/data
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: always

volumes:
  ollama:
  open-webui:

作成後、以下のコマンドで起動します。

sudo docker compose up -d

3.2 チャットモデルのインストール

gpt-ossモデル(20Bパラメータ版)をインストールします。

sudo docker exec ollama ollama run gpt-oss:20b

3.3 Open WebUIでの動作確認

Webブラウザhttp://<サーバーのIPアドレス>:3000 にアクセスし、Open WebUIを開きます。

  1. ユーザー名とパスワードを入力してサインアップ
  2. チャット画面で質問を入力し、応答を確認

3.4 DifyへのOllamaの追加

  1. DifyのWeb UIにアクセス
  2. 「モデルプロバイダ」からOllamaプラグインをインストール
  3. インストール後、以下の情報でモデルを追加(「Base URL」のIPアドレス部分は、実際に動作しているサーバのものを指定)
  4. 追加モデルを、システムモデルとしても設定する(ここで設定したモデルがデフォルトで利用される)

3.5 チャットアプリの作成

  1. Difyのホーム画面から「スタジオ」→「最初から作成」→「チャットフロー」を選択
  2. アプリケーション名を入力して作成
  3. デフォルトのチャットフローが作成されるので、「プレビュー」から動作確認できる

4. 埋め込みモデルの追加

RAGアプリケーションを実装するために、埋め込みモデルを追加します。

4.1 埋め込みモデルのインストール

Ollamaで nomic-embed-text モデルをインストールします。

sudo docker exec ollama ollama pull nomic-embed-text

4.2 Difyへの追加

  1. DifyのWeb UIで、チャットモデルと同様の手順でOllamaを選択
  2. 以下の内容でモデルを追加(「Base URL」のIPアドレス部分は、実際に動作しているサーバのものを指定)

5. RAGアプリケーションの作成

埋め込みモデルとチャットモデルを組み合わせて、RAGアプリケーションを作成します。

5.1 ナレッジベースの作成

  1. 「ナレッジベース」→「ナレッジベースを作成」を選択
  2. ナレッジベース名を入力
  3. PDFファイルやテキストファイルをアップロード
  4. デフォルト設定で処理を開始

インデックス作成処理が完了するまで待ちます。

5.2 ドキュメントの確認

  1. ドキュメントの詳細画面で分割結果を確認
  2. 「検索テスト」機能を使用して、クエリに対する検索結果を確認

5.3 RAGワークフローの構築

  1. 「探索」→「Knowledge Retrieval」から「知識リトリーバル+チャットボット」を選択
  2. ワークフロー画面が表示される
  3. Knowledge Retrievalノードをクリックし、作成したナレッジベースを選択
  4. LLMノードをクリックし、以下を設定
    • モデル: gpt-oss:20b
    • コンテキスト: Knowledge Retrievalノードの result を選択

5.4 動作確認

  1. 一度ブラウザをリロード(LLMノードの変更後に認証エラーが出る場合があるため)
  2. 「プレビュー」から実行
  3. ナレッジベースの内容を引用した回答が返ってくることを確認

まとめ

本記事では、オンプレミス環境でのDifyの構築手順、およびOllamaを使用したチャットモデルと埋め込みモデルの追加方法をご紹介しました。RAGアプリケーションの作成例も含めて、閉じたネットワーク内で動作するLLMアプリケーション開発環境を構築できることを確認しました。 本記事が、オンプレミス環境でのLLMアプリケーション開発の一助となれば幸いです。

トラブルシューティング

GPUが認識されない場合

  • NVIDIAドライバが正しくインストールされているか確認
  • Docker Composeファイルで capabilities: [gpu] が正しく設定されているか確認
  • nvidia-smi コマンドでGPUが認識されているか確認

Ollamaのプラグインが表示されない場合

インストール実行後、画面に反映されるまでタイムラグがあります。数分待ってから再度確認してください。