Embedding(也称为嵌入)是将文本、图片或音视频等数据转化为向量(数字序列)的一种方法。向量的特点在于可以用数学方式表示数据间的关系,向量之间的距离代表数据的相关性。距离越小,相关性越高;距离越大,相关性越低。
应用场景
推荐:根据输入数据推荐相关信息条目。例如,根据用户购买历史和浏览记录推荐相关商品。
聚类:按相关性对输入数据进行分类。例如,将海量新闻按主题归类为科技、体育、娱乐等。
搜索:将搜索结果按照与输入数据的相关性进行排序。例如,文本向量模型可以根据用户搜索词语返回相关网页,多模态向量模型可以实现以文搜图。
异常检测:识别出相关性较小的异常值。例如,从大量交易记录中识别出异常交易模式。
支持的模型
通用文本向量
向量维度指的是向量中包含的元素数量。例如,一个 1024 维的向量包含 1024 个数值。维度越高,向量能表示的信息就越丰富,从而更细致地捕捉文本的特性。
模型名称 | 向量维度 | 最大行数 | 单行最大处理Token数 | 支持语种 | 单价(每千输入Token) | 免费额度(注) |
text-embedding-v3 | 1,024(默认)、768或512 | 6 | 8,192 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语、日语、韩语、德语、俄罗斯语等50+主流语种 | 0.0007元 | 50万Token 有效期:百炼开通后180天内 |
text-embedding-v2 | 1,536 | 25 | 2,048 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语、日语、韩语、德语、俄罗斯语 | ||
text-embedding-v1 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语 | |||||
text-embedding-async-v2 | 100,000 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语、日语、韩语、德语、俄罗斯语 | 2000万Token 有效期:百炼开通后180天内 | |||
text-embedding-async-v1 | 中文、英语、西班牙语、法语、葡萄牙语、印尼语 |
多模态向量
模型根据用户的输入生成连续向量,这些输入可以是文本、图片或视频,文件格式详情请参照调用限制。适用于视频分类、图像分类、图文检索等任务场景。
模型名称 | 数据类型 | 向量维度 | 单价 | 免费额度(注) | 限流 |
multimodal-embedding-v1 | float(32) | 1,024 | 免费试用,并将于2025年1月1日转为付费制 | 无加权条目数限制 有效期至:2025年1月1日 | 每分钟调用限制(RPM):120 |
选型建议
首选模型
对于涉及图像与视频的多模态向量分析,请使用multimodal-embedding-v1。
对于纯文本的向量分析,建议选择 text-embedding-v3。该版本在语种支持、输入长度和向量维度自定义化等方面进行了全面升级,适用于大部分场景:
单行文本处理长度:最大单行输入长度扩展至 8192 Token。
更多语种支持:覆盖 50+ 种语言。
灵活的向量维度选择:提供 512、768 和 1024 三种维度选择,维度越高,语义表达精度越高,下游任务的计算/存储成本也相应增加。
多样化输出选项:支持稠密向量(dense)和离散向量(sparse),满足不同应用场景需求:
稠密向量:能够更加有效地捕捉文本的语义特征,适用于常规检索和语义匹配场景。
离散向量:降低计算复杂度和存储成本,适用于存储资源有限或需高效语义匹配场景。
对于通过字符串输入的情况,模型会将整个字符串视为单行,输入长度的上限为 8192 Token。如果字符串内容超过此限制,可以使用以下方法调整输入格式:
字符串列表输入:将输入内容拆分为多个部分并生成一个字符串列表。需确保以下条件:
列表中的元素数量不超过 6 个
每个元素的长度需在 8192 Token 内
文件上传:将输入的字符串内容整合至文件,通过文件方式上传。需确保以下条件:
文件的总行数不超过 6 行
每行长度在 8192 Token 内
选择 async 版本(大批量文本或高并发场景)
对于需要高并发或大批量文本处理的场景,建议选择 text-embedding-async-v1 或 text-embedding-async-v2:
大批量文本输入:async 版本单次可处理高达100,000 行的文本信息,每一行文本都会生成一个单独的向量,非常适合大规模数据预处理、批量建库或更新任务。
版本选择建议:async 版本适用于建库/更新库等高批量计算场景,但会将结果文件以URL形式返回,用户需要额外步骤下载并处理结果文件,这可能不适用于实时性要求较高的任务。建议根据功能需求选择 v1 或 v2 的 async 版本,且优先选择与现有版本兼容的 async 版本。
快速入门
您需要已获取API Key并配置API Key到环境变量。如果通过OpenAI SDK或DashScope SDK进行调用,还需要安装SDK。
通用文本向量快速入门
输入字符串
OpenAI兼容调用
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处用您的API Key进行替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" # 填写百炼服务的base_url
)
completion = client.embeddings.create(
model="text-embedding-v3",
input='衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买',
dimensions=1024,
encoding_format="float"
)
print(completion.model_dump_json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.dashscope.utils.JsonUtils;
public final class Main {
public static void main(String[] args) {
/** 从环境变量中获取 API Key,如果未配置,请直接替换为您的 API Key*/
String apiKey = System.getenv("DASHSCOPE_API_KEY");
if (apiKey == null) {
System.out.println("DASHSCOPE_API_KEY not found in environment variables");
return;
}
String baseUrl = "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings";
HttpClient client = HttpClient.newHttpClient();
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("model", "text-embedding-v3");
requestBody.put("input", "衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买");
requestBody.put("dimensions", 1024);
requestBody.put("encoding_format", "float");
try {
String requestBodyString = JsonUtils.toJson(requestBody);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(baseUrl))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + apiKey)
.POST(HttpRequest.BodyPublishers.ofString(requestBodyString))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("Response: " + response.body());
} else {
System.out.printf("Failed to retrieve response, status code: %d, response: %s%n", response.statusCode(), response.body());
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
curl --location 'https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "text-embedding-v3",
"input": "衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买",
"dimension": "1024",
"encoding_format": "float"
}'
DashScope调用
在使用 Java 并通过 DashScope 调用 Embedding 模型时,当前仅支持对text-embedding-v1与text-embedding-v2模型的调用。
import dashscope
from http import HTTPStatus
resp = dashscope.TextEmbedding.call(
model=dashscope.TextEmbedding.Models.text_embedding_v3,
input='衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买',
dimension=1024
output_type="dense&sparse"
)
print(resp) if resp.status_code == HTTPStatus.OK else print(resp)
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 callWithCallback() throws ApiException, NoApiKeyException, InterruptedException{
TextEmbeddingParam param = TextEmbeddingParam
.builder()
.model(TextEmbedding.Models.TEXT_EMBEDDING_V1)
.texts(Arrays.asList("风急天高猿啸哀", "渚清沙白鸟飞回", "无边落木萧萧下", "不尽长江滚滚来")).build();
TextEmbedding textEmbedding = new TextEmbedding();
Semaphore sem = new Semaphore(0);
textEmbedding.call(param, new ResultCallback<TextEmbeddingResult>() {
@Override
public void onEvent(TextEmbeddingResult message) {
System.out.println(message);
}
@Override
public void onComplete(){
sem.release();
}
@Override
public void onError(Exception err){
System.out.println(err.getMessage());
err.printStackTrace();
sem.release();
}
});
sem.acquire();
}
public static void main(String[] args){
try{
callWithCallback();
}catch(ApiException|NoApiKeyException|InterruptedException e){
e.printStackTrace();
System.out.println(e);
}
try {
basicCall();
} catch (ApiException | NoApiKeyException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "text-embedding-v3",
"input": {
"texts": [
"衣服的质量杠杠的,很漂亮,不枉我等了这么久啊,喜欢,以后还来这里买"
]
},
"parameters": {
"dimension": 1024
}
}'
输入字符串列表
OpenAI兼容调用
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处用您的API Key进行替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" # 填写百炼服务的base_url
)
completion = client.embeddings.create(
model="text-embedding-v3",
input=['风急天高猿啸哀', '渚清沙白鸟飞回', '无边落木萧萧下', '不尽长江滚滚来'],
encoding_format="float"
)
print(completion.model_dump_json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import java.util.Arrays;
import com.alibaba.dashscope.utils.JsonUtils;
public final class Main {
public static void main(String[] args) {
/** 从环境变量中获取 API Key,如果未配置,请直接替换为您的 API Key*/
String apiKey = System.getenv("DASHSCOPE_API_KEY");
if (apiKey == null) {
System.out.println("DASHSCOPE_API_KEY not found in environment variables");
return;
}
String baseUrl = "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings";
HttpClient client = HttpClient.newHttpClient();
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("model", "text-embedding-v3");
List<String> inputList = Arrays.asList("风急天高猿啸哀", "渚清沙白鸟飞回", "无边落木萧萧下", "不尽长江滚滚来");
requestBody.put("input", inputList);
requestBody.put("encoding_format", "float");
try {
/** 将请求体转换为 JSON 字符串*/
String requestBodyString = JsonUtils.toJson(requestBody);
/**构建 HTTP 请求*/
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(baseUrl))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + apiKey)
.POST(HttpRequest.BodyPublishers.ofString(requestBodyString))
.build();
/**发送请求并接收响应*/
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("Response: " + response.body());
} else {
System.out.printf("Failed to retrieve response, status code: %d, response: %s%n", response.statusCode(), response.body());
}
} catch (Exception e) {
/** 捕获并打印异常*/
System.err.println("Error: " + e.getMessage());
}
}
}
curl --location 'https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "text-embedding-v3",
"input": [
"风急天高猿啸哀",
"渚清沙白鸟飞回",
"无边落木萧萧下",
"不尽长江滚滚来"
],
"encoding_format": "float"
}'
DashScope调用
在使用 Java 并通过 DashScope 调用 Embedding 模型时,当前仅支持对text-embedding-v1与text-embedding-v2模型的调用。
import dashscope
from http import HTTPStatus
DASHSCOPE_MAX_BATCH_SIZE = 25
inputs = ['风急天高猿啸哀', '渚清沙白鸟飞回', '无边落木萧萧下', '不尽长江滚滚来']
result = None
batch_counter = 0
for i in range(0, len(inputs), DASHSCOPE_MAX_BATCH_SIZE):
batch = inputs[i:i + DASHSCOPE_MAX_BATCH_SIZE]
resp = dashscope.TextEmbedding.call(
model=dashscope.TextEmbedding.Models.text_embedding_v3,
input=batch,
dimension=1024
)
if resp.status_code == HTTPStatus.OK:
if result is None:
result = resp
else:
for emb in resp.output['embeddings']:
emb['text_index'] += batch_counter
result.output['embeddings'].append(emb)
result.usage['total_tokens'] += resp.usage['total_tokens']
else:
print(resp)
batch_counter += len(batch)
print(result)
import java.util.Arrays;
import java.util.List;
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 {
private static final int DASHSCOPE_MAX_BATCH_SIZE = 25;
public static void main(String[] args) {
List<String> inputs = Arrays.asList(
"风急天高猿啸哀",
"渚清沙白鸟飞回",
"无边落木萧萧下",
"不尽长江滚滚来"
);
TextEmbeddingResult result = null;
int batchCounter = 0;
for (int i = 0; i < inputs.size(); i += DASHSCOPE_MAX_BATCH_SIZE) {
List<String> batch = inputs.subList(i, Math.min(i + DASHSCOPE_MAX_BATCH_SIZE, inputs.size()));
TextEmbeddingParam param = TextEmbeddingParam.builder()
.model(TextEmbedding.Models.TEXT_EMBEDDING_V1)
.texts(batch)
.build();
TextEmbedding textEmbedding = new TextEmbedding();
try {
TextEmbeddingResult resp = textEmbedding.call(param);
if (resp != null) {
if (result == null) {
result = resp;
} else {
for (var emb : resp.getOutput().getEmbeddings()) {
emb.setTextIndex(emb.getTextIndex() + batchCounter);
result.getOutput().getEmbeddings().add(emb);
}
result.getUsage().setTotalTokens(result.getUsage().getTotalTokens() + resp.getUsage().getTotalTokens());
}
} else {
System.out.println(resp);
}
} catch (ApiException | NoApiKeyException e) {
e.printStackTrace();
}
batchCounter += batch.size();
}
System.out.println(result);
}
}
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "text-embedding-v3",
"input": {
"texts": [
"风急天高猿啸哀",
"渚清沙白鸟飞回",
"无边落木萧萧下",
"不尽长江滚滚来"
]
},
"parameters": {
"dimension": 1024
}
}'
输入文件
Embedding模型可以基于您上传的文档进行回复。此处以texts_to_embedding.txt作为示例文件。
OpenAI兼容调用
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处用您的API Key进行替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" # 填写百炼服务的base_url
)
with open('texts_to_embedding.txt', 'r', encoding='utf-8') as f:
completion = client.embeddings.create(
model="text-embedding-v3",
input=f
)
print(completion.model_dump_json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.alibaba.dashscope.utils.JsonUtils;
public class Main {
public static void main(String[] args) {
/** 从环境变量中获取 API Key,如果未配置,请直接替换为您的 API Key*/
String apiKey = System.getenv("DASHSCOPE_API_KEY");
if (apiKey == null) {
System.out.println("DASHSCOPE_API_KEY not found in environment variables");
return;
}
String baseUrl = "https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings";
HttpClient client = HttpClient.newHttpClient();
/** 读取输入文件*/
StringBuilder inputText = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new FileReader("<文件所来自的内容根的路径>"))) {
String line;
while ((line = reader.readLine()) != null) {
inputText.append(line).append("\n");
}
} catch (IOException e) {
System.err.println("Error reading input file: " + e.getMessage());
return;
}
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("model", "text-embedding-v3");
requestBody.put("input", inputText.toString().trim());
try {
String requestBodyString = JsonUtils.toJson(requestBody);
/**构建 HTTP 请求*/
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(baseUrl))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + apiKey)
.POST(HttpRequest.BodyPublishers.ofString(requestBodyString))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("Response: " + response.body());
} else {
System.out.printf("Failed to retrieve response, status code: %d, response: %s%n", response.statusCode(), response.body());
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
FILE_CONTENT=$(cat texts_to_embedding.txt | jq -Rs .)
curl --location 'https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "text-embedding-v3",
"input": ['"$FILE_CONTENT"']
}'
DashScope调用
在使用 Java 并通过 DashScope 调用 Embedding 模型时,当前仅支持对text-embedding-v1与text-embedding-v2模型的调用。
from http import HTTPStatus
from dashscope import TextEmbedding
with open('texts_to_embedding.txt', 'r', encoding='utf-8') as f:
resp = TextEmbedding.call(
model=TextEmbedding.Models.text_embedding_v3,
input=f
)
if resp.status_code == HTTPStatus.OK:
print(resp)
else:
print(resp)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
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 main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("<文件所来自的内容根的路径>"))) {
StringBuilder content = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append("\n");
}
TextEmbeddingParam param = TextEmbeddingParam.builder()
.model(TextEmbedding.Models.TEXT_EMBEDDING_V1)
.text(content.toString())
.build();
TextEmbedding textEmbedding = new TextEmbedding();
TextEmbeddingResult result = textEmbedding.call(param);
if (result != null) {
System.out.println(result);
} else {
System.out.println("Failed to get embedding: " + result);
}
} catch (IOException | ApiException | NoApiKeyException e) {
e.printStackTrace();
}
}
}
FILE_CONTENT=$(cat texts_to_embedding.txt | jq -Rs .)
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "text-embedding-v3",
"input": {
"texts": ['"$FILE_CONTENT"']
}
}'
调用输出
OpenAI兼容调用
{
"data": [
{
"embedding": [
0.0023064255,
-0.009327292,
....
-0.0028842222,
],
"index": 0,
"object": "embedding"
}
],
"model":"text-embedding-v3",
"object":"list",
"usage":{"prompt_tokens":26,"total_tokens":26},
"id":"f62c2ae7-0906-9758-ab34-47c5764f07e2"
}
DashScope调用
{
"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": 26
}
}
多模态向量快速入门
您需要已获取API Key并配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK。
文本输入
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))
图片与视频输入
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))
输出示例
{
"status_code": 200,
"request_id": "23478d14-55c6-98cc-9706-29d23de742fb",
"code": "",
"message": "",
"output": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.0396728515625,
0.00650787353515625,
-0.0223388671875,
...
],
"type": "image"
}
]
},
"usage": {
"input_tokens": 0,
"image_count": 1,
"duration": 0
}
}
使用示例
实现语义搜索
实现语义推荐
API参考
通用文本向量
多模态向量
错误码
如果模型调用失败并返回报错信息,请参见错误码进行解决。
调用限制
通用多模态向量API使用过程中存在以下输入类型与格式限制:
输入类型 | 语言/格式限制 | 长度/大小限制 |
文本 | 中/英文 | 512个Token, 超过512 token长度的文本内容将会被截断 |
图片 | JPG、PNG、BMP | 支持以Base64格式或URL形式输入。接受的图片大小上限为 3MB |
视频 | MP4、MPEG、MPG、WEBM、AVI、FLV、MKV、MOV | 接受的视频大小上限为 10MB |
关于模型的限流条件,请参见限流。