3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ateam LifeDesignAdvent Calendar 2024

Day 6

生成AIへファイル添付するパターンの違いを体験しよう

Last updated at Posted at 2024-12-05

ChatGPTなどの生成AIチャットサービスには、ファイルを添付することができます。

同じファイル添付でも、生成AIがファイルを扱う内部の処理には複数のパターンがあります。

  • 検索(RAG)
    • OpenAI Assistants APIでは 「File Search」 と呼ばれる
    • 添付ファイルを検索して、回答を生成
    • テキストやPDFなどの非構造化データの一部分を抽出して、定性的な処理をするのが得意
  • データ分析
    • OpenAI Assistants APIでは 「Code Interpreter」 、Claude.aiでは「分析ツール(analysis tool)」と呼ばれる
    • 添付ファイルをプログラムで処理して、回答を生成
    • CSVやExcelなどの構造化データの全体に対して、定量的に処理するのが得意
  • 直接入力
    • 添付ファイルをプロンプトとして直接モデルに入力
    • モデルによっては画像などの入力も扱える
      • (というか、おもにマルチモーダルモデルへの画像の入力で使われる方法だと思います)

AIチャットサービスによっては、これらを暗黙的に自動で使い分ける物もあれば、特定の操作をして切り替える必要があるものもあります。
「直接入力」は単純なので置いておいて、「検索」と「データ分析」については、どっちがどっちなのか、どう使い分ければ良いのか、分かりにくいと思います。

image.png

OpenAI Assistantsでは、「File search(検索)」と「Code interpreter(データ分析)」の両方にファイル添付できます。どっちを使うと良いんでしょうか。

実際に違いが出るタスクをやって体験してみましょう。

実験

以下のような、架空のイタリアンレストランのメニューデータを用意しました。これについて、生成AIチャットに簡単な質問をします。

メニュー名 価格
渡り蟹のトマトクリームパスタ 1,480円
4種きのこのポルチーニクリームパスタ 1,380円
ベーコンと彩り野菜のペペロンチーノ 1,280円
牛肉とゴルゴンゾーラのピザ 1,680円
シーフードミックスピザ 1,580円
彩り野菜とモッツァレラチーズのピザ 1,480円
海老とブロッコリーのドリア 1,380円
4種チーズのドリア 1,280円
スパイシーミートドリア 1,480円
冬野菜のミネストローネ 580円
鶏肉のハーブグリル 780円
フォンダンショコラ 580円
焼きりんご 480円

(この架空のメニューはGemini Advancedで生成しました)

このファイルをOpenAI Assistantsに添付して、簡単な以下ふたつの質問をしてみます。

  • 質問1「パスタの値段は?」
    • 正解は「渡り蟹のトマトクリームパスタ1,480円」「4種きのこのボルチーニクリームパスタ1,380円」「ベーコンと彩り野菜のペペロンチーノ1,280円」です
  • 質問2「いちばん高いメニューは?」
    • 正解は「牛肉とゴルゴンゾーラのピザ1,680円」です

どの手法でどれがうまく答えられるか、調べてみましょう。

実験条件

  • モデルはgpt-4o-2024-08-06
  • Temperature、Top-pなどは既定値
  • システムインストラクション無し
  • File SearchまたはCode Interpreterのいずれか片方を有効にして実験

実験1: スプレッドシートの処理

メニューをスプレッドシートにまとめます。

image.png

検索(File search)

File searchのところにファイル添付します。
テキストだとアップロード時にうまく行かなかったのでPDFファイルにして添付しました。

また、今回は対象とするファイルが小さい都合上、Chunk sizeとMax num resultsを小さい値にして、小さいファイルでもちゃんとFile searchの特徴が出るようにします。

image.png

image.png

「パスタの値段は?」

image.png

成功しました。

「いちばん高いメニューは?」

image.png

間違えてしまいました。

データ分析(Code Interpreter)

Code interpreterの所にファイル添付します。

image.png

「パスタの値段は?」

image.png

なんか色々とプログラムが出力されて何かをしてくれましたが、ペペロンチーノが含まれていないため、不正解です。
実装されたプログラムを見てみると「パスタ」の文字列一致で調べているため、これでは「ペペロンチーノ」を検出できないことが分かります。

「いちばん高いメニューは?」

image.png
(中略)
image.png

正解しました。

実験2: ドキュメントの処理

入力データをスプレッドシートではなく、文章にしてみました。こちらもGemini Advancedを用いてメニューデータを変換しました。

image.png

こちらをPDFにして添付してみます。

検索(File Search)

「パスタの値段は?」

image.png

正解しました。

「いちばん高いメニューは?」

image.png

失敗しました。

データ分析(Code Interpreter)

こちらのデータはCode Interpreterでは処理できませんでした。

image.png

実験結果まとめ

File Search Code Interpreter
スプレッドシート 「パスタの値段は?」 成功 x
スプレッドシート 「いちばん高いメニューは?」 x 成功
ドキュメント 「パスタの値段は?」 成功 x
ドキュメント 「いちばん高いメニューは?」 x x

きれいに分かれました。

  • 検索機能を使うと、「パスタの値段は?」のように定性的な質問に回答でき、ドキュメントのような非構造化データも扱える
  • データ分析機能を使うと、構造化されたデータに対して「いちばん高いメニューは?」のような定量的な質問に回答できる

これらの違いを理解して使い分けられると、より生成AIへのファイル添付を使いこなせるようになると思います。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?