【はじめに】
仕事で疑問が生じたとき、AIチャットボットを活用して解決することが増えました。
しかし皆様、このような問題に悩まされた経験はございませんか?
- AIチャットボットが学習していない内容に関しては、欲しい情報が得られない。(ニッチな質問には答えてもらえない)
- 機密情報をクラウドにアップロードすることが情報セキュリティ上NGなため、AIチャットボットに参考情報を渡せない。
そこで今回は、ニッチな質問にも対応できる & 機密情報を安全に渡せる画期的なAIチャットボット『ローカルで動くLLM+RAGの環境』を構築しましたので、その事例をご紹介します!
【今回作ったもの】
Dify(※1)とOllama(※2)を使い、ローカルで動くLLM+RAGの環境を構築しました!

※1 Dify:プログラミングの知識がなくても直感的なインターフェースを使ってAIアプリケーションを簡単に開発できるオープンソースプラットフォーム。
※2 Ollama:ローカル環境で大規模言語モデルを手軽に扱えるオープンソースのツール。
【どうしてDifyとOllamaを選んだのか】
下記の条件を踏まえて選びました。
✓ 機密情報を扱うため、ローカルだけで動く&RAGが扱えるシステムが必要。
✓ コーディングはチーム内の展開難易度が上がるため、UI操作だけで利用できるシステムにしたい。
✓ 商用利用可能&無料で使えるツールだと嬉しい。
Dify
- ローカルで動かすなら無料。
- GUIで操作ができる。
- ファイルアップロードだけでRAGが利用できる。
Ollama
- Difyと連携できる。
- デフォルトで用意されているものだけでなく、フリーで公開されているLLMが利用できる。
【システム構成】
UbuntuにDockerをインストールし、その上にDifyとOllamaをインストールするだけです。

■Dockerのインストール
1. Dockerのリポジトリを設定します。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
2. 次のコマンドを実行し、Dockerのパッケージをインストールします。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
★詳細はDockerのオフィシャルドキュメントを参照ください。
https://docs.docker.com/engine/install/ubuntu/■Difyのインストール
1. Difyのソースコードをローカルにクローンします。
# 現在の最新バージョンは0.15.3だと仮定すると
git clone https://github.com/langgenius/dify.git --branch 0.15.3
2. Difyソースコードのdockerディレクトリに移動し、次のコマンドを実行してDifyを起動します。
cd dify/docker
3. 環境配置ファイルをコピーします。
cp .env.example .env
4. Docker コンテナを起動する システムにインストールしたDocker Composeのバージョンをベースに、相応しい命令を使ってコンテナを起動します。
docker compose up -d
★詳細はDifyのオフィシャルドキュメントを参照ください。
https://docs.dify.ai/ja-jp/getting-started/install-self-hosted/docker-compose■Ollamaのインストール
1. リポジトリを構成します。
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
2. NVIDIA Container Toolkit パッケージをインストールします。
sudo apt-get install -y nvidia-container-toolkit
3. NVIDIAドライバーを使用するようにDockerを構成します。
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
4. コンテナを起動します。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
★詳細はOllamaのオフィシャルドキュメントを参照ください。
https://hub.docker.com/r/ollama/ollama【開発環境】
OS | Ubuntu 24.04 |
---|---|
CPU | 12th Gen Corei7-12700F (4.80GHz) |
RAM | 16.0GB |
GPU | NVIDIA GeForce RTX 3060 Ti (8GB) |
Ollamaによると、LLMの学習に使われたパラメータ数基準で、GPUは下記くらい必要とのことでした。
7B model requires 〜4 GB
13B model requires 〜8 GB
30B model needs 〜16 GB
65B model needs 〜32 GB
GPUが足りないときはCPUで実行するため時間がかかります。
ちなみに、ChatGPT-4のパラメータ数は100兆個[100T(=100,000B)]とのことです。
【回答精度検証】
『夏目漱石の小説、「吾輩は猫である」について3行で教えてください』 と質問して、今回使ったローカルLLM(ELYZA社開発)と ChatGPT-4の回答を比較してみました。
ローカルLLM | ChatGPT-4 |
---|---|
夏目漱石の小説「吾輩は猫である」は、1905年から1906年に連載された日本の小説です。物語の主人公は飼い猫の「私」が語り手となり、日常生活や思想を通して人間社会と猫の世界を描いています。作家・文筆家である漱石自身も登場し、自伝的要素を含みながら、猫の視点から人間社会の風刺や哲学を展開しています。
|
『吾輩は猫である』は、夏目漱石が1905年に発表した小説で、無名の猫が一人称で人間社会を観察し、風刺する物語です。猫はさまざまなキャラクターと出会い、明治時代の社会の矛盾や人間の性格について考察します。この作品は日本文学において重要な地位を占め、後の作家にも影響を与えています。
|
なかなか悪くない精度!
回答を出力レスポンスタイムはローカルで構築しているためか、ChatGPT-4に比べても1秒ほど早い精度で出力されました。ChatGPT-4でも2、3秒で回答が出力されますが、それより早く回答が出力されました。
【ポイントまとめ】
■Point 1
Ubuntuにdockerをインストールし、その上にDifyとOllamaをインストールすることで、ニッチな質問にも対応できる&機密情報を安全に渡せるオリジナルAIチャットボットを簡単に構築できる。
(ローカル環境で動作 / ブラウザからアクセス可能)
■Point 2
ただし、構築しただけでは正答率が低いため、RAGの検索・回答の精度を向上させるアプローチや、最適なLLMの選定が必要。
【さいごに】
DifyとOllamaを使い、ローカルで動くLLM+RAGの環境を作ったお話でした!
情報をチャットボットに集約し、『分からないことはひとまずチャットボットに訊く』 という体制を構築できたことで、自身の業務も、部門内での情報共有も楽になりました。
既存のAIチャットボットにお悩みの方、ぜひオリジナルのローカルAIチャットボットを作ってみてはいかがでしょうか?
以上です。 ご高覧ありがとうございました!
モバイル事業部 第2システム部
池田 健人
※「NVIDIA」、「GeForce」などの名称は、NVIDIA Corporationの登録商標です。
※本ページに記載されている製品名、サービス名、会社名などは、それぞれの企業の登録商標または商標です。
【公式X(旧Twitter)】