大規模言語モデルを使ったQAの精度を評価する
GPTなどのLLMを使ったQAシステムについて、色々なパラメータで試して精度を評価するシステムを作成しました。
大規模言語モデル(LLM)を活用してドメイン特化のチャットボットを生成することが注目されています。例えば、企業が自社のヘルプページを読ませて質疑応答チャットボットを作成することができます。
シンプルなQAシステム
シンプルな構成では、LangChainなどを使って以下のようにプロンプトを生成してユーザの入力に答えます。
そのドメインの文章(例えばヘルプページ)を細かいChunkに切って保存。Embeddingを計算する(類似度で使う場合)
ユーザの入力QueryからEmbeddingを計算する
QueryとChunkのEmbeddingの類似度から関係あるChunkを持ってくる(top_k)
ChunkとユーザのQueryを一つのPromptに入れてGPTに問い合わせる
結果を出力
QAで使われるパラメータ
LLMを用いたQAシステムの構築では、以下のようなパラメータが重要となります。
チャンク(文章断片)のサイズ
見るべきチャンクの数
Chunkの選択基準(類似度ベース、キーワードベースなど)
GPTが賢くなれば全て解決という気もしない分野です。むしろ少し古いモデルでも適切にチューニングすれば使えるようにするのがLLMエンジニアの腕の見せ所かもしれません。
LLM-Chain-Eval: LLMのQA精度を測る評価ツール
そこでLLM-Chain-Evalという評価ツールを開発しました。このツールは、LLMを使ってQAシステムを作る際に、モデル選択やパラメータや組み合わせを簡単に試すことができ、精度を計測してくれます。GPT以外のモデルも選択可能で、英語ならGoogle-Flan-T5も利用できます。(意外と英語ならFlan-T5も動いて驚きました。用途によってはGPT以外のモデルの選択が増えそうです。)
使い方
参照したい文章と、想定されるQuestion-Answerを入力します。
ツールを実行すると、自動的に答えをチェックし、精度の数値を表示します。
プロンプトの修正
日本語の場合、LangChainのデフォルトのプロンプトが英語のためうまく動かないことがあります。その際は、プロンプトに"Answer in Japanese"と記載すると改善されることがあります。LLM-Chain-Evalではプロンプトを修正できるようにしました。
また、結果はJSON形式で出力されるため、後で見返すことができます。
ぜひ一度お試しください。そして、フィードバックをお寄せいただけると嬉しいです!