跳到主要内容

多模态

概述

多模态 指的是处理来自不同形式的数据的能力,例如文本、音频、图像和视频。多模态可以出现在各种组件中,允许模型和系统无缝地处理和加工这些数据类型的混合。

  • 聊天模型:理论上,这些模型可以接受和生成多模态输入和输出,处理各种数据类型,如文本、图像、音频和视频。
  • 嵌入模型:嵌入模型可以表示多模态内容,将各种形式的数据(如文本、图像和音频)嵌入到向量空间中。
  • 向量存储:向量存储可以搜索表示多模态数据的嵌入,从而实现跨不同类型信息的检索。

聊天模型中的多模态

先决条件

多模态支持仍然相对较新且不太常见,模型提供商尚未就定义 API 的“最佳”方式达成标准化。因此,LangChain 的多模态抽象是轻量级且灵活的,旨在适应不同模型提供商的 API 和交互模式,但在模型之间标准化。

如何使用多模态模型

支持哪种多模态?

输入

某些模型可以接受多模态输入,例如图像、音频、视频或文件。支持的多模态输入类型取决于模型提供商。例如,谷歌的 Gemini 支持 PDF 等文档作为输入。

大多数支持多模态输入的聊天模型也接受 OpenAI 的内容块格式中的这些值。到目前为止,这仅限于图像输入。对于像 Gemini 这样支持视频和其他字节输入的模型,API 也支持原生的、模型特定的表示。

将多模态输入传递给聊天模型的要点是使用内容块,指定类型和对应的数据。例如,要将图像传递给聊天模型

import { HumanMessage } from "@langchain/core/messages";

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

内容块的确切格式可能因模型提供商而异。请参考聊天模型的集成文档以获取正确的格式。在聊天模型集成表中找到集成。

输出

在撰写本文时(2024 年 10 月),实际上没有流行的聊天模型支持多模态输出。

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

多模态输出将作为 AIMessage 响应对象的一部分出现。

请参阅 ChatOpenAI 以获取有关如何使用多模态输出的更多信息。

工具

目前,没有聊天模型被设计为在工具调用请求ToolMessage 结果中直接处理多模态数据。

但是,聊天模型可以通过使用对多模态数据的引用(例如 URL)而不是数据本身来调用工具,从而轻松地与多模态数据交互。例如,任何能够工具调用的模型都可以配备下载和处理图像、音频或视频的工具。

嵌入模型中的多模态

先决条件

嵌入 是数据的向量表示,用于相似性搜索和检索等任务。

LangChain 中使用的当前嵌入接口完全针对基于文本的数据进行了优化,适用于多模态数据。

随着涉及多模态搜索和检索任务的用例变得越来越普遍,我们希望扩展嵌入接口以适应其他数据类型,如图像、音频和视频。

向量存储中的多模态

先决条件

向量存储是用于存储和检索嵌入的数据库,嵌入通常用于搜索和检索任务。与嵌入类似,向量存储目前针对基于文本的数据进行了优化。

随着涉及多模态搜索和检索任务的用例变得越来越普遍,我们希望扩展向量存储接口以适应其他数据类型,如图像、音频和视频。


此页是否对您有帮助?


您也可以留下详细的反馈 在 GitHub 上.