自治体向けゴミ出し案内AIボットを支える技術

この記事は、ChatGPTを用いた自治体向けゴミ出し案内の実証実験での精度改善について、技術的な取り組み内容をまとめたものです。
ゴミ出し案内問い合わせボットとは
2023年5月から、ChatGPTの自治体活用検証の第一歩として開発を開始したサービスで、「布団の捨て方は?」「次の燃えるゴミの日はいつ?」など、市役所へ電話して聞くほどでもないようなゴミ出しルールに関する質問に回答するシステムです。地域ごとにルールは異なるので、引っ越してきたばかりの方や、日本の厳しいゴミ出しルールに不慣れな外国人住民の方へのサポートもできるよう多言語対応もしています。
当時はChatGPTのケイパビリティや、個人情報漏洩のリスクに対する知見がそれほど認知されていない中、全国で初めて市民向けサービスとしてChatGPTが活用された事例ではないかと思います。
2回目の実証実験の結果、残念ながら目標としていた回答精度に達しなかったため本格運用までは到達できませんでしたが、実証実験を通じて回答精度を90%後半まで高めた手法について解説します。
最初の手法
自治体のゴミ出しに対する質問には、Retrieval Augmented Generation(RAG)と呼ばれる手法を用いて回答しています。プロトタイプでは基本的なアーキテクチャで実装しました。大まかな流れは、ゴミ出しルールの文書をベクトル化して保存し、ユーザーからの質問と類似性の高い情報を検索機により抽出、抽出したゴミ出しルールの情報と質問をプロンプトに格納してChatGPTへ質問する、というものです。

しかし、このような単純なアーキテクチャでは、質問に曖昧な表現や情報不足がある場合に正しく回答ができない、同じ質問でも質問のされ方で正答誤答が変わってしまうなどの問題があり、正答率70%以下という結果になりました。
改善手法
誤答の原因として最も多かったのは「検索機で正しく情報が検索できていない」でした。RAGの仕組み上、プロンプトへ回答に必要な情報を格納できなければ回答不能になるため、検索機の性能がシステムの回答精度に直結します。
また、「ゴミの素材の誤認」に基づく誤答も多くありました。例えば「ポテトチップスの袋の捨て方を教えて」→「ポテトチップスの袋は紙製なので紙包装容器として捨ててください」のようなものです。
実証実験で収集した問い合わせデータの分析を踏まえ、最終的に4つの改善モジュールを導入しました。

参照データの構造化(Data Butcher)
ユーザーからの質問を分類すると、圧倒的に多いのは「〇〇の捨て方を教えて」のような分別方法を聞く質問でした。参照データを「品目分別情報」「ゴミ出しカレンダー」「手続き情報」に分類し、それぞれ別のチャンク化ルールで異なるデータストアへ保存する方式に変更しました。

品目分別情報は1チャンクに1品目、カレンダーはキーワード検索を採用しテーブルデータとして保持、手続き情報は構造化して1チャンクに1トピックとしています。参照情報を適切な部位とサイズに切り分けるイメージでButcherと名付けています。

一問一答から対話形式への転換(Question Reconstructor)
過去の会話履歴と最新のユーザー入力から質問を再構築する機能を追加しました。例えば「やかんの捨て方は?」→「金属ごみです」に続く「いつ捨てればいい?」という質問は、「金属ごみの日はいつ?」に変換されます。
これにより、質問に情報不足があった場合にチャットボットからユーザーへ逆質問することで情報の補完を促せるようになり、回答精度を高めることができます。
検索戦略の立案(Retrieval Strategist)
質問の内容から、どのデータストアを検索するかを判断するモジュールです。検索すべきデータストアの提案と検索クエリの生成を同時に行い、質問ごとの検索を最適化しています。副次的に、「やかんは燃やせないゴミ?」のような質問からキーワード「やかん」のみを取り出し、検索ノイズを削減する効果もありました。
検索情報の整理(Collator)
検索機から得られた情報の文脈通りの並べ替え、重複情報の削除、プロンプトへの効率的な情報充填を行うモジュールです。検索結果のチャンクを同じ書類でグルーピングし、並べ替えた上で、プロンプトのtoken上限に達するまで類似度の高い順にチャンクを詰め込む処理をしています。
ユーザーへの情報提示
チャットの応答の中に、ChatGPTが何を推測して回答を生成したかを出力するようにしています。例えば「ポテトチップスの袋は紙製なので紙包装容器として捨ててください」という回答に「(ポテトチップスの袋が紙製であると推測します)」という推測情報が付与されます。これにより、ユーザーが回答の根拠を知ることができ、誤認があれば訂正できるようになります。

さいごに
精度を上げるキモは、体感では参照データの構造化部分にあります。文書の特徴を把握し、文書に対してどんな質問がくるかを想定して適切な構造ルールを設計する分、書類を投げ込むだけのRAGプラットフォームより精度は高くなると考えています。