跳到主要內容
Open on GitHub

多模態

概觀

多模態指的是處理不同形式資料的能力,例如文字、音訊、圖像和影片。多模態可以出現在各種組件中,使模型和系統能夠無縫地處理和處理這些資料類型的組合。

  • 聊天模型:理論上,這些模型可以接受和生成多模態的輸入和輸出,處理各種資料類型,如文字、圖像、音訊和影片。
  • 嵌入模型:嵌入模型可以表示多模態內容,將各種形式的資料(如文字、圖像和音訊)嵌入到向量空間中。
  • 向量儲存:向量儲存可以在表示多模態資料的嵌入向量上進行搜尋,實現跨不同類型資訊的檢索。

聊天模型中的多模態

先決條件

多模態支援仍相對較新且不常見,模型提供商尚未標準化定義 API 的「最佳」方式。因此,LangChain 的多模態抽象是輕量級且靈活的,旨在適應不同模型提供商的 API 和互動模式,但並未在模型之間標準化。

如何使用多模態模型

支援哪種類型的多模態?

輸入

某些模型可以接受多模態輸入,例如圖像、音訊、影片或檔案。支援的多模態輸入類型取決於模型提供商。例如,Google 的 Gemini 支援 PDF 等文件作為輸入。

大多數支援多模態輸入的聊天模型也接受 OpenAI 內容區塊格式的值。到目前為止,這僅限於圖像輸入。對於像 Gemini 這樣支援影片和其他位元組輸入的模型,API 也支援原生、特定於模型的表示形式。

將多模態輸入傳遞給聊天模型的要點是使用指定類型和相應資料的內容區塊。例如,要將圖像傳遞給聊天模型

from langchain_core.messages import HumanMessage

message = HumanMessage(
content=[
{"type": "text", "text": "describe the weather in this image"},
{"type": "image_url", "image_url": {"url": image_url}},
],
)
response = model.invoke([message])
API 參考:HumanMessage
注意

內容區塊的確切格式可能因模型提供商而異。請參考聊天模型的整合文件以取得正確的格式。在聊天模型整合表中找到整合。

輸出

在撰寫本文時(2024 年 10 月),幾乎沒有流行的聊天模型支援多模態輸出。

唯一的例外是 OpenAI 的聊天模型 (gpt-4o-audio-preview),它可以生成音訊輸出。

多模態輸出將顯示為 AIMessage 回應物件的一部分。

請參閱 ChatOpenAI 以取得有關如何使用多模態輸出的更多資訊。

工具

目前,沒有任何聊天模型被設計為在工具呼叫請求ToolMessage 結果中直接使用多模態資料。

但是,聊天模型可以透過使用對多模態資料的參考(例如 URL)調用工具,而不是資料本身,來輕鬆地與多模態資料互動。例如,任何能夠工具呼叫的模型都可以配備下載和處理圖像、音訊或影片的工具。

嵌入模型中的多模態

先決條件

嵌入是用於相似性搜尋和檢索等任務的資料向量表示。

LangChain 中目前使用的嵌入介面完全針對基於文字的資料進行了最佳化,並且適用於多模態資料。

隨著涉及多模態搜尋和檢索任務的用例變得越來越普遍,我們希望擴展嵌入介面以容納其他資料類型,如圖像、音訊和影片。

向量儲存中的多模態

先決條件

向量儲存是用於儲存和檢索嵌入向量的資料庫,嵌入向量通常用於搜尋和檢索任務。與嵌入向量類似,向量儲存目前針對基於文字的資料進行了最佳化。

隨著涉及多模態搜尋和檢索任務的用例變得越來越普遍,我們希望擴展向量儲存介面以容納其他資料類型,如圖像、音訊和影片。


此頁面是否對您有幫助?