多模态向量模型将文本、图像或视频转换成一组由浮点数组成的向量,适用于视频分类、图像分类、图文检索等。
模型介绍、选型建议和使用方法,请参考Embedding。
模型概览
模型名称 | 数据类型 | 向量维度 | 单价 | 免费额度(注) | 限流 |
multimodal-embedding-v1 | float(32) | 1,024 | 免费试用,并将于2025年1月1日转为付费制 | 无加权条目数限制 有效期至:2025年1月1日 | 每分钟调用限制(RPM):120 |
通用多模态向量API使用过程中存在以下输入类型与格式限制
输入类型 | 语言/格式限制 | 长度/大小限制 |
文本 | 中/英文 | 512个Token, 超过512 token长度的文本内容将会被截断 |
图片 | JPG、PNG、BMP | 支持以Base64格式或URL形式输入。接受的图片大小上限为 3MB |
视频 | MP4、MPEG、MPG、WEBM、AVI、FLV、MKV、MOV | 接受的视频大小上限为 10MB |
前提条件
您需要已获取API Key并配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK。
SDK使用
代码示例
生成图片embedding示例
import dashscope
import json
from http import HTTPStatus
image = "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png"
input = [{'image': image}]
resp = dashscope.MultiModalEmbedding.call(
model="multimodal-embedding-v1",
input=input
)
if resp.status_code == HTTPStatus.OK:
print(json.dumps(resp.output, ensure_ascii=False, indent=4))
生成文本embedding示例
import dashscope
import json
from http import HTTPStatus
text = "通用多模态表征模型示例"
input = [{'text': text}]
resp = dashscope.MultiModalEmbedding.call(
model="multimodal-embedding-v1",
input=input
)
if resp.status_code == HTTPStatus.OK:
print(json.dumps(resp.output, ensure_ascii=False, indent=4))
输出示例
{
"status_code": 200,
"request_id": "b5623e99-ea0c-9509-9b25-20bcc99d03e9",
"code": "",
"message": "",
"output": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.020782470703125,
-0.01399993896484375,
-0.0229949951171875,
...
],
"type": "text"
}
]
},
"usage": {
"input_tokens": 12,
"image_count": 0,
"duration": 0
}
}
参数详解
请求参数
参数名称
必选
类型
描述
model
是
String
取值:"multimodal-embedding-v1",该值是固定值,无需更改
说明:代表模型的英文名称
input
否
Array[dict]
/Array[str]
多模态表征输入的具体内容
其中text embedidng相关的输入可直接传入string字段,不需要通过dict进行类型传入
多模态类型支持text、image、video类型, 不同类型的参数值均为String类型,格式参考如下{"模态类型": "输入字符串或图像、视频url"}
图片使用BASE64数据:将编码后的BASE64数据传递给
image_url
参数,格式为data:image/{format};base64,{base64_image}
,其中:image/{format}
:本地图像的格式。请根据实际的图像格式,例如图片为jpg格式,则设置为image/jpeg
base64_image
:图像的BASE64数据
响应参数
字段
类型
描述
示例值
status_code
Integer
本次结果http相应码,200对应请求成功。
"status_code": 200, "request_id": "b5623e99-ea0c-9509-9b25-20bcc99d03e9", "code": "", "message": "", "output": { "embeddings": [ { "index": 0, "embedding": [ -0.020782470703125, -0.01399993896484375, -0.0229949951171875, ... ], "type": "text" } ] }
code
String
仅请求失败时展示错误码。
message
String
仅请求失败时展示详细错误信息。
output.embedding
Array[Dict]
本次请求的算法输出内容,是一个由结构体组成的数组。该结构主要包含3个不同的字段:
index: 本结构中的算法结果对应的输入在输入数组中的索引值。
embedding: 对应输入下算法输出的embedding
type: 表示该embedding的类型,目前支持text/image/video
usage.[text|image|audio]
dict
对应各模态计量信息。
input_tokens: 本次请求输入文本内容的token数量
image_count: 本次请求输入的图片张数
duration: 本次请求的视频帧长
"usage": { "input_tokens": 12, "image_count": 0, "duration": 0 }
request_id
String
本次请求的系统唯一码
7574ee8f-38a3-4b1e-9280-11c33ab46e51
HTTP调用
作业提交接口调用
POST https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding
参数详解
请求参数
传参方式 | 字段 | 类型 | 必选 | 描述 | 示例值 |
Header | Content-Type | String | 是 | 请求类型:application/json 或者text/event-stream(开启 SSE 响应) | application/json |
Authorization | String | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a | |
X-DashScope-WorkSpace | String | 否 | 指明本次调用需要使用的workspace;需要注意的是,对于子账号Apikey调用,此参数为必选项,子账号必须归属于某个workspace才能调用;对于主账号Apikey此项为可选项,添加则使用对应的workspace身份,不添加则使用主账号身份。 | ws_QTggmeAxxxxx | |
Body | model | String | 是 | 指明需要调用的模型,此处使用multimodal-embedding-v1 | multimodal-embedding-v1 |
input.contents[list] | Array | 是 | contents 列表中包含本次需要进行向量计算的所有内容列表,每一个列表可以分别是图像(image),文本(text)或者视频(video)。 |
|
响应参数
字段 | 类型 | 描述 | 示例值 |
output.embedding[] | Array | 本次请求的算法输出内容。 |
|
output.embeddings.index | Integer | 本结构中的算法结果对应的输入在输入数组中的索引值 | |
output.embeddings.embedding | Array | 对应输入下算法输出embedding | |
output.embeddings.type | String | 表示该embedding的类型, text/image/video | |
usage.input_tokens | Integer | 本次请求输入内容的 token 数目 |
|
usage.image_count | Integer | 本次请求输入的图片张数 | |
usage.duration | Integer | 本次请求输入的视频帧长 | |
request_id | String | 本次请求的系统唯一码 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
Curl示例
curl --silent --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding' \
--header 'Authorization: Bearer $DASHSCOPE_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "multimodal-embedding-v1",
"input": {
"contents": [
{"text": "通用多模态表征模型"},
{"image": "https://mitalinlp.oss-cn-hangzhou.aliyuncs.com/dingkun/images/1712648554702.jpg"},
{"vedio": "https://mitalinlp.oss-cn-hangzhou.aliyuncs.com/dingkun/multimodel-test/video/24i4ncHuf6A.mp4"}
]
},
"parameters": {
}
}'
响应示例
调用成功示例
{
"output": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.026611328125,
-0.016571044921875,
-0.02227783203125,
...
],
"type": "text"
},
{
"index": 1,
"embedding": [
0.051544189453125,
0.007717132568359375,
0.026611328125,
...
],
"type": "image"
},
{
"index": 2,
"embedding": [
-0.0217437744140625,
-0.016448974609375,
0.040679931640625,
...
],
"type": "video"
}
]
},
"usage": {
"input_tokens": 10,
"image_count": 1,
"duration": 3.34563
},
"request_id": "1fff9502-a6c5-9472-9ee1-73930fdd04c5"
}
调用异常示例
在访问请求出错的情况下,输出的结果中会通过 code 和 message 指明出错原因。
{
"code":"InvalidApiKey",
"message":"Invalid API-key provided.",
"request_id":"fb53c4ec-1c12-4fc4-a580-cdb7c3261fc1"
}
错误码
如果模型调用失败并返回报错信息,请参见错误码进行解决。