LLMを利用する際、入力するデータの「トークン数」は、処理速度と利用料金に直接的な影響を及ぼす重要な要素だ。テーブル形式のデータを渡す際には、そのフォーマットによって消費量が劇的に変化するので、適切なフォーマットで表現して渡すようにしたい。
LLMは、テキストを「トークン」と呼ばれる単位に分割して処理する。このトークン数は、モデルが一度に処理できるデータ量(コンテキストウィンドウ)の制約や、APIの利用料金に直結する。
例えば、大量の顧客データや売上レポートをテーブル形式でLLMに渡し、その分析や要約をさせたいケースを考えてみよう。非効率なフォーマットを選択してしまうと、本来なら処理可能なデータ量を超えてしまったり、想定以上のコストが発生したりする可能性がある。したがって、特に大量のテーブルデータを扱う際には、トークン効率を意識したデータ形式の選択が不可欠となるのである。
フォーマット毎のトークン消費量の比較
例として、以下のようなシンプルな従業員名簿データを各フォーマットで表現した場合のトークン数を見てみる。
名前 | 年齢 | 都市 |
---|---|---|
太郎 | 30 | 東京 |
花子 | 25 | 大阪 |
次郎 | 35 | 福岡 |
JSON形式:
[
{ "名前": "太郎", "年齢": 30, "都市": "東京" },
{ "名前": "花子", "年齢": 25, "都市": "大阪" },
{ "名前": "次郎", "年齢": 35, "都市": "福岡" }
]
トークン数概算: 約50トークン (キー、コロン、引用符、括弧、カンマなどがそれぞれトークンを消費する)
プレーンテキスト形式:
データ:
名前: 太郎, 年齢: 30, 都市: 東京
名前: 花子, 年齢: 25, 都市: 大阪
名前: 次郎, 年齢: 35, 都市: 福岡
トークン数概算: 約30トークン (キーと値の区切り記号や改行がトークンを消費する。また、LLMにこの形式を理解させるための追加の指示が必要になる場合がある)
CSV形式:
名前,年齢,都市
太郎,30,東京
花子,25,大阪
次郎,35,福岡
トークン数概算: 約15トークン (各項目が1トークン、カンマと改行がそれぞれ1トークン程度と仮定)
上記の比較から明らかなように、CSV形式は他のフォーマットと比較して圧倒的に少ないトークン数でデータを表現できる。この差は、データ量が増えれば増えるほど顕著になる。
結論
LLMにテーブル形式のデータを渡す際には、トークン消費量を最小限に抑え、効率的な処理を実現するためにCSV形式を採用することが最も推奨される。