複雑な表をLLMに理解させる
はじめに
GPT-4o、Gemeniのマルチモーダルが進化したとXで話題になっています、路線図が読み取れた、もえないごみはダメだとXで話題になっています
地域のごみ収集パンフレットを読み解かせようとするとうまくいかない
路線図の方はLLMの学習時に情報を持っていて、与えられた画像が路線図だと認識した可能性が高そうです。もえないごみの収集のようにLLMには未学習の内容を答えさせるにはどうしたら良いかを考えてみたいと思います。
ユースケースを考える
単にデーター化しますだとどのようにするのか難しいので、今回はごみの収集日をAIに答えさせるというシチュエーションで行きます。
人間が表をどのように読み解いてるのかをみていきます
地区の列から自分の地域を探し、品目の中から、ペットボトルを探し、5月の列に移動し、9日と探しています
この表の難しいポイントとして、4月〜12月が収集日であることが、暗黙知として保持されていて、文面に出ていません。また空き缶の場合は2行読み取る必要があり、人間の賢さを最大限に使った表になっています。冷蔵庫に貼るなどコンパクトさが求められるので、人間向けには非常に良くできた表だと思います
Geminiで挑戦
GeminiにPDFを与えて、ペットボトルの回収日を聞くと、見事にハルシネーションを起こしました。
GPT-4Oで挑戦
GPT-4oでも歯が立ちません
LLMがわかりやすいように分解する
LLMが探せるように前処理を考えます。LLMが探す場合も、西郷のペットボトルの収集日のように探すので、下記のようなデータになってることが望ましいです
このデータをLLMを使って作る方法を検討します。
Geminiで挑戦
Fewshotで渡した4月、5月以外はハルシネーションを起こしています
GPT-4oで挑戦
6月はまぐれで当たりましたが他はハルシネーションを起こしています
LLMがわかりやすいように加工する
画像を切り貼りして、下記のようにLLMにわかりやすく加工してしまいます
プロンプト
下記の形式で、データをまとめてJSONで出力してください
品目、地域はは全て書き出します
{
"地区": ["西郷"],
"品目": ["ペットボトル", "空き缶"],
"収集日": ["4/4", "5/9"]
}
結果はこうなりました
{
"地区": ["西郷", "新道", "立石", "上野", "野中", "船越", "原口", "西小路", "宇都"],
"品目": ["ペットボトル", "空き缶", "空きびん", "金属・有害ごみ", "瓦・陶磁器"],
"収集日": {
"4月": ["4", "18"],
"5月": ["9", "23"],
"6月": ["6", "20"],
"7月": ["4", "18"],
"8月": ["1", "15", "21"],
"9月": ["5", "18", "24"],
"10月": ["7", "21"],
"11月": ["6", "19"],
"12月": ["5", "23"],
"1月": ["8", "19"],
"2月": ["5", "23"],
"3月": ["6", "24"]
}
}
セル結合などから間違ってることろもありますが、6割くらいはあたってそうです。
GPTsに設定します
GPTsにJSONを埋め込んで、下記のJSONから答えさせるようにします。
無事に答えてくれるボットができました
まとめ
RAGも大事ですがコンテキスト長が長くなり、保持出るデータが多くなったので、前処理をLLMで頑張って、構造化し、LLMにデータを埋め込んで答えさせることで、課題を解決できるケースもたくさんあります。みなさんもぜひ作ってみてください
この記事が気に入ったらサポートをしてみませんか?