DockerLab

Difyとは何か——セルフホストで始める生成AIアプリ開発【Docker Composeでローカル構築】

スポンサーラベル
Difyの全体像。モデルプロバイダーとナレッジ(RAG)をDify Studioが仲介し、Webアプリ・REST API・Slack連携として公開する。裏側はDocker Composeで15個のコンテナが連携して動く Docker

生成AIを使ったアプリを作りたいとき、ChatGPTのAPIを直接叩くコードを書く前に検討したい選択肢のひとつがDifyです。チャットボットやエージェント、社内文書を検索させるRAGアプリまで、GUI上の操作だけで組み立てられます。オープンソースでセルフホストできるため、社内データを外部のSaaSに預けたくない場合の受け皿にもなります。本記事では、Difyが何をするツールなのかを整理したうえで、Docker Composeを使ってローカル環境に立ち上げ、触れる状態にするところまでを解説します。

1. Difyとは何か

Difyは、LLM(大規模言語モデル)を使ったアプリケーションをノーコード・ローコードで開発できるプラットフォームです。中心になる機能は次の3つです。

  • Studio:チャットボット・エージェント・ワークフローをGUI上のブロックで組み立てる
  • ナレッジ(RAG):PDFやMarkdownなどの社内文書をベクトルDBに取り込み、回答の根拠として参照させる
  • 公開:作ったアプリをWebアプリとして公開する、あるいはREST API・Slack連携として外部から呼び出す

裏側ではDify自身はモデルを持たず、モデルプロバイダーを差し替えて使う構成になっています。OpenAIやAzure OpenAI、AWS Bedrock、あるいはOllamaで動かすローカルLLMなど、用途や制約に応じて後から選び直せます。

Difyの全体像。モデルプロバイダーとナレッジ(RAG)をDify Studioが仲介し、Webアプリ・REST API・Slack連携として公開する。裏側はDocker Composeで15個のコンテナが連携して動く

2. なぜセルフホストする意味があるのか

DifyにはSaaS版(Dify Cloud)もありますが、セルフホストを検討する理由は主に3つあります。

社内データを外部に出せない制約に対応できる:情報システム部門の観点では、社内文書をそのまま外部SaaSのナレッジベースに送りたくないケースは珍しくありません。セルフホストであれば、ナレッジのベクトルDBも含めて自社の管理下に置けます

呼び出し回数やコストを自分で制御できる:SaaS版はプランごとにメッセージ数の上限があります。セルフホストであれば、モデル呼び出しにかかる費用だけを気にすればよく、Difyの利用自体に上限はありません。

既存インフラを活用できる:すでにAWSやオンプレミスの検証環境を持っている場合、そこにDifyを載せるだけで済みます。次回以降の記事では、実際にAWS上に構築する手順も扱います。

3. ローカル環境にDocker Composeで構築する

まずは手元のマシンで動きを確認します。前提としてDockerとDocker Compose v2が使えることが必要です。導入手順はAlmaLinuxにDockerとDocker Composeをインストールする方法でも解説しています。

# リポジトリを取得する
git clone --depth 1 https://github.com/langgenius/dify.git
cd dify/docker

# 設定ファイルをテンプレートからコピーする
cp .env.example .env

# コンテナを起動する(初回はイメージ取得のため数分かかる)
docker compose up -d

Difyは単体のアプリではなく、Web UI・APIサーバー・ワーカー・PostgreSQL・Redis・ベクトルDB(Weaviate)・サンドボックス実行環境など、15個前後のコンテナが連携して動く構成です。docker compose psで全コンテナがUpになっていることを確認してから次に進みます。

# 起動状況を確認する
docker compose ps

# 特定コンテナのログを見たいとき
docker compose logs -f api

メモリはアイドル時点でも2GB台後半を使います。検証機のメモリが4GB程度しかない場合は、他のアプリを終了してから起動することをおすすめします。

なお、この手順はDify公式リポジトリのドキュメントに沿った標準的な起動方法です。今回の記事では実機を用意して1コマンドずつ実行結果を確認したわけではないため、実際に手を動かす際は検証環境で一度動作を確認してから、業務で使う環境に適用してください

4. 初期設定とモデルプロバイダーの登録

コンテナが起動したら、ブラウザでhttp://localhost/installを開きます。Difyは最初にアクセスしたユーザーがそのまま管理者になる仕様なので、社内で共有する前に自分で初期設定を済ませておく必要があります。

管理者アカウントを作成したら、ログイン後に「設定」→「モデルプロバイダー」からLLMを登録します。OpenAIのAPIキーを入力するだけで使い始められますが、社内データを外部に出したくない場合はAWS Bedrockをプロバイダーに追加する構成が候補になります。この設定手順は次回の記事で扱います。

5. 簡単なアプリを作ってみる

モデルプロバイダーを登録したら、Studioから「最初から作成」→「チャットボット」を選び、プロンプトを1つ入力するだけで会話できるアプリが動きます。ここに社内文書を読み込ませたナレッジを紐づければ、RAGを使った質問応答アプリに拡張できます。コードを書かずにここまで確認できるのが、Difyをまず触ってみる価値です

6. まとめ

Difyは、モデルプロバイダーとナレッジをGUI上で組み合わせて生成AIアプリを組み立てられるセルフホスト可能なプラットフォームです。要点を整理します。

  • チャットボット・エージェント・ワークフロー・RAGをノーコードで組み立てられる
  • セルフホストにより、社内データを外部に出さずに済み、呼び出し回数の上限もない
  • 実体はDocker Composeで動く15個前後のコンテナ群で、起動には.envのコピーとdocker compose up -dだけでよい
  • 最初にアクセスした人が管理者になるため、公開範囲には初期設定の段階から注意する

ローカルでの動作確認ができたら、次はAWS上に恒久的な検証環境を作る番です。次回は、CloudFormationを使ってEC2上にDify環境を自動構築する手順を解説します。

コメント

タイトルとURLをコピーしました