こんにちは、OSS よろず相談室の鹿島です。
今回は、DifyとAmazon Bedrockを連携させて、チャットボットとRAG(検索拡張生成)を構築する手順を解説します。
本記事はその第一弾として、まず土台となるDifyの環境構築を行います。
はじめに
Difyの概要や全体像については、弊社エンジニアの解説記事がありますので、ご参照ください。Difyの概要から構築、機能に至るまでDifyを丸ごと学べる記事になっています。
当記事では、クリーンなLinux環境(RHEL系を想定)を前提に、ゼロからDifyの実行環境を立ち上げる手順にフォーカスします。
すでにDockerなどのコンテナ環境をお持ちの方は、「ステップ3」から読み進めてください。
ステップ1:Docker環境のセットアップ
DifyはDockerコンテナとして提供されているため、最初にコンテナ実行環境であるDockerをインストールします。
今回はRHEL系のOSを想定し、dnfコマンドでDockerの公式リポジトリを追加・インストールします。
# Dockerリポジトリの追加
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Docker関連パッケージのインストール
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストール後、docker composeのバージョンを確認します。v2以上が表示されていればOKです。
$ docker compose version
Docker Compose version v2.37.3
ステップ2:Dockerの起動と動作確認
Dockerサービスを起動し、OS起動時に自動実行されるよう有効化します。
# Dockerの起動
$ sudo systemctl start docker
# Dockerの自動起動設定
$ sudo systemctl enable docker
正しくインストールできたかを確認するため、定番のhello-worldコンテナを実行してみましょう。「Hello from Docker!」と表示されれば成功です!
$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
ステップ3:Difyのインストールと起動
いよいよDify本体を準備します。
まずgitをインストールし、Difyの公式リポジトリからソースコードをクローンします。
# gitのインストール
$ sudo dnf install git -y
# Difyのリポジトリをクローン
$ git clone https://github.com/langgenius/dify.git
次に、ダウンロードしたdify/dockerディレクトリへ移動し、設定ファイルのテンプレート (.env.example) をコピーして本番用の設定ファイル (.env) を作成します。
$ cd dify/docker
$ cp .env.example .env
💡ポイント
.envファイルには、後々APIキーなどの重要な情報を書き込むことになります。
以下のコマンドでDifyを起動しましょう。関連するコンテナが一括でバックグラウンド起動します。
$ docker compose up -d
少し待ってからdocker psコマンドでコンテナの状態を確認します。dify-apiやdify-webなどがSTATUS欄にUpと表示されていれば、正常に起動しています。
$ docker compose ps
# ↓こんな感じで複数のコンテナが表示されていればOK
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
109f55191a6a nginx:latest "sh -c 'cp /docker-e…" 46 hours ago Up 3 hours 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp docker-nginx-1
0eeebd7d9fd8 langgenius/dify-api:1.4.3 "/bin/bash /entrypoi…" 46 hours ago Up 3 hours 5001/tcp docker-api-1
527f9eba0c88 langgenius/dify-api:1.4.3 "/bin/bash /entrypoi…" 46 hours ago Up 3 hours 5001/tcp docker-worker-1
7c53e1d71537 langgenius/dify-plugin-daemon:0.1.2-local "/bin/bash -c /app/e…" 46 hours ago Up 3 hours 0.0.0.0:5003->5003/tcp, [::]:5003->5003/tcp docker-plugin_daemon-1
b8dc25d8f9d2 redis:6-alpine "docker-entrypoint.s…" 46 hours ago Up 3 hours (healthy) 6379/tcp docker-redis-1
439bdecdb34f ubuntu/squid:latest "sh -c 'cp /docker-e…" 46 hours ago Up 3 hours 3128/tcp docker-ssrf_proxy-1
731465578b52 postgres:15-alpine "docker-entrypoint.s…" 46 hours ago Up 3 hours (healthy) 5432/tcp docker-db-1
80f9783bad96 langgenius/dify-sandbox:0.2.12 "/main" 46 hours ago Up 3 hours (healthy) docker-sandbox-1
cab12a5febe0 langgenius/dify-web:1.4.3 "/bin/sh ./entrypoin…" 46 hours ago Up 3 hours 3000/tcp docker-web-1
ad28ed866ba2 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" 46 hours ago Up 3 hours docker-weaviate-1
ステップ4:Difyにアクセス
ブラウザから http://<サーバーのIPアドレス> にアクセスし、Difyの初期設定画面を開きます。
http://<サーバーのホスト名またはIPアドレス>/apps
ユーザー登録画面が出ますので、アカウントを登録します。

そのアカウントでログインします。

ステップ5:モデルプロバイダの設定
チャットボットを作成する前に、頭脳となるLLM(大規模言語モデル)をDifyに設定する必要があります。このLLMの提供元をDifyでは「モデルプロバイダ」と呼びます。
まずは設定画面を見てみましょう。
画面右上のユーザ名をクリックして「設定」を選びます。

「モデルプロバイダー」を選択すると、追加可能なモデルプロバイダーの一覧が表示されます。
今回はAmazon Bedrockを選択してインストールします。


モデルプロバイダーとは、LLMの提供元(プロバイダー)のことです。
LLMとは、具体的な大規模言語モデル (例: GPT-4o, Gemini)のことです。
以下は、著名なモデルプロバイダーとLLMの一覧です。
名前を聞いたことがあるので、イメージしやすいのではないでしょうか。
モデルプロバイダー (提供元) | LLM (具体的なモデル名) |
---|---|
OpenAI | GPT-4o, GPT-4, GPT-3.5-turbo |
Gemini 1.5 Pro, Gemini 1.5 Flash | |
Anthropic | Claude 3 Opus, Claude 3 Sonnet, Claude 3 Haiku |
Amazon Bedrock | (下記の様々なLLMを選択して利用可能) ・Amazon: Titan Text, Titan Multimodal Embeddings ・Anthropic: Claude 3 ファミリー ・Cohere: Command, Embed ・Meta: Llama 3 ・Mistral AI: Mistral Large, Mistral 7B ・AI21 Labs: Jurassic-2 ファミリー ・Stability AI: Stable Diffusion |
Amazon Bedrockを利用すると、Amazon が提供するLLM 以外にもAnthropic 社の Claude や Meta 社の Llama など、業界の主要なLLMを一つのプラットフォーム上で比較・利用できるという点が最大の特徴です。
おわりに
今回は、Linuxがある状態から、コンテナ環境、Difyの構築までの説明でした。
次回の【実践】Dify + Amazon Bedrockで、ゼロからチャットボットと RAG を作る②では、いよいよAmazon Bedrock側の設定と、DifyでBedrockのモデルを利用する設定について、詳しく解説していきます。