Spring AI - 多模態 - 感官世界圖

工程 | Christian Tzolov | 2024年4月19日 | ...

更新 2024年7月20日:更新 Message API 層次結構圖並更新支援多模態的模型名稱

更新 2024年6月2日:新增一個額外的程式碼片段,演示如何使用新的 ChatClient API。

人類同時處理來自多種資料輸入模式的知識。我們的學習方式、我們的經驗都是多模態的。我們不僅僅只有視覺、聽覺和文字。

現代教育之父約翰·阿莫斯·誇美紐斯(John Amos Comenius)在其1658年的著作《感官世界圖》(Orbis Sensualium Pictus)中闡述了這些基礎學習原則。

orbis-sensualium-pictus2

“所有自然連線的事物都應結合起來教授”

與這些原則相反,過去我們在機器學習方面的做法通常側重於專門的模型,這些模型被定製用於處理單一模態。例如,我們開發了用於文字轉語音或語音轉文字等任務的音訊模型,以及用於物件檢測和分類等任務的計算機視覺模型。

然而,一股新的多模態大型語言模型浪潮開始湧現。例子包括 OpenAI 的 GPT-4o、谷歌的 Vertex AI Gemini Pro 1.5、Anthropic 的 Claude3,以及開源產品 LLaVA 和 Baklava,它們能夠接受多種輸入,包括文字、影像、音訊和影片,並透過整合這些輸入來生成文字響應。

多模態大型語言模型(LLM)的特性**使得模型能夠結合其他模態(如影像、音訊或影片)處理和生成文字。**

Spring AI - 多模態

多模態指的是模型能夠同時理解和處理來自各種來源的資訊,包括文字、影像、音訊和其他資料格式的能力。

Spring AI 的 Message API 提供了支援多模態 LLM 所需的所有抽象。

spring-ai-message-api

UserMessage 的 **content** 欄位主要用作文字輸入,而可選的 **media** 欄位允許新增一個或多個不同模態的額外內容,例如影像、音訊和影片。MimeType 指定模態型別。根據所使用的 LLM,Media 的 data 欄位可以是編碼的原始媒體內容,也可以是指向內容的 URI。

**注意:** `media` 欄位目前僅適用於使用者輸入訊息,例如 `UserMessage`。

示例

例如,我們將以下圖片(multimodal.test.png)作為輸入,並要求 LLM 解釋它在圖片中看到的內容。

multimodal.test

對於大多數多模態 LLM,Spring AI 程式碼大致如下所示

byte[] imageData = new ClassPathResource("/multimodal.test.png").getContentAsByteArray();

var userMessage = new UserMessage(
    "Explain what do you see in this picture?", // text content
    List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageData))); // image content

ChatResponse response = chatModel.call(new Prompt(List.of(userMessage)));

或者使用新的流式 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();

併產生如下響應

這是一張設計簡潔的水果碗圖片。碗由金屬製成,帶有彎曲的金屬絲邊緣,形成開放結構,使水果可以從各個角度看到。碗內有兩個黃色的香蕉,放在一個看起來像紅蘋果的水果上。香蕉有點過熟,表皮有棕色斑點。碗頂部有一個金屬環,可能是用於提攜的把手。碗放在一個平面上,背景顏色中性,提供了碗內水果的清晰檢視。

最新版本(1.0.0-SNAPSHOT 和 1.0.0-M1)的 Spring AI 為以下聊天客戶端提供了多模態支援

下一步

接下來,Spring AI 將重構 Document API,以新增類似於 Message API 的多模態支援。

目前,AWS Bedrock Titan EmbeddingClient 支援影像嵌入。需要整合額外的多模態 Embedding 服務,以允許在向量儲存中對多模態內容進行編碼、儲存和搜尋。

結論

傳統上,機器學習專注於針對單一模態的專用模型。然而,隨著 OpenAI 的 GPT-4 Vision 和谷歌的 Vertex AI Gemini 等創新,一個新時代已經到來。

隨著我們擁抱多模態 AI 時代,誇美紐斯所設想的互聯學習願景正在成為現實。

Spring AI 的 Message API 促進了多模態 LLM 的整合,使開發人員能夠建立創新解決方案。透過利用這些模型,應用程式能夠理解和響應各種形式的資料,為 AI 驅動的體驗開啟新的可能性。

訂閱 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

搶佔先機

VMware 提供培訓和認證,助您快速進步。

瞭解更多

獲取支援

Tanzu Spring 透過一個簡單的訂閱,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援和二進位制檔案。

瞭解更多

即將舉辦的活動

檢視 Spring 社群的所有即將舉辦的活動。

檢視全部