社内にあるマニュアルや規程、過去の議事録をAIが検索して答えてくれるQAボットを作りたい、という要望は多い。Dify.aiはその用途に向いたツールで、RAG(Retrieval Augmented Generation)の仕組みをGUI上で設定できる。

Dify.aiとは何か

Dify.aiはオープンソースのLLMアプリ開発プラットフォームで、チャットボット・AIエージェント・ワークフローをノーコードで作れる。自社のドキュメントをナレッジベースとして登録すると、AIがそのドキュメントを参照しながら質問に答えてくれる仕組みを持っている。

クラウド版(dify.ai)とセルフホスト版(Dockerで自前サーバーに立てる)の二種類あり、情報管理が厳しい士業事務所や企業では、セルフホストを選ぶケースが多い。

インストールと初期設定

クラウド版はdify.aiにアクセスしてGoogleアカウントやメールアドレスで登録すれば、すぐに使い始められる。セルフホスト版はDockerが動くサーバー(VPSでも可)に以下のコマンドで立てられる。

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d

ブラウザでhttp://localhostにアクセスすると管理画面が開く。初回はAdmin用のメールアドレスとパスワードを設定する。

モデルの設定は「設定」→「モデルプロバイダー」から行う。AnthropicのAPIキーを入れればClaudeが使えるようになり、OpenAIのAPIキーを入れればGPTが使える。複数のモデルを登録して、アプリごとに使い分けることもできる。

ナレッジベースの設定

Difyのナレッジベースは、PDFやWord文書、テキストファイルをアップロードして作る。アップロードしたファイルは自動的にチャンク(断片)に分割され、埋め込みベクトルとして保存される。

設定手順は「ナレッジ」→「ナレッジベースを作成」→ファイルをアップロード→チャンクサイズと重複の設定→インデックス作成、の流れだ。

チャンクサイズは一般的に500〜1000トークンが使いやすいが、FAQ形式の短いドキュメントなら小さめに、長い仕様書なら大きめに設定する方が精度が上がることがある。

士業事務所であれば、よくある質問のリスト・就業規則・税務申告の手引きなどをナレッジベースに入れると、スタッフが「あの規定どこだっけ」と探す時間を短縮できる。

チャットボットアプリの作成

ナレッジベースが準備できたら「スタジオ」→「アプリを作成」でチャットボットを作る。

システムプロンプトには「あなたは○○会社の社内QAアシスタントです。ナレッジベースに基づいて回答してください。情報がない場合は『ナレッジベースに情報が見つかりませんでした』と答えてください」という形で役割と回答方針を指定する。

ナレッジベースの接続は「コンテキスト」欄に先ほど作ったナレッジベースを追加するだけだ。複数のナレッジベースを同時に参照させることもできる。

引用表示をオンにすると、回答のどの部分がどのドキュメントのどの箇所に基づいているかを明示してくれる。情報の正確性を確認しやすくなるので、業務用途では有効にしておくことを勧める。

ClaudeとOpenAIの使い分け

Difyではアプリごとに使用するモデルを変えられる。日常的な質問応答ならgpt-4o-miniのような軽量モデルでも十分で、コストを抑えられる。法的な文書の解釈や複雑な文脈の理解が必要な用途では、Claude 3.5 SonnetやClaude 3 Opusの方が精度が出やすい。

キッチン系メーカーの社内用途で試したところ、製品仕様書への質問応答はClaudeの方が文脈理解が正確で、長い文書からの情報抽出に強みがあった。

運用Tips

ナレッジベースのドキュメントは定期的に更新する仕組みを作っておくことが重要だ。古い情報に基づいた回答が出ると、ボットへの信頼が下がる。

回答に対してサムズアップ・ダウンを付けられるフィードバック機能を有効にしておくと、どの質問でどんな回答が出たかをログとして確認できる。精度改善のヒントになる。

本番運用前に「わかっている正解がある質問」を100件ほどテストして、精度を確認する工程を省かない方がいい。本番で使われてから「回答がおかしい」と気づくと、ボットへの信頼回復が大変になる。