搶先一步
VMware 提供培訓和認證,以加速您的進度。
瞭解更多更新 2024.07.20:更新 Message API 階層圖,並更新支援多模態的模型名稱
更新 2024.06.02:新增額外的程式碼片段,展示如何使用新的 ChatClient API。
人類透過多種資料輸入模式同步處理知識。我們的學習方式和經驗都是多模態的。我們不只有視覺、聽覺或文字。
現代教育之父約翰·阿摩司·康米紐斯 (John Amos Comenius) 在他 1658 年的作品《世界圖解》(Orbis Sensualium Pictus) 中闡述了這些基礎學習原則。
「所有自然相關的事物都應該組合起來教導」
與這些原則相反,過去我們對機器學習的方法通常側重於針對處理單一模態量身定制的專業模型。例如,我們開發音訊模型用於文字轉語音或語音轉文字等任務,以及電腦視覺模型用於物件偵測和分類等任務。
然而,新一波多模態大型語言模型開始出現。範例包括 OpenAI 的 GPT-4o、Google 的 Vertex AI Gemini Pro 1.5、Anthropic 的 Claude3,以及開源產品 LLaVA 和 balklava,它們能夠接受多種輸入,包括文字影像、音訊和視訊,並透過整合這些輸入來產生文字回應。
多模態大型語言模型 (LLM) 的功能使模型能夠處理和產生文字,並結合其他模態,例如影像、音訊或視訊。
多模態指的是模型同時理解和處理來自各種來源的資訊的能力,包括文字、影像、音訊和其他資料格式。
Spring AI Message API 提供了所有必要的抽象概念來支援多模態 LLM。
UserMessage 的 content 欄位主要用作文字輸入,而可選的 media 欄位允許新增一或多個不同模態的額外內容,例如影像、音訊和視訊。MimeType 指定模態類型。根據使用的 LLM,Media 的 data 欄位可以是編碼的原始媒體內容或內容的 URI。
注意:媒體欄位目前僅適用於使用者輸入訊息,例如 UserMessage
。
舉例來說,讓我們採用以下圖片(multimodal.test.png)作為輸入,並要求 LLM 解釋它在圖片中看到的東西。
對於大多數多模態 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-SANPSHOT 和 1.0.0-M1) 的 Spring AI 為以下 Chat Client 提供多模態支援
接下來,Spring AI 將重新設計 Document API,以新增類似 Message API 的多模態支援。
目前,AWS Bedrock Titan EmbeddingClient 支援影像嵌入。需要整合額外的多模態嵌入服務,以允許在向量儲存中對多模態內容進行編碼、儲存和搜尋。
傳統上,機器學習側重於用於單一模態的專業模型。然而,隨著 OpenAI 的 GPT-4 Vision 和 Google 的 Vertex AI Gemini 等創新,一個新時代已經來臨。
當我們擁抱這個多模態 AI 時代時,康米紐斯所設想的互聯學習願景成為現實。
Spring AI 的 Message API 促進了多模態 LLM 的整合,使開發人員能夠創建創新的解決方案。透過利用這些模型,應用程式可以理解和回應各種形式的資料,從而釋放 AI 驅動體驗的新可能性。