Spring AI - 多模態 - Orbis Sensualium Pictus

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

更新 2024年07月20日:更新訊息 API 層級圖並更新支援多模態的模型名稱

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

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

學習的這些基本原則是由現代教育之父約翰·阿莫斯·誇美紐斯在他1658年的著作《有感官的世界圖畫》(Orbis Sensualium Pictus)中闡述的。

orbis-sensualium-pictus2

"自然相連的事物都應該結合起來教授"

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

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

多模態大型語言模型(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();

併產生類似的回應

這是一張水果碗的圖片,設計簡單。碗由金屬製成,邊緣帶有彎曲的金屬絲,形成一個開放的結構,讓水果從各個角度都能看到。碗裡,有兩個黃色的香蕉放在一個紅色的蘋果上面。香蕉有些過熟,這從它們表皮上的褐色斑點可以看出。碗的頂部有一個金屬環,可能是用來作為提手的。碗放在一個平面上,背景顏色中性,可以清楚地看到裡面的水果。

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

下一步

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

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

結論

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

當我們擁抱這個多模態人工智慧時代時,誇美紐斯所設想的互聯學習的願景正在成為現實。

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

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

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

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

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

檢視所有