オフラインで完結する「社内マニュアル」AIチャットをつくってみた!

こんにちは!
九保すこひです(フリーランスのITコンサルタント、エンジニア)

さてさて、前回記事「ベクトルDB + ローカルLLMで見積書のあいまい検索をつくってみた!」では、生成AIであいまい検索をつくってみました。

そして、その中でもう1つ面白そうなものを発見したんです。

それが・・・・・・

Open WebUI(おーぷん・うぇぶゆーあい)

です。

Open WebUIは、ChatGPTのようなチャットページが使えるテクノロジーで、もちろん(ローカル環境でつかえる生成AIの)Ollamaにも対応しています。

※というか元々Ollama用につくられたそうです。

こんな感じ↓↓↓

つまり、コマンドでカタカタやらなくても、ブラウザ上で質問できるようになるスグレモノです。

で、このOpen WebUIで何かできないか考えていたところ1つ閃きました。

社内マニュアルのAI化

です!

というのも、社内マニュアルはバリバリの社外秘なので、ネット上にアップするのは懸念が残ります。なので、ローカルの生成AIと特に親和性が高いと思ったんですね。

そこで!

今回は「社外秘の社内マニュアルをローカルでAI化する」というテーマで記事をお届けします。

以下のような方は、ぜひ最後まで読んでくださいね!

  • 「社内ネットワークだけでAI検索したい」
  • 「情報漏えいを防ぎながら、生成AIを社内に導入したい」
  • 「現場からマニュアルが探しにくいという声が上がっている」
  • 「属人化しているノウハウを、AIで回答できるようにしたい」
  • 「新人やアルバイトからの同じ質問対応に、時間が削られている」
  • 「マニュアルはあるけど、誰も読んでない…」
  • 「24時間365日、社員からの業務問い合わせに対応したい」

「今回はプログラムなしで
実装できますよ!」

必要になるものをインストールする

今回必要なのは、以下3つです。

  • Ollama:ローカルLLM(オフラインで使えるAI)
  • Qdrant:ベクトルDB
  • Open WebUI:ChatGPTみたいなウェブページ

サクッとインストールしたいので、Docker Composeをつかいます。
以下のファイルをつくってください。

docker-compose.yaml

version: '3.8'
services:
open-webui:
image: ghcr.io/open-webui/open-webui:latest
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- VECTOR_DB=qdrant
- QDRANT_URI=http://qdrant:6333
- RAG_EMBEDDING_ENGINE=ollama
- RAG_EMBEDDING_MODEL=embeddinggemma:300m
ports:
- "0.0.0.0:3000:8080"
depends_on:
- ollama
- qdrant
networks:
- ai-network

ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ./ollama_data:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0:11434
networks:
- ai-network

qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
volumes:
- ./qdrant_storage:/qdrant/storage
networks:
- ai-network

networks:
ai-network:
driver: bridge

好きなフォルダをつくって、このファイルを設置し、以下のコマンドを実行します。

docker-compose up -d

インストールが完了したら、以下のコマンドで確認できます。

docker-compose ps

以下のような感じになっていればOKです!

そして、忘れてはいけないのがOllamaのモデルをインストールすることです。

以下のコマンドを実行してください。

docker-compose exec ollama ollama pull gemma2:2b
docker-compose exec ollama ollama pull embeddinggemma:300m

インストールできているかのチェックは以下コマンドです。

docker-compose exec ollama ollama list

以下のようになっていれば完了です!

Open WebUIの設定をする

Docker Composeを起動した時点でOpen WebUIがつかえるようになっています。「http://localhost:3000/」にアクセスしてください。

Get startedの上にあるボタンをクリックします。

ログイン情報を入力して送信します。

※ローカルで動かす場合は、擬似的なものでOKです。

これで、以下のようにChatGPTのような画面がつかえるようになります。

では、ページ左上にあるモデルを「gemma2:2b」に変更します。

この状態で、簡単に話しかけてみましょう。

すると、以下のようにOllamaが回答してくれます!

オフラインで完結してるのに、すごいですね!

社内マニュアル用のRAGをつくる

まずRAGというのは、生成AIが参考データを使えるようにする(検索)機能と考えてください。今回はベクトルDBQdrantをつかって実装します。

また、社内マニュアルはGitHubで公開されているBasecampのハンドブックをつかいます。

Basecamp:ハンドブック

内容は英語ですが、以下3つのような内容がまとまっています。

  • 福利厚生について
  • 働き方・仕事の進め方
  • キャリア形成

では、GitHubリポジトリからファイルをダウンロードして展開しておきます。

そして、Open WebUIの左側メニューから「Workspace > Knowledge」を選択。

Knowledgeページが開くので、「+ New Knowledge」ボタンをクリック。

以下のように

  • タイトル
  • 説明文

を入力して保存します。

すると、以下のようなページが表示されます。

では、ここからがRAGの作成です。
先ほどGitHubからダウンロードしたファイルをドラッグ・アンド・ドロップします。

すると(少し時間がかかりますが)自動的にそれらのファイルを処理してRAG化してくれます。

処理が完了したら、「#」と入力すると、選択肢がでるのでKnowledgeで登録したものを選びます。

この状態で質問すると、Basecampハンドブックの中から回答してくれるようになります!

テストしてみる

では実際にテストしてみましょう!

いくつか質問してみましたが、はやりうまくいく場合とそうじゃない場合がありましたので、以下の形式でまとめておきます。

  • 質問内容
  • 生成AIの回答(を意訳したもの)
  • 私の評価

※なお、どちらのパターンでもそうですが、内容は同じでもちょっと質問テキストを変えると成功したり失敗したりするようでした。この辺は生成AIの特徴ですね。

うまくいった質問

Q:1週間に働くのは、何時間が上限ですか?

ハンドブックよれば、週40時間労働が上限として設定されています。ただし、会社は柔軟な対応をしており、追加で働いた時間については代休を取得することが可能です。

評価:

マニュアルには「We limit ourselves to a 40-hour (32-hour in the summer) work week. 」と書かれているので、正しいです。また代休についても言及があるのは嬉しいですね。ただ、欲を言えば夏は32時間になるというのも重要なので教えてほしいところです。

Q:生命保険はどこの会社?

MetLife の生命保険を提供しています。

評価:

マニュアルには「37signals offers a $400,000 life insurance/AD+D policy to all staff through MetLife.」とあるのでメットライフで正しいです。

Q:コワーキングスペースの費用は月いくらまで?

月200ドルが上限です。

評価:

「You can expense up to $200/month towards renting coworking space in your city. 」とあるので、正しいです。

Q:経費を報告しないといけないのは、いくらから?

75ドルを超える場合、領収書のアップロードが必要です。

評価:

「You’re responsible for the monthly categorizing of your expenses and uploading receipts for purchases over $75.」と書かれているので正しいです。

うまくいかなかった質問

Q:給料の最低ラインを教えて

最低給与に関する情報はありません。

評価:

ばっちりmaking-a-carrer.mdに「we instituted a $73,500 salary floorと書かれていますが、探し出せていません。ただし、ファイルを指定するとうまくいくようでした。

Q:ハラスメントがあったら、どうすればいいですか?

ハラスメントを目撃したら、直属のマネージャーまたは People Ops チームにメールまたはチャットで報告してください。すべての報告は確認・調査され、調査中は可能な限りあなたの機密性が守られます。

評価:

実はこれはちょっとずるい質問でした。なぜなら、ハラスメントを受けた(本人)がどうすればいいか書かれてないからです。なので、回答としては「本人の対応は書かれてない。ただ、目撃した場合は・・・」となれば完璧でしたね(おそらくモデルをもっといいものにすれば対応できそうですね)

企業様へのご提案

今回の技術をつかうと、最近多くの企業がもっている以下2つの課題に対応できると考えております。

  • 教育人材の不足:かわりにAIにいつでもどこでも回答させられる
  • 技術継承:過去データをAI化できるので長期保存が可能

これらは経営に重要なファクターです。

ローカルでAIを動かしている限り、流出する心配はありませんし、業務の省力化ができれば重要な部分へエネルギーを集中させられるなどメリットは大きいのではないでしょうか。

もしそういったシステムを社内にご用意したい場合は「お問い合わせ」からご相談ください。

お待ちしてます😊✨

おわりに

ということで、今回はローカルに社内マニュアルAIをつくって試してみました。

Open WebUIは様々なデータを絡ませることができるので、アイデア次第でいろいろ面白いことができるんじゃないでしょうか。

ちなみにOpen WebUIは、独自にプラグインもつくることができるらしいです。

※しかも、APIがあるので、簡単に外部データをRAG化できるようです。

もし時間があったら、試してみますね👍

ぜひ皆さんも何ができるか考えてみてくださいね。

ではでは〜!

「今年もデザインの勉強を
続けていきます👍」

このエントリーをはてなブックマークに追加       follow us in feedly  
お問い合わせ、お待ちしております。
開発のご依頼はこちら: お問い合わせ
どうぞよろしくお願いいたします! by 九保すこひ