AIチャットボットの構築に取り組みました

こんにちは、研修生のS.M.です。ベルーフに通い始めて約2年半になり、現在は資格取得に向けた勉強と就職活動を並行して進めています。

私は今年の3月から5月にかけて「IT実務演習」という研修に参加しました。
この研修は、納期を守ることや報・連・相の習慣を身につけるため、実際の業務に近い環境で課題に取り組むものとなっています。

今回私が取り組んだのは、ベルーフ研修生向けのAIチャットボットの構築です。
その背景や作業内容についてご紹介したいと思います。

ベルーフでは、研修生が日々のスケジュールや時間割の確認、タイムカードの打刻、日報や早退の申請、スタッフとの連絡、研修用ファイルのダウンロードなど、多くの作業をWEB上で行います。
しかし、新しく通い始めた研修生にとっては、こうした操作が複雑で戸惑ってしまうことが多々あります。

私は以前からAIに興味を持っており、日常的に利用していました。
そこで今回、この課題をAIチャットボットを用いて解決できないかとスタッフに提案し、「研修生からの質問に対し、作業マニュアルをもとに適切な案内を行うAIチャットボット」をテストケースとして開発することになりました。

最初の1ヶ月間は、使用するライブラリやフレームワークの調査期間に充てました。
特に課題となったのは、チャットボットが必要な情報を的確に見つけ出すための仕組みである「RAG(Retrieval-Augmented Generation/検索拡張生成)」の構築方法です。
RAGに関する大まかなイメージを持ってはいましたが、具体的な実装方法については未経験であり、不安なままのスタートでした。
調査を進めるうちに、ベクトル検索用データベースの「Chroma」と、RAGシステム構築用フレームワークの「LlamaIndex」が適していると判断しました。Pythonでの開発時に、比較的シンプルに実装できそうだと感じたためです。

調査期間終了後、実装に入りました。
調査中にChromaやLlamaIndexのコードを書いて理解を深めていたおかげで、チャットボットの基本的な動作は比較的早く実現できました。
しかし、AIが質問を受けた際に読み込むべき作業マニュアルを正しく選べないという課題が発生しました。

そこで再度調査を行い、RAGの処理について2点修正を行いました。
一つはテキストを一定区間毎に、小さな単位=チャンクに区切る「チャンキング処理」です。
元々は細かくカットする設定になっており、チャンクごとに読んだときに文章の意味が分かりづらくなっていたので、チャンキングの幅を広くすることで、質問に対して関連度が高い箇所をピンポイントで検索できるようにしました。
もう一つは質問内容に基づいてチャンクを検索する際、関連性の高い順に並べ替える「再ランキング処理」です。
元々はチャンク検索だけで済ませていたのを、この再ランキングも行うようにしました。
これらの工夫を施すことで、AIチャットボットが的確な回答を行えるようになりました。

成果発表の際には他の研修生の方にも試験的に使用していただき「関係ない質問に反応しないようにできている」、「曖昧な質問に対して一番近い情報を提供してくれる」等、好意的なフィードバックを複数受けられました。
今回の研修を通して、新たな技術の習得や、実務的な課題への対応能力を身につけることができました。
これからも学びを深め、様々な課題解決に積極的に取り組んでいきたいと思います。

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です