前提
- 本記事の内容は2024/12/17時点の以下のAmazon Titan Text Embeddingsモデルで試した内容なので、最新では異なる情報となっている場合があります。
- Titan Embeddings G1 - Text(以下、Titan Embeddings v1)
- Titan Text Embeddings V2(以下、Titan Embeddings v2)
- Bedrockのモデルアクセスは設定済みの状態で話を始めています。
- 上記Embeddingモデルの精度については本記事では扱っていません。
- 本記事に記載の内容・設定を実施して生じた問題については責任を負いかねます。
何をしようとしてどうなったか
- Amazon Bedrock上で提供されているAmazon Titan Text Embeddingsモデルを利用するにあたって「コスト見積もり=トークン数の見積もり」をしようとした。
- OpenAIにおけるtiktokenのようなトークナイズライブラリもなく、色々調べた結果、実際にAPIを実行するかプレイグラウンドで確認するほか手がない。
- なお、Embeddingモデルはプレイグラウンド非対応。
- しょうがないので、livedoorニュースコーパスを使って実際にどのぐらいのトークン数だったかを確認した。
- 結果として、Titan Embeddings v1で1文字あたり約0.548トークン、Titan Embeddings v2で1文字あたり約1.01トークンとなった。
あくまでlivedoorニュースコーパスでの結果であるため、ドキュメントの種類によって1文字あたりのトークン数は変化する可能性があります。
実施内容
データについて
上述の通り、livedoorニュースコーパスの記事本文を利用しました。
ただ、7000件以上と量が膨大であるため、9つの記事カテゴリから各20件ずつをランダムにピックアップした計180件を利用しました。
モデルの実行
Bedrockのユーザーガイドにあるような実装をして実行しただけなので詳細は割愛します。
結果
180件のデータにおける1文字あたりのトークン数は以下の通りとなりました。
Titan Embeddings v1 | Titan Embeddings v2 | |
---|---|---|
平均値 | 0.548320 | 1.011225 |
中央値 | 0.550780 | 1.034148 |
最小値 | 0.423309 | 0.701807 |
最大値 | 0.678189 | 1.169844 |
新しいv2モデルの方がトークン効率が良くなるのかと思っていましたが、実際にはその逆という結果でした。
ただ、1000トークンあたりの料金がv1の\$0.0001に比べてv2は\$0.00002と1/5になっている(2024/12/17時点)ので、1文字あたり2.5トークンとかにならない限りコスト的にはv2の方が良さそうですね。
おまけ
一応、記事のカテゴリごとにバラツキがないかを見てみましたが、大きなバラツキはなさそうでした。
Titan Embeddings v1 | Titan Embeddings v2 | |
---|---|---|
独女通信 | 0.552917 | 1.036024 |
ITライフハック | 0.532223 | 0.962088 |
家電チャンネル | 0.528893 | 0.989147 |
livedoor HOMME | 0.540681 | 1.032803 |
MOVIE ENTER | 0.595403 | 1.087740 |
Peachy | 0.553208 | 1.014785 |
エスマックス | 0.475864 | 0.864732 |
Sports Watch | 0.581880 | 1.070773 |
トピックニュース | 0.573810 | 1.042937 |
まとめ
- livedoorニュースコーパスを用いてAmazon Titan Text Embeddingsモデルの2モデルについて日本語における1文字あたりのトークンを計算したところTitan Embeddings v1で1文字あたり約0.548トークン、Titan Embeddings v2で1文字あたり約1.01トークンという結果になりました。
- コスト的にはv2の方が安上がりですが、トークン効率がv1の半分ぐらいなので長いドキュメントについては分割などの処理が別途必要になりますね。
- 例:1万文字のドキュメントの場合、v1では約5500トークンで済みますが、v2では約1万トークンとなり分割が必要になります。(v1もv2も入力トークン数の上限は8k)