Dify入門：RAGを最速で導入！AI活用を加速させるインストール法と実践


## Difyとは

Difyは、AIアプリケーションの開発と運用を簡素化するオープンソースのLLMOps（Large Language Model Operations）プラットフォームです。以下の特徴があります。

- **ノーコード開発**: プログラミングスキルがなくても、AIアプリケーションを構築できます。
- **柔軟なカスタマイズ**: 高度なユーザーは、APIを通じてカスタマイズが可能です。
- **多言語サポート**: 様々な言語モデルに対応しています。
- **データセキュリティ**: ローカル環境でのデプロイが可能で、データのプライバシーを確保できます。
- **RAG（Retrieval-Augmented Generation）サポート**: 外部知識を活用したAIアプリケーションの構築が可能です。

## Windows10/11 にDifyのインストール 

Difyをインストールする手順は以下の通りです。

※デプロイしたアプリケーションを、他のユーザと共有する場合は　Dify AmbassadorのSangmin Ahn 様が作られたスクリプトの実行が高速導入可能です。（要グローバルアドレス、80,443ポートの公開、DNS設定）
https://note.com/sangmin/n/n7126d67f2c97

1. **Ubuntu のインストール**
スタートメニューから Windows PowerShell を管理者モードで開きます。
以下のコマンド実行後、ユーザ名、パスワードを入力してインストール完了となります。
   ```bash
   > wsl --update --web-download
   ダウンロード中: Linux 用 Windows サブシステム
   インストール中: Linux 用 Windows サブシステム
   Linux 用 Windows サブシステム  はインストールされました。
   ダウンロード中: Ubuntu
   [==========================89.5%====================       ]
      ～略~
   Installation successful!
   ```   

2. **dockerをインストール**
   ```bash
   $ sudo apt-get update
   $ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
   $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
   $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
   $ sudo apt-get update
   $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose
   $ docker -v 
   Docker version 27.3.1, build ce12230
   ```


3. **リポジトリのクローン**
   ```bash
   $ sudo apt-get install git
   $ git clone https://github.com/langgenius/dify.git
   $ cd dify/docker
   ```

4. **環境設定**
   - `.env.example` ファイルを `.env` にコピーし、必要に応じて設定を変更します。
   ※今回はコピーだけで大丈夫です。
   ```bash
   cp .env.example .env
   ```

5. **Dockerコンテナの起動**
   ```bash
   $ sudo service docker start
   $ sudo docker-compose up -d
   ```

6. **初期設定**
   - ブラウザで `http://localhost` にアクセスし、初期設定を行います。
   - 管理者アカウントの作成を行います。
![001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78224/314c3c63-b093-4cd5-92ad-75d71aef7518.png)

   - メールアドレス、ユーザ名、パスワードを入力してセットアップボタンを押します。

   
7. **動作確認**
   - ログイン後、ダッシュボードにアクセスし、Difyが正常に動作していることを確認します。
   - 右上のアイコンをクリックして「設定」→　[モデルプロバイダー]から利用するLLMを選択します。
   ![003.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78224/df0ca909-13a6-97d1-55d6-698bf9f3a994.png)

   
   

## チャットボットで動作確認

1. **Dify管理画面にログイン**
   - 「最初から作成」をクリック
   - 「チャットボット」を選択
   **アプリ名とモデル（例：GPT-3.5-turbo）を設定**
   - 「チャットボットのオーケストレーション方法」を基本に設定
   - 「アプリのアイコンと名前」を「テスト」に設定
   - 「作成する」をクリックしてアプリを作成
   -  作成したアプリの右下「Chat」タブで動作確認


## RAGチャットの作成

Difyを使用してRAG（Retrieval-Augmented Generation）チャットを作成する手順は以下の通りです：

1. **データセットの準備**
   - RAGで使用する外部知識（ドキュメント、ウェブページなど）を準備します。
   - サポートされているファイル形式（PDF、TXT、DOCXなど）で用意します。

2. **データセットのアップロード**
   - Difyダッシュボードの「ナレッジ」セクションに移動します。
   - 「ナレッジの作成」をクリックし、新しいデータセットを作成します。
   - 準備したファイルをセットし次へを押します。
   ![004.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78224/35e23eca-fb09-447e-e228-579f2077d8b3.png)


3. **インデックスの作成**
   - アップロードしたデータセットに対して、インデックスを作成します。
   - テキストの前処理とクリーニングについては、チャンク設定：自動　インデックスモード：経済的を選択し、[保存して処理]を 押します。
   ![005.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78224/78339bbc-88db-6840-4aac-0d1b8a460d02.png)


4. **アプリケーションの作成**
   - ダッシュボードの「スタジオ」セクションで、「最初から」をクリックします。
   - 「チャットボット」タイプを選択し、アプリのアイコンと名前をにRAGとします。

5. **プロンプトの設定**
   - システムプロンプト（手順）を設定し、RAGの動作を定義します。
   - 例：「ユーザーの質問に対して、アップロードされたデータセットから関連情報を検索し、それを基に回答を生成してください。」

6. **データセットの関連付け**
   - コンテキストから追加を選択し、先ほど用意したデータセットを関連付けます。

7. **テストと調整**
   - チャットインターフェースでテスト質問を行い、RAGが正しく機能しているか確認します。
   - 必要に応じて、プロンプトや設定を調整します。

8. **デプロイ**
   - テストが成功したら、アプリケーションを公開することが可能です。

以上の手順で、Difyを使用してRAGチャットアプリケーションを作成することができます。RAGにより、AIモデルは外部知識を活用して、より正確で文脈に即した回答を生成することが可能になります。