🐷

会社の資料を今すぐDifyで要約しよう!

2024/11/02に公開

S__6570011.jpg

はじめに

最近、Qiitaに投稿される記事を見ていると、「Dify」という単語をよく目にするようになりました。記事の内容から、自分のPC上でChatGPTのような「チャットボット」を簡単に作成できるツールのようだと感じたため、今回はDifyの構築方法や操作感について確認してみることにしました。

Difyのインストール

Difyのインストールと環境設定は、公式サイトの以下のページを参考に進めました。

https://docs.dify.ai/ja-jp/getting-started/install-self-hosted/docker-compose

今回はWindows OSgitコマンドを実行できるように事前にインストールしておく必要があります。また、Docker Desktopもあらかじめインストールされていることが前提条件です。これらの手順については、多くのサイトで詳しく解説されているので、そちらを参考にしてください。

事前に必要なこと:

項目 説明
git コマンドプロンプトでgitを実行する必要があるため、事前にインストールをお願いします。
Docker Desktop Difyのサーバ構成はコンテナ環境で提供されているため、一括インストールにDocker Desktopが必要です。

Difyのインストール手順

まず、gitを使ってDifyに関連するモジュールをクローン(ダウンロード)します。

git clone https://github.com/langgenius/dify.git

クローンが完了すると、difyフォルダがカレントディレクトリに作成されます。その中のdockerフォルダに移動します。

cd dify/docker

次に、デフォルトで用意されている.env.exampleファイルを.envとして複製し、環境設定ファイルを作成します。

cp .env.example .env

以下のコマンドを実行して、Dockerで「イメージ」と「コンテナ」を作成します。

docker compose up -d

git pull origin main

docker compose down

docker compose pull

docker compose up -d

Docker Desktopで確認すると、複数のサーバが一斉に起動しているのがわかります。

image.png

ここまででDifyがPC上で起動し、Webブラウザから操作できるようになります。

Difyの起動と設定

ここでは、Difyの起動方法と設定手順について解説します。

Difyの起動

まず、Difyの起動を確認します。Webブラウザで以下のURLにアクセスしてください。

http://localhost

image.png

画面の下部に「管理者アカウントの設定」が表示されているので、そこをクリックしてください。

login.jpg

初回は「メールアドレス」と「パスワード」を設定してサインインします。2回目以降は、登録済みの「メールアドレス」と「パスワード」でログインできます。

APIキーの設定

今回は数あるLLMの中からChatGPTを使ってチャットボットを構築するため、APIキーの設定が必要です。まず、画面右上の自分の名前をクリックし、「設定」を選択します。

image.png

すると、以下のような「設定画面」が表示されるので、左側の「モデルプロバイダー」をクリックしてください。OpenAIというタイルが表示されるので、そのタイルにカーソルを合わせると「セットアップ」ボタンが表示されます。それをクリックします。
image.png

次に、入力画面が表示されるので、指示に従って必要な情報を入力してください。
image.png

主な入力項目

項目 説明
API Key OpenAI APIのキーを入力します。
Organization 個人利用の場合は、特に入力は不要です。

入力が完了したら、「保存」ボタンをクリックします。これでOpenAIのAPIが利用可能になります。

image.png

また、「35のモデル」と表示されている部分をクリックすると、利用可能なLLMモデルの一覧が表示されます。

image.png

ナレッジの登録

次に、「ナレッジ」を登録します。これはRAGと似たような機能です。「ナレッジ」として登録したファイルの情報をベクトル化し、そのファイルに特有の情報を検索できるようになります。まず、上部の「ナレッジ」をクリックしてください。すると、以下の画面が表示されると思いますので、「ナレッジを作成」をクリックします。

image.png

すると、以下のような画面が表示されますので、今回は「テキストファイルからインポート」をクリックして、PDFファイルをアップロードしてみます。「ファイルをドラッグ&ドロップするか」というエリアに、ファイルをドロップしてください。今回は、私が4月から受講を希望している「SBI大学院大学の春学期募集要項」をアップロードし、さまざまな質問をしてみたいと思います。

image.png

ファイルをドロップすると、以下の図のように「次へ」ボタンが表示されるので、クリックしてください。

image.png

次に、以下の図のようにプレビューが表示されるので、画面の一番下にある「保存して処理」ボタンをクリックしてください。
image.png

「ドキュメントに移動」ボタンをクリックしてください。
image.png

今回は1つのドキュメントだけですが、一覧が表示され、「ステータス」が「利用可能」となっていれば、ベクトル化が完了したことを示しています。

image.png

スタジオの作成

次に「スタジオ」を作成します。今回は、先ほどベクトル化した資料を使用して「チャットボット」を作成してみます。まず、上部の「スタジオ」をクリックし、左側にある「最初から作成」を選択してください。

image.png

「アプリのアイコンと名前」で名前を入力して「作成する」ボタンをクリックします。
image.png

画面が表示されたら、試しに右下の「ボットと話す」にプロンプトを入力してみましょう。
image.png

左下には「コンテキスト」という文字が見え、個別にベクトル化されたデータを設定できます。コンテキストの枠内にある「+ 追加」をクリックすると、すでにベクトル化されたドキュメントの一覧が表示されるので、選択して「追加」ボタンをクリックします。

既にベクトル化されているドキュメントが列挙されますので、選択して「追加」ボタンをクリックします。
扱いたいドキュメントの名前を必ず選び、ダイアログの左下に「1選択された知識」という表示が出ていることを確認して「追加」ボタンをクリックしてください。
image.png

設定が完了すると、以下の図のように選択したドキュメントが設定されます。
image.png

プロンプト実行

それでは、プロンプトを実行してみましょう。「願書出願の期限は?」と入力します。
image.png
なかなか良い結果ですね。

次に、「SBI大学院大学の学長は?」
image.png
これも良い結果です。参照した資料も掲載しています。

次は少し難しい質問をしてみますので、資料を参照しているかどうかが分かるでしょう。
「レポート課題等への対応のために必要なものは?」
image.png
パーフェクト!

これでRAGは実現できました。

アプリを公開する

これまでの画面は開発者向けでしたが、今度は開発者以外の一般の方にも公開する必要があります。右上の「公開する」ボタンをクリックしてください。

image.png

上図のようになるので「アプリを実行」をクリックしてください。

image.png

「Start Chat」をクリックします。

image.png

では、同じ質問をしてみたいと思います。「願書出願の期限は?」

image.png

これで、利用者もチャットボットが利用できるようになりました。

ローカルLLMの利用

ローカルLLMであるOllamaも利用することができます。

image.png

Ollamaのタイルにカーソルを合わせ、「+モデル追加」をクリックします。すると、以下のようなダイアログが表示されるので、「Model Name」と「Base URL」にそれぞれ入力します。今回はllama3.2を適用したいので、その名前を入力し、「Base URL」には「http://host.docker.internal:11434」と入力しました。

image.png

これにより、以下のようにOllamaも登録されましたので、OpenAIと同様にLLMembeddingを利用できるようになります。

image.png

おわりに

今回はDifyを導入し、生成AIを手軽に使ってみることに挑戦しました。操作方法は簡単で、ある程度の知識があれば誰でも利用できそうです。また、この利用シチュエーションについて考えてみると、例えば会社で分厚いPPTやWordなどの資料を手渡されることはありませんか。もし上司から資料を受け取ったら、すぐにDifyでドキュメントをベクトル化し、さまざまな質問をすることができます。特にOllamaLLMembeddingを適用することで、外部に重要な情報が漏れることもなく、安心して生成AIを利用できるでしょう。

長文を最後までお読みいただき、ありがとうございました。

Discussion