Embedding(也称为嵌入)可以将文本、图片和音视频等数据转化成向量(数字序列)。向量之间的距离代表数据的相关性。距离越小,相关性越高;距离越大,相关性越低。
应用场景
推荐:根据输入数据推荐相关条目。例如,根据用户购买历史和浏览记录推荐相关商品。
聚类:按相关性对输入数据进行分组。例如,将海量新闻按主题归类为科技、体育、娱乐等。
搜索:将搜索结果按照与输入数据的相关性进行排序。例如,文本向量模型可以根据用户搜索词语返回相关网页,多模态向量模型可以实现以文搜图。
异常检测:识别出相关性较小的异常值。例如,从大量交易记录中识别出异常交易模式。
支持的模型
通用文本向量
模型名称 | 向量维度 | 最大行数 | 单行最大处理Token数 | 支持语种 | 单价 (每千Token) | 免费额度(注) |
text-embedding-v3 | 1024 768 512 | 6 | 8192 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语、日语、韩语、德语、俄罗斯语等50+语种 | 0.0007元 | 50万Token 有效期:百炼开通后180天内 |
text-embedding-v2 | 1536 | 25 | 2048 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语、日语、韩语、德语、俄罗斯语 | ||
text-embedding-v1 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语 | |||||
text-embedding-async-v2 | 100000 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语、日语、韩语、德语、俄罗斯语 | 2000万Token 有效期:百炼开通后180天内 | |||
text-embedding-async-v1 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语 |
多模态向量
ONE-PEACE
多模态向量模型将文本、图像、语音转换成一组数字,适用于音视频分类、图像分类、图文检索等。
计费规则:按输入音频、图像和文本的加权条目数计费。加权条目数 = 音频数目 * 音频加权权重(2) + 图像张数 * 图像加权权重(1) + 文字条数 * 文字加权权重(1)
模型名称 | 数据类型 | 向量维度 | 单价 | 免费额度(注) |
multimodal-embedding-one-peace-v1 | float(32) | 1536 | 目前仅供免费体验。 免费额度用完后不可调用,敬请关注后续动态。 | 10,000加权条目数 有效期:百炼开通后180天内 |
快速入门
您需要已获取API Key并配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK。
通用文本向量快速入门
同步调用示例
同步调用支持输入单条文本,对其进行处理返回结果。
import dashscope
from http import HTTPStatus
def embed_with_str():
resp = dashscope.TextEmbedding.call(
model=dashscope.TextEmbedding.Models.text_embedding_v1,
input='衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买')
if resp.status_code == HTTPStatus.OK:
print(resp)
else:
print(resp)
if __name__ == '__main__':
embed_with_str()
import java.util.Arrays;
import java.util.concurrent.Semaphore;
import com.alibaba.dashscope.common.ResultCallback;
import com.alibaba.dashscope.embeddings.TextEmbedding;
import com.alibaba.dashscope.embeddings.TextEmbeddingParam;
import com.alibaba.dashscope.embeddings.TextEmbeddingResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public final class Main {
public static void basicCall() throws ApiException, NoApiKeyException{
TextEmbeddingParam param = TextEmbeddingParam
.builder()
.model(TextEmbedding.Models.TEXT_EMBEDDING_V1)
.texts(Arrays.asList("风急天高猿啸哀", "渚清沙白鸟飞回", "无边落木萧萧下", "不尽长江滚滚来")).build();
TextEmbedding textEmbedding = new TextEmbedding();
TextEmbeddingResult result = textEmbedding.call(param);
System.out.println(result);
}
public static void main(String[] args){
try {
basicCall();
} catch (ApiException | NoApiKeyException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
同步调用输出
{
"status_code": 200,
"request_id": "617b3670-6f9e-9f47-ad57-997ed8aeba6a",
"code": "",
"message": "",
"output": {
"embeddings": [
{
"embedding": [
0.09393704682588577,
2.4155092239379883,
-1.8923076391220093,
.,
.,
.
],
"text_index": 0
}
]
},
"usage": {
"total_tokens": 23
}
}
多模态向量快速入门
import dashscope
def image_call():
input = [{'image': 'https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png'},
]
result = dashscope.MultiModalEmbedding.call(model=dashscope.MultiModalEmbedding.Models.multimodal_embedding_one_peace_v1,
input=input,
auto_truncation=True)
print(result)
if __name__ == '__main__':
image_call()
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.embeddings.MultiModalEmbedding;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingItemImage;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingParam;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import java.util.Arrays;
public class Main {
public static void imageEmbedding() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalEmbedding embedding = new MultiModalEmbedding();
MultiModalEmbeddingItemImage image =
new MultiModalEmbeddingItemImage(
"https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png");
MultiModalEmbeddingParam param =
MultiModalEmbeddingParam.builder()
.model(MultiModalEmbedding.Models.MULTIMODAL_EMBEDDING_ONE_PEACE_V1)
.contents(Arrays.asList(image))
.build();
MultiModalEmbeddingResult result = embedding.call(param);
System.out.print(result);
}
public static void main(String[] args){
try {
imageEmbedding();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
输出示例
{
"status_code": 200,
"request_id": "4fe2cde6-ba37-973f-9db8-2cd74a908a9f",
"code": "",
"message": "",
"output": {
"embedding": [ # The embedding vector
-0.0200169887393713,
.,
.,
.,
]
},
"usage": {
"image": {
"measure": 1,
"weight": 1
},
"total_usage": 4,
"audio": {
"measure": 1,
"weight": 2
},
"text": {
"measure": 1,
"weight": 1
}
}
}
使用示例
实现语义搜索
API参考
通用文本向量
多模态向量