マルチモダリティ API
人間は、複数のデータ入力モードを同時に使用して知識を処理します。私たちの学習方法、経験はすべてマルチモーダルです。視覚だけ、音声だけ、テキストだけというわけではありません。
これらの学習の基本原則は、近代教育の父ジョンエイモスコメニウス [Wikipedia] (英語) が 1658 年に著した "Orbis Sensualium Pictus" の中で明確に述べられています。
「自然とつながっているものはすべて組み合わせて教えるべきだ」
これらの原則に反して、これまで私たちの機械学習へのアプローチは、単一のモダリティを処理するためにカスタマイズされた特殊なモデルに重点が置かれることが多かったのです。たとえば、テキスト読み上げや音声テキスト変換などのタスク用のオーディオモデルや、物体検出や分類などのタスク用のコンピュータービジョンモデルを開発しました。
しかし、マルチモーダル大規模言語モデルの新たな波が生まれ始めています。例としては、OpenAI の GPT-4 Vision、Google の Vertex AI、Gemini Pro Vision、Anthropic の Claude3 などが挙げられます。また、オープンソース製品の LLaVA と balklava は、テキスト、イメージ、音声、ビデオなどの複数の入力を受け入れ、これらの入力を統合してテキストレスポンスを生成できます。
マルチモーダル大規模言語モデル (LLM) 機能により、モデルはイメージ、オーディオ、ビデオなどの他のモダリティと組み合わせてテキストを処理および生成できるようになります。
Spring AI マルチモダリティ
マルチモーダル性とは、テキスト、イメージ、音声、その他のデータ形式を含むさまざまなソースからの情報を同時に理解して処理するモデルの機能を指します。
Spring AI メッセージ API は、マルチモーダル LLM をサポートするために必要なすべての抽象化を提供します。
UserMessage の content
フィールドは主にテキスト入力に使用されますが、オプションの media
フィールドでは、イメージ、オーディオ、ビデオなどのさまざまなモダリティの 1 つ以上の追加コンテンツを追加できます。MimeType
はモダリティ型を指定します。使用される LLM に応じて、Media
データフィールドは、Resource
オブジェクトとしての生のメディアコンテンツ、またはコンテンツへの URI
のいずれかになります。
メディアフィールドは現在、ユーザー入力メッセージ (例: UserMessage ) にのみ適用されます。システムメッセージには意味を持ちません。LLM レスポンスを含む AssistantMessage は、テキストコンテンツのみを提供します。テキスト以外のメディア出力を生成するには、専用の単一モダリティモデルのいずれかを使用する必要があります。* |
例: 次のイメージ (multimodal.test.png
) を入力として取り、LLM に何が見えるかを説明するように依頼できます。
ほとんどのマルチモーダル LLM の場合、Spring AI コードは次のようになります。
var imageResource = new ClassPathResource("/multimodal.test.png");
var userMessage = new UserMessage(
"Explain what do you see in this picture?", // content
new Media(MimeTypeUtils.IMAGE_PNG, imageResource)); // media
ChatResponse response = chatModel.call(new Prompt(userMessage));
または、Fluent ChatClient API を使用します。
String response = ChatClient.create(chatModel).prompt()
.user(u -> u.text("Explain what do you see on this picture?")
.media(MimeTypeUtils.IMAGE_PNG, new ClassPathResource("/multimodal.test.png")))
.call()
.content();
次のようなレスポンスが生成されます。
これはシンプルなデザインのフルートボウルのイメージです。ボウルは金属製で、湾曲したワイヤーの縁が開いた構造になっており、山括弧 のどこからでもフルートが見えます。ボウルの中には、赤いリンゴと思われるものの上に黄色いバナナが 2 本乗っています。バナナは皮に茶色い斑点があることから、少し熟しすぎていることがわかります。ボウルの上部には金属製のリングがあり、持ち運び用のハンドルとして使われていると思われます。ボウルは平らな面に置かれ、背景は中間色で、中のフルートがはっきりと見えます。
Spring AI は、次のチャットモデルに対してマルチモーダルサポートを提供します。