多模态向量模型将文本、图像或视频转换成统一的1024维浮点数向量,适用于视频分类、图像分类、图文检索等。
核心能力
跨模态检索:实现以文搜图、以图搜视频、以图搜图等跨模态的语义搜索。
语义相似度计算:在统一的向量空间中,衡量不同模态内容之间的语义相似性。
内容分类与聚类:基于内容的语义向量进行智能分组、打标和聚类分析。
关键特性:所有模态(文本、图片、视频)生成的向量都位于同一语义空间,可直接通过计算余弦相似度等方法进行跨模态匹配与比较。关于模型选型和应用方法的更多介绍,参考文本与多模态向量化。
模型介绍、选型建议和使用方法,请参考文本与多模态向量化。
模型概览
模型名称 | 向量维度 | 文本长度限制 | 图片限制 | 视频片限制 | 单价(每千输入Token) | 免费额度(注) |
qwen2.5-vl-embedding | 2048, 1024, 768, 512 | 32,000 Token | ≤5MB, 1张 | ≤50MB | 图片/视频:0.0018元 文本:0.0007元 | 100万Token 有效期:百炼开通后90天内 |
tongyi-embedding-vision-plus | 1,152 | 1,024 Token | ≤3MB, ≤8张 | ≤10MB | 0.0005元 | |
tongyi-embedding-vision-flash | 768 | 1,024 Token | ≤3MB, ≤8张 | ≤10MB | 图片/视频:0.0002元 文本:0.0005元 | |
multimodal-embedding-v1 | 1,024 | 512 Token | ≤3MB, 1张 | ≤10MB | 免费试用 | 无Token额度限制 |
输入格式与语种限制:
模型 | 文本 | 图片 | 视频 |
qwen2.5-vl-embedding | 支持中、英、日、韩、法、德等11种语言 | JPEG, PNG, WEBP, BMP, TIFF, ICO, DIB, ICNS, SGI(支持URL或Base64) | MP4, AVI, MOV(仅支持URL) |
其他多模态模型 | 中/英文 | JPG, PNG, BMP (支持URL或Base64) | MP4, MPEG, AVI, MOV, MPG, WEBM, AVI, FLV, MKV(仅支持URL) |
接口支持单段文本、单张图片或单个视频文件的上传,也允许不同类型组合(如文本+图片),部分模型支持同类型内容的多个输入(如多张图片),请参考具体模型的限制说明。
前提条件
您需要已获取API Key并配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK。
HTTP调用
POST https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding
请求 | 多模态向量 |
请求头(Headers) | |
Content-Type 请求内容类型。可设置为application/json 或者text/event-stream(开启 SSE 响应)。 Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。接口使用阿里云百炼API-Key进行身份认证。示例值:Bearer sk-xxxx。 | |
请求体(Request Body) | |
model 模型名称。设置为模型概览中的模型名称。 | |
input 输入内容。 parameters 仅 |
响应 | 成功响应异常响应 |
output 任务输出信息。 | |
request_id 请求唯一标识。可用于请求明细溯源和问题排查。 | |
code 请求失败的错误码。请求成功时不会返回此参数,详情请参见错误信息。 | |
message 请求失败的详细信息。请求成功时不会返回此参数,详情请参见错误信息。 | |
usage 输出信息统计。 |
SDK使用
当前版本的 SDK 调用与原生 HTTP 调用的请求体结构不一致。SDK 的input参数对应了HTTP中的input.contents。
代码示例
生成图片Embedding示例
使用图片URL
import dashscope
import json
from http import HTTPStatus
# 实际使用中请将url地址替换为您的图片url地址
image = "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png"
input = [{'image': image}]
# 调用模型接口
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))使用本地图片
您可以参考以下示例代码,将本地图片转换为Base64格式后调用multimodal-embedding-v1模型进行向量化处理。
import dashscope
import base64
import json
from http import HTTPStatus
# 读取图片并转换为Base64,实际使用中请将xxx.png替换为您的图片文件名或路径
image_path = "xxx.png"
with open(image_path, "rb") as image_file:
# 读取文件并转换为Base64
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
# 设置图像格式
image_format = "png" # 根据实际情况修改,比如jpg、bmp 等
image_data = f"data:image/{image_format};base64,{base64_image}"
# 输入数据
input = [{'image': image_data}]
# 调用模型接口
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))生成视频Embedding示例
多模态向量化模型目前仅支持以URL形式输入视频文件,暂不支持直接传入本地视频。
import dashscope
import json
from http import HTTPStatus
# 实际使用中请将url地址替换为您的视频url地址
video = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4"
input = [{'video': video}]
# 调用模型接口
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))生成文本Embedding示例
import dashscope
import json
from http import HTTPStatus
text = "通用多模态表征模型示例"
input = [{'text': text}]
# 调用模型接口
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, 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_tokens": 0
}
}错误码
如果模型调用失败并返回报错信息,请参见错误信息进行解决。