お困りごと: ChatGPTが嘘を言うので業務で使えないのでは?
そんなことはありません。
先日、社内用に、社内規約を元にして答えるチャットボット(AIちゃん)を制作しました。その事例をもとに、対処法をご紹介します。
嘘を言ってしまう原因
ChatGPTに正しい情報を伝えていないから
2つの解決策
ChatGPTに嘘になる間違った回答をさせない方法は2つあります。
Fine-tuning は調整のために追加学習するデータが大量に必要です。Fine-tuning は多くの時間とお金がかかるため、今回は Embeddingsを採用しました。
Embeddingsの利用方法
Embeddingsはプロンプトに正解の情報を埋め込む手法です。
以下の3つの注意点を意識して使いましょう。
それではEmbeddingsを使ったプロンプトを一緒に考えてみましょう。
プロンプトに文脈として前提条件が埋め込まれています。こちらの情報はChatGPTは知らない想定です。 実際のChatGPTの回答はこちらになります。
実際に「嘘を言わないAIボット」を作ってみた
社内規約を答えるAIチャットボット(AIちゃん)を制作しました。中小企業や小さなプロジェクト向けのチャットインターフェイスを想定しているため、応答速度が早く、運用コストが最小であることに重点を置きました。
LLMモデルの応答速度とコストのバランス
gpt-4は応答速度が遅く、返答まで1〜2分かかったためチャットボットの用途としては使えませんでした。次にコストと速度優先でgpt-3.5-turboで実験を重ねてある程度の精度が確認できていましたが、先日2023年6月13日にChatGPTのAPIに大規模なアップデートがあり、gpt-3.5-turbo-16kがリリースされて性能が大幅にアップしましたので、最終的にはそちらを採用しました。
ベクトル検索エンジンをChatGPTの外部記憶装置にする
AIチャットボット(AIちゃん)では事前に回答させたい社内文書のテキストデータを1,000トークン程度に分割し、数値ベクトル化して検索エンジンにインデックス登録しています。
質問に類似した情報をベクトル検索して、プロンプトに文脈として埋め込むことで少ない記憶を補っています。
Embeddingsできる情報は、最大トークン数から質問文や回答文で必要なトークンを除いた残りになります。今回は12,000トークンを限界値として設定しています。
ベクトル検索のイメージ
テキストの意味を数値ベクトル化して、ノルム1の多次元超球体にマッピングしています。2つのテキストの数値ベクトルのコサイン類似度を調べることで高速に検索できる仕組みです。Google検索やAmazonのレコメンド機能でも使われています。
できた!
上記の仕様から構築したAIちゃんのフロー図はこちらになります。
まとめ
今回は、ChatGPTに嘘を言わせないためのアプローチを学びました。今回のお話をまとめると以下のようになります。
嘘を言ってしまう原因は、ChatGPTに正しい情報を伝えていないから
ChatGPTに間違ったことを答えさせない方法には「学習モデルを調整するFine-tuning」と「プロンプトに埋め込むEmbeddings」の2つの手法がある。
Fine-tuningは時間とコストがかかるので、Embeddingsが有効。
Embeddingsは3つの注意点を意識して使う
1. ChatGPTはモデルごとに扱える最大トークン数に限界がある。
2. 必要な情報を文脈としてプロンプトで伝えて回答してもらう。
3. 文脈以外の情報から回答することを禁止する。
Embeddingsという手法は、ChatGPTのプロンプトでも活用できますので是非試してみてくださいね。
株式会社カヤックボンドです。 カヤックボンドで働く人、会社の制度、サークルの活動報告など、多岐にわたりご紹介していきます。