TECH BLOG

技術者ブログ

独自データを学習したAIチャットボットの構築 (ChatGPT, Embedding)

2023.08.21

本記事の概要について

自社独自のデータをChatGPTに教えることで、そのデータに沿った回答ができるチャットボットを構築した。以下ではその詳細を述べる。

検討の経緯

現在、AIを用いたチャットボットに関する研究が盛んに行われており、無償公開されるモデルも見られるようになった。私たちは以前に、この公開モデルを利用したAIチャットボットの構築を検討した。より詳細には、BBC ニュースのテキストおよびそのジャンル情報を学習データとしてファインチューニングしたモデルを生成し、これを用いて任意のテキストを適切なジャンルに分類できるチャットボットである。ここでは、カテゴリが10程度と少ない場合には高い分類精度が得られたものの、カテゴリの数が多くなるほどに学習用マシンの要求スペックが飛躍的に高まり、かつ膨大なトレーニングデータを用意する必要があることがわかった。あわせて、分類の精度は学習回数とトレーニングデータの作り方に大きく左右されてしまうことや、日本語など英語以外の言語には対応できないことなど、リリースに至るまでには技術的な課題が山積みであった。

そこで今回は方法を変えて、ChatGPT と Embedding 技術を用いてこれらの問題を解消できないかを検討した。あわせて、この検討で得られたチューニング済みのモデルを利用して簡易的なチャットボットアプリを構築し、学習を通じて期待した回答が得られるかどうかを検証した。

使用技術

本検討では、自然言語処理とチャットによる質疑応答のためのエンジンとしてChatGPTを、学習データとして弊社の社員インタビューの記事に Embedding を組み合わせたものを使用した。Embedding についてもChatGPTのAPIを利用することで、手作業による学習データの事前整形を省略できた。この学習が成功すれば、今後あらゆる形式のデータを簡単に学習に利用できることが期待される。また、GhatGPTの学習はAPIを経由してOpenAI社のサーバー上で実行されるため、利用者である私たちが強力な計算リソースを用意する必要はない。

プロンプトテンプレートは ”Given the context information and not prior knowledge,(提供されたコンテキスト情報に基づき、先行知識を用いずに) “とし、与えられた情報だけを回答に使うという条件付けをしている。いわゆるハルシネーションによる誤回答を防止するための保守的な設定であり、学習データの内容からは回答できないものについては回答を控える形となる。

検証

ここでは、構築したチャットボットが学習データであるインタビュー記事に即した回答ができるのかを確認するために、インタビューの対象者視点でのブログ記事を生成させることにした。得られた結果は下図のとおりである。インタビュー記事 に掲載されている発言内容と比較して、チャットポットの生成文章は各人の意図が反映された記事であるように伺えた。

なお本チャットボットの基本エンジンはChatGPTであるために、回答の生成にあらゆる言語を利用できる。よって下図のように、日本語の学習データから英語の回答を生成することも可能である。

最後に

私たちは今回、独自のデータを学習して下記の要件を満たすチャットボットの開発を試みた。

  • 独自の知識をチャットボットに教えられること
  • 質問を解釈し、得た知識を元に回答できること
  • 多言語を要する現場においても使用できること

その結果、実用に耐えうるレベルでの回答を生成できるチャットボットアプリを得ることができた。またEmbeddingの活用により、学習データの整形にかかる手間が大幅に省略され、既存のデータを即座に利用できることも確認された。すぐに活躍できる用途としては、社内のナレッジデータベースをもとにしたQ&Aボットや、議事録の要約、クライアントに自社製品を説明するチャットボットなどが考えられる。

YUKI ARAKI

ウェブデベロッパー

ダイナモテックソリューションズ所属、ウェブ開発者。

YUKI ARAKI

ウェブデベロッパー

ダイナモテックソリューションズ所属、ウェブ開発者。

カテゴリ
機械学習
page top