TL;DR
ローカルのWindows PCで、
Open WebUIとOllamaを使ってAIチャットボットをホスティングし、プロンプトを叩いてみました。
AIチャットボット構築
Ollama
Ollamaにつきましては、
公式サイトで配布されているインストーラーをポチポチするだけでインストールできます。
インストール後、Ollamaを起動し、
ログにollamaサーバーが起動した旨が記載されていれば概ね問題なさそうです。
app.log:
time=2024-09-08T17:30:36.144+09:00 level=INFO source=server.go:135 msg="starting server..."
time=2024-09-08T17:30:36.576+09:00 level=INFO source=server.go:121 msg="started ollama server with pid 16112"
Open WebUI
Dockerイメージが公式から配布されていまして、以下のdocker-compose.yamlでWebUIをホスティングすることができます。
version: '3'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
volumes:
- ./docs:/app/backend/data/docs # RAG用のドキュメント格納場所
restart: always
ports:
- "3000:8080"
environment:
- WEBUI_AUTH=False
- DOCS_DIR=/app/backend/data/docs
extra_hosts:
- "host.docker.internal:host-gateway"
起動後、管理者パネル
>モデル
> Ollama.com からモデルをプル
から使用するLLMのモデルをダウンロードすることが可能です。ここでは gemma2:2b
というモデルを取り上げます。
管理者パネル画面: http://localhost:3000/admin/settings
RAGを使わずにプロンプトを叩いてみる
まず、RAGを使わずに普通にgemma2:2b
でプロンプトを叩いてみます。
プロンプト:
琵琶湖に生息する魚は?
応答:
琵琶湖には、様々な種類の魚が生活しています。主な魚種としては、以下のようなものが挙げられます:
**1. 重要な食用魚:**
* **マス(サケ):** 琵琶湖の代表的な魚で、食用として広く知られています。
* **イカナゴ:** 琵琶湖特有の淡水魚で、食用に利用されます。
**2. 他の食用魚:**
* **コイ:** 琵琶湖の湖底に生息する魚で、食用に利用されます。
* **アナゴ:** 琵琶湖の湖底に生息する魚で、食用に利用されます。
**3. 水辺の魚:**
* **サクラマス:** 琵琶湖の湖水に生息する、サケ科の淡水魚。
**4. 珍しい魚:**
* **ハゼ:** 琵琶湖の淡水に生息するハゼ類は、食用に利用されます。
* **ヒラメ:** 琵琶湖の湖底に生息する魚で、食用に利用されます。
これらの魚種以外にも、様々な種類の魚が琵琶湖に生息しています。
詳細な情報については、以下を参照ください。
* **琵琶湖の魚図鑑:** https://www.japanseafish.com/
* **琵琶湖観光協会:** https://www.biwa-kanko.jp/
ちらほら海水魚が混ざっていたりして、情報に誤りがありそうです。
URLも存在しないものになっています。
RAGの設定を行う
docker-compose.yamlのほうでマウントしている./docs
ディレクトリ配下に次のテキストファイルを配置します。
doc.md:
琵琶湖には、ピラニア、ホホジロザメ、アカエイ、アリゲーターが生息しています。
その他の生物は生息していません。
※ RAGの検索結果を分かりやすくするために極端な内容にしています
ファイルを配置した後、管理者パネルでスキャンを実行すると設定完了です。
RAGを使ってプロンプトを叩いてみる
次に、RAGを有効にした状態で、同じプロンプトを再度投げてみました:
ドキュメントの内容に基づいた回答が返ってきましたが、途中で英語が混ざっている点に改善の余地があります。
おわりに
このブログでは、OllamaとOpen WebUIを使用したAIチャットボットのホスティング方法、およびRAGの設定とテストについて解説しました。RAG設定により、ローカルに保存されたドキュメントから情報を取得して使用することができますが、言語の一貫性や内容の正確性には注意が必要です。