1. はじめに
業務の効率化を目的としたSlackボットを開発し、Cloud Run(GCP)を活用した環境で運用しています。本記事では、その構築プロセスを体系的にまとめます。
また、既存の類似サービスもありますが、技術力向上とカスタマイズ性を考慮し、自社開発することを選びました。
2. 目的と機能要件
(1) 目的
- 知識データの定期自動投稿:利用手引きやマニュアルなどの定期的なリマインドを自動化。
- 質問応答システム:ボットへのメンションを通じた即時回答機能を提供し、必要な情報を迅速に取得。
(2) 機能要件
- Cloud Runを利用したボットのホスティング
- Slack APIとの連携
- RAGによる知識データ検索(コサイン類似度を使用)
- ローカル開発環境としてGoogle Colab、Cloud Shell Editorを活用
- Cloud Shell内でデータ管理(docxファイル、CSV、RAGインデックス)
- Gemini 2.0に統一予定(現在は1.5 Proも併用)
3. システム設計
(1) インフラ設計
-
開発環境
- Google Colab, Cloud Shell Editorを活用
- Cloud Shell内でデータ管理(docxファイル、CSV、RAGインデックス)
-
本番環境
- Cloud Runにデプロイ
- BigQueryは今後実装予定(現在はCloud Shell内のインデックスファイルでRAGを処理)
- Vertex AIは予算の関係で使用しない
(2) Slack APIとの連携
-
現在の実装
- 知識データの定期投稿によるリマインド
- メンションベースの質問応答機能
-
今後の拡張予定
- Interactive ComponentsやSlash Commandsを必要に応じて実装予定
(3) RAGの設計
-
検索エンジン
- コサイン類似度を使用
- 知識データが少ないため、全文をプロンプトに含めるアプローチも検討
-
AIモデル
- 現在はGemini 1.5 Proを使用
- 順次Gemini 2.0に統一予定
4. 実装
(1) Cloud Runのセットアップ
- Dockerコンテナを作成し、Cloud Runにデプロイ
- Cloud Shell上で管理するインデックスファイルを活用
- 環境変数や認証情報をCloud Secret Managerで管理
(2) Slackボットの開発
-
slack_bolt
を使用し、メンション時にRAG検索&Gemini応答を実装 - 知識データの定期投稿機能を組み込み、リマインドを自動化
- メッセージの解析と検索処理(コサイン類似度)
- 知識データのプロンプト内埋め込みを試験運用
(3) RAGの組み込み
- Cloud Shell内でインデックスファイルを管理し、検索エンジンを動作
- 知識データの増加に伴い、BigQueryへの移行を検討
5. テスト・デバッグ
- ローカル(Colab, Cloud Shell Editor)でのデバッグ
- Cloud Runデプロイ後、Slackワークスペース内で動作確認
- RAGの検索精度の調整(コサイン類似度の閾値最適化)
6. 本番環境へのデプロイ
- Cloud Runへのデプロイ
- 自動化のためのGitHub連携は今後の課題
- Cloud Loggingでエラーログを監視
7. 改善・運用
(1) RAG検索の最適化
- コサイン類似度の改善
- 知識データのプロンプト埋め込みアプローチの評価
(2) 新機能の追加
- BigQueryの導入(検索対象の拡充)
- Interactive Components / Slash Commands の実装(必要に応じて)
本記事ではSlackボットを活用した知識データの管理について説明しましたが、知識データをどのように効果的に活用するかが重要です。その一つの方法として、Slackボットを用いた定期投稿と質問応答の自動化が挙げられます。
Slackボットによる知識データの定期投稿と質問応答の自動化 について詳しく説明します。
8. まとめ
このプロセスでSlackボットを構築し、運用しています。
- 要件定義: 目的の整理・必要機能の明確化
- システム設計: Cloud Run, Cloud Shell, RAG, Slack APIの設計
- 実装: Cloud Runへのデプロイ、RAG検索・Gemini API統合
- テスト・デバッグ: コサイン類似度検索・応答精度の調整
- 本番デプロイ: Cloud Run運用、GitHub連携は今後検討
- 運用改善: 検索最適化、新機能追加(BigQuery, Slash Commandsなど)
今後の課題として、GitHubとの連携やBigQueryの導入を進める予定です。
また、具体的な実装に関しても順次、投稿予定です。