AIチャットボットとは?
QubeのAIチャットボットは、サービスの操作方法などの質問にAIが答えてくれる機能です。
- 「イベントの参加方法は?」
- 「請求書はどこから見られる?」
- 「ユーザ情報の編集はどうやるの?」
といった質問にAIが24時間即座に答えてくれます。

画像1:AIチャットボット画面(回答生成中)

画像2:AIチャットボット画面(回答生成完了)
AIチャットボットの仕組み
このAIチャットボットでは、「AIエージェント」と「RAG(検索拡張生成)」という事前に用意した情報を検索して、回答を生成する技術を組み合わせています。
エージェントの制御フレームワークとしては、後述する「LangGraph」を採用しました。
具体的な処理の流れは以下の通りです。
画像3:AIチャットボットの処理の流れ
① 質問の意図解釈
ユーザから質問が投げかけられると、まずエージェントが会話履歴を直近の質問を中心に読み取り、「質問を通して何を知りたいのか」を分析します。ここでは「Qubeの一般的な使い方」、「イベント」、「会議室」「不具合報告」といったカテゴリーに分類します。
② 検索用クエリの動的生成
カテゴリーの分類が完了すると、エージェントが、質問を検索に適したクエリに変換します。
③ ベクトル検索と回答生成
生成されたクエリを用いて意味の近い情報を探す検索(ベクトル検索)を行い、見つかった情報を基に回答文を作成します。
この仕組みにより、言い回しが異なる質問にも対応できます。
開発にあたってのこだわり
開発プロセスにおいて、特に試行錯誤したポイントを2点ご紹介します。
① 高精度な検索を実現する「YAML化」プロセス
RAGの精度を左右するのは、元データの構造化です。
PDFやTXTファイルをただ読み込むだけでは、AIが正しく内容を理解できません。
そこで、私たちは、以下のYAML化フローを導入しました。
構造の定義
Geminiを使用し、PDFから「見出し」「本文」「表データ」「脚注」を識別したYAML形式の中間データを作成します。
段落や表がページをまたぐ場合は、意味的に1ブロックとしてつなぎ、ブロックごとにRAG用の文脈ラベルをつけます。
また、AIは表の構造をそのまま読み取るのが得意ではないため、表データについては通常の行列表現やヘッダーを保持するだけでなく、行の内容をAIが理解しやすいように自然な文章に変換したデータを持たせています。
これらによって、検索時のヒット率を向上させました。
Markdownへの変換
中間データをMarkdown形式に変換し、見出しや本文の構造を整理します。
これにより、AIが内容を正しく理解しやすくなります。
ベクトル化
文章の意味を表す数値データ(ベクトル)に変換し、意味で検索に利用できるようにします。
② フレームワークに「LangGraph」を選定した理由
エージェントの実装にあたり、私たちはCrewAI、 AutoGen、LangGraphの3つのフレームワークを比較検討しました。
結果、以下の2点の理由から私たちはLangGraph を採択しました。
厳密な制御
LangGraphは、ノードとエッジによる「グラフ構造」で処理フローを定義できます。
そのため、AIの動きを開発者が100%制御・可視化できます。
制御の柔軟性
処理がノードごとに独立しているため、一部のロジックを変更する際も、該当するノードを修正して繋ぎ直すだけで済みます。
以上の2点から今後の機能追加を見据えた拡張性があると判断しました。
まとめ
QubeのAIチャットボットは、既存のチャットボットシステムを使わずに、私たちエンジニアが一から自分たちの手で開発しました。
その開発にあたって、YAML化やLangGraphを活用し、ユーザの質問に対して、AIチャットボットが正しい形で答えられるようにこだわりました。
今後はMCPへの対応を進め、単に答えるだけでなく「イベントの予約を代行する」といった、ユーザに代わってアクションを起こすエージェントへと進化させていきたいと考えています。
AIチャットボットのアップデートに、ぜひご期待ください!