見出し画像

複雑な表をLLMに理解させる

はじめに

GPT-4o、Gemeniのマルチモーダルが進化したとXで話題になっています、路線図が読み取れた、もえないごみはダメだとXで話題になっています

地域のごみ収集パンフレットを読み解かせようとするとうまくいかない

路線図の方はLLMの学習時に情報を持っていて、与えられた画像が路線図だと認識した可能性が高そうです。もえないごみの収集のようにLLMには未学習の内容を答えさせるにはどうしたら良いかを考えてみたいと思います。

ユースケースを考える

単にデーター化しますだとどのようにするのか難しいので、今回はごみの収集日をAIに答えさせるというシチュエーションで行きます。

山田さんは、諫早市西郷に住む会社員、会社にいる時にごみの収集日を調べたくなり、AIボットで5月のペットボトルの回収日を聞いた

AIボットは、5月のペットボトルの回収日から5月9日ですと返した

人間が表をどのように読み解いてるのかをみていきます

地区の列から自分の地域を探し、品目の中から、ペットボトルを探し、5月の列に移動し、9日と探しています

この表の難しいポイントとして、4月〜12月が収集日であることが、暗黙知として保持されていて、文面に出ていません。また空き缶の場合は2行読み取る必要があり、人間の賢さを最大限に使った表になっています。冷蔵庫に貼るなどコンパクトさが求められるので、人間向けには非常に良くできた表だと思います

Geminiで挑戦

GeminiにPDFを与えて、ペットボトルの回収日を聞くと、見事にハルシネーションを起こしました。

GPT-4Oで挑戦

GPT-4oでも歯が立ちません


LLMがわかりやすいように分解する

LLMが探せるように前処理を考えます。LLMが探す場合も、西郷のペットボトルの収集日のように探すので、下記のようなデータになってることが望ましいです

地区:  西郷
品目: ペットボトル
収集日: ["4/4", "5/9", ]

このデータを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にデータを埋め込んで答えさせることで、課題を解決できるケースもたくさんあります。みなさんもぜひ作ってみてください

この記事が気に入ったらサポートをしてみませんか?