近年、ChatGPTをはじめとする生成AI(大規模言語モデル:LLM)の活用が企業内で急速に広がっています。しかし、これらのAI技術を実際のビジネスで活用しようとすると、専門的な知識や開発スキルが必要となり、多くの企業で導入の障壁となっているのが現状です。
そこで注目されているのが、プログラミング不要で生成AIアプリケーションを開発できる「Dify」というプラットフォームです。本記事では、Difyを使って社内向けQAチャットボットを作成する方法を、できるだけ詳しく解説していきます。
Difyとは
基本的な特徴と仕組み
Difyは、生成AI(LLM)を活用したアプリケーションを、プログラミングなしで開発できるオープンソースのプラットフォームです。通常、生成AIを活用したアプリケーションを開発するには、APIの理解やプログラミング、インフラの知識が必要です。しかしDifyを使えば、ブラウザ上の操作だけで、以下のようなアプリケーションを簡単に作成できます。
- 社内向けのナレッジベース検索チャットボット
- 文章の要約や翻訳を行うテキストジェネレーター
- 定型的なタスクを自動化するAIエージェント
- 複数のAI処理を組み合わせた高度なワークフロー
提供形態と選択肢
Difyには2つの利用方法があります。
クラウドサービスとして利用
- すぐに利用開始可能
- インフラの管理不要
- 月額料金が発生
セルフホストで利用
- 完全無料で利用可能
- データを自社で管理可能
- インフラの準備と管理が必要
活用のメリット
Difyを活用することで、以下のようなメリットが得られます:
- 開発コストとリソースの大幅削減
- プログラミング不要でAIアプリケーションを開発可能
- 既存のLLMを簡単に統合
- 開発期間の短縮
- 柔軟なカスタマイズと拡張性
- 様々なビジネスニーズに対応可能
- 独自の知識ベースを簡単に追加
- APIを通じた外部システムとの連携
- 運用管理の容易さ
- 直感的な管理画面でのモニタリング
- リアルタイムでの動作確認と調整
- コンテキストの追加や更新が簡単
開発環境のセットアップ
必要な環境と前提知識
Difyをセルフホストで利用する場合、以下の環境が必要です。
- Docker:コンテナ化されたアプリケーションを実行するためのプラットフォーム
- Git:ソースコードのバージョン管理システム
- 基本的なコマンドライン操作の知識
特にDockerについては、インストールされていない場合、以下の手順で準備する必要があります:
- Docker Desktopのインストール
- Docker公式サイトからインストーラーをダウンロード
- OSに応じたインストール手順に従って設定
- Dockerの動作確認
- ターミナルで
docker --version
を実行し、バージョン情報が表示されることを確認
- ターミナルで
インストール手順の詳細
- ソースコードの取得
git clone git@github.com:langgenius/dify.git
このコマンドで、DifyのソースコードをGitHubからローカル環境にダウンロードします。
- 設定ファイルの準備
cd dify/docker
cp .env.example .env
.env.example
ファイルを.env
としてコピーします。必要に応じて、このファイル内の設定値を編集できます。
- Dockerコンテナの起動
docker compose up -d
このコマンドでDifyの実行に必要なDockerコンテナが起動します。-d
オプションにより、バックグラウンドで実行されます。
- 初期セットアップの実行
- ブラウザで
http://localhost/install
にアクセス - 画面の指示に従って管理者アカウントを作成
- 基本設定を完了
ここまでの手順で、Difyの基本的な開発環境が整います。
社内QAチャットボットの作成手順
プロジェクトの作成とアプリケーションタイプの選択
Difyにログインすると、最初に表示されるダッシュボード画面から新規プロジェクトを作成できます。以下の手順で進めていきましょう。
新規プロジェクトの作成
- ダッシュボードの「新規作成」ボタンをクリック
- 表示されるモーダルで「チャットボット」を選択
基本情報の設定
- タイプ:チャットボット
- 質問応答形式でユーザーとやり取りする形式を選択します
- オーケストレーション:基本
- 複雑なワークフローが不要な場合は「基本」で十分です
- 名前:社内ボット(任意の名前を設定可能)
- 後から変更することもできます
これでプロジェクトが作成され、チャットボットの設定画面に移動します。
LLMプロバイダーの設定と接続
チャットボットが実際に動作するためには、LLM(大規模言語モデル)との接続が必要です。今回は最も一般的なOpenAIを例に説明します。
OpenAI APIキーの準備
- OpenAIのアカウントを作成
- OpenAIのダッシュボードからAPIキーを取得
- APIキーは安全に管理し、外部に漏洩しないよう注意
プロバイダー設定の手順
- Model Type: LLM を選択
- Model Name: gpt-4o-mini を選択
- より高性能な
gpt-4
や、経済的なgpt-3.5-turbo
も選択可能
- より高性能な
- API Key: 取得したAPIキーを入力
接続テストの実施
- 「テスト」ボタンをクリックして接続を確認
- 正常に接続されると、緑のチェックマークが表示されます
そうすると、プロバイダーが設定され、チャットボットが使えるようになります。
知識ベースの構築:コンテキストの追加
チャットボットが社内の情報に基づいて回答できるよう、知識ベースを構築します。Difyでは、この知識ベースのことを「コンテキスト」と呼びます。
対応フォーマットと取り込み方法
Difyは以下のような多様なフォーマットからコンテキストを取り込むことができます:
- ファイルアップロード
- テキストファイル(.txt)
- Markdownファイル(.md)
- PDFファイル(.pdf)
- HTMLファイル(.html)
- Excelファイル(.xlsx, .xls)
- Wordファイル(.docx)
- CSVファイル(.csv)
- Notionからの同期
-
Webサイトからの取り込み
今回はMonacaのPDFファイルを指定します。
インデックス設定の最適化
コンテキストの取り込み時には、以下の設定を適切に行うことで、より精度の高い回答を得ることができます:
テキスト前処理の設定
テキストの前処理では、チャンク数や識別子などの設定を行います。基本的には自動で良いですが、必要があれば指定します。
- チャンクサイズ:
- デフォルト:500
- 長すぎると検索精度が下がり、短すぎると文脈が失われる
- 日本語の場合、300-500程度が推奨
- オーバーラップ:
- デフォルト:50
- チャンク間の重複を設定
- 文脈の連続性を保つために重要
インデックスモードの選択
インデックスモードは「高品質」と「経済的」が選択できます。高品質の場合、ユーザーの入力に対してもLLMを利用します。経済的を選んだ場合には、オフラインのベクトルエンジンを利用します。日本語の場合、インデックス精度が悪い場合もあるので、高品質を選ぶのが良さそうです。
- 高品質モード:
- LLMを使用した高精度な検索
- より正確な回答が可能
- コスト高め
- 経済的モード:
- オフラインベクトルエンジンを使用
- 応答が速い
- コスト低め
検索方式の設定
検索設定では「ベクトル検索」「全文検索」「ハイブリッド検索」のいずれかが選択できます。基本はベクトル、全文検索の両方を用いるベクトル検索が良いようです。
- ベクトル検索:意味的な類似性で検索
- 全文検索:キーワードベースの検索
- ハイブリッド検索:両方を組み合わせた検索(推奨)
チャットボットの動作確認とテスト
作成したチャットボットの動作を確認し、必要な調整を行います。
まず、コンテキストを指定せずに「Monacaの料金体系について教えてください」と質問します。
結果は以下のように、料金体系は分かりませんと返ってきます。
続いてコンテキストを指定します。同様の質問を行うと、PDFファイルに記載されている情報が返ってきます。
まとめ
本記事では、Difyを使用した社内QAチャットボットの作成から運用まで、詳細に解説してきました。Difyの特徴である:
- ノーコードでの開発
- 柔軟なカスタマイズ性
- 充実した管理機能
- APIによる拡張性
これらの要素を活用することで、プログラミングの専門知識がなくても、高度な生成AIアプリケーションを開発・運用することが可能です。
次回は、より具体的なユースケースとして、DifyのAPIを活用したチャットアプリケーションの開発について、実装手順を交えながら解説する予定です。