概述
embedding_v2是 embedding 接口的较新版本,建议使用此接口进行向量化处理。 embedding用于将非结构化数据向量化,通过深度学习神经网络提取文本、图片、音视频等非结构化数据里的内容和语义,把文本、图片、音视频等变成特征向量。
异步调用使用async_embedding_v2接口,参数不变。
说明
- 当前 Embedding 服务支持将文本/图片生成向量。
- 当前 Embedding 服务接口不支持承载高并发请求,请求数量过多时请求会被丢弃。
- 图片大小:建议图片大小不要超过1MB,因embedding v2接口的请求限制为4M,当图片超过1MB时,我们建议用户压缩图片后再次请求,防止接口截断;
- 图片压缩尺寸推荐:经过我们的实验,将图片的长和宽分别缩放到自身的0.30-0.35倍,可以得到与原图embedding较为相近的结果。其中,0.30-0.35倍 是缩放的拐点,比例再低的话精度劣化会比较明显,缩放比例可以在拐点以上。
- 当前图片 embedding 限制每秒上传15张图,如果超出限制请及时联系客服扩大限流。
请求参数
参数 | 子参数 | 类型 | 是否必选 | 说明 |
---|
EmbModel | modelName | string | 是 | 指定模型名称,当前支持的模型有: - doubao-embedding:字节跳动研发的语义向量化模型,支持中英双语,最长 4K 上下文长度。输出最高维度 2048 的稠密向量,支持 512, 1024 降维使用。当TPM超过5000时请前往火山方舟平台使用。
说明 doubao-embedding 包括 240515 和 240715 两个版本,可通过 model_version 参数切换。
240715 版本中英文 Retrieval 效果较 240515 版本有较大提升。 - doubao-embedding-large:字节跳动语义向量化模型的最新升级版,采用能力更强的豆包语言模型为基座,支持中、英双语,最长 4K 上下文长度。输出最高维度 4096 的稠密向量,支持2048, 1024, 512降维使用。当TPM超过5000时请前往火山方舟平台使用。
- doubao-embedding-vision:字节自研的图文多模态向量化模型,主要面向图文多模向量检索的使用场景,支持图片输入及中、英双语文本输入,最长 8K 上下文长度。输出 3072 维的稠密向量。当TPM超过5000时请前往火山方舟平台使用。
- bge-large-zh:最多能处理 512 个 token,数量超长时会截断,数量不足时会做 padding。 输出 embedding 维度是 1024,类型是 float。
- bge-m3:基于 m3 模型,默认返回稠密向量和稀疏向量。最多能处理 8192 个 token,数量超长时会截断,数量不足时会做 padding。 输出稠密向量维度是 1024,类型是 float。输出稀疏向量为字典类型,k 为 Tokenizer 输出的 token,v 为这个 token 的权重。
- bge-large-zh-and-m3:基于 bge v1.5 和m3 模型,使用混合检索模式。稠密向量由 bge v1.5 抽取,稀疏向量由 bge m3 抽取。最多能处理 512 个 token,数量超长时会截断,数量不足时会做 padding。 输出稠密向量维度是 1024,类型是 float。输出稀疏向量为字典类型,k 为 Tokenizer 输出的 token,v 为这个 token 的权重。
- bge-visualized-m3:基于Visualized-BGE和m3 模型, 可对文本或图片进行单独编码,或者对文本图片对联合编码,输出1024维的稠密向量。文本token限制为3702,数量超长时会截断,数量不足时会做 padding。
|
| params | map | 否 | return_token_usage - 返回请求消耗的token数,默认关闭/
return_dense - 返回稠密向量,默认打开。
return_sparse - 返回稀疏向量,支持提取稀疏向量的模型默认打开,其他模型开启了会报错。
embedding_dimension - 用于对向量化结果降维。
model_version - 用于切换模型版本。若模型有多版本,可以指定,不填则使用默认版本。当前doubao-embedding 模型支持"240515"(默认)和"240715"版本 |
RawData 说明 RawData 实例或者列表,最大 100 个。 | dataType | string | 是 | 支持如下类型: - text:文本
- image:图片
- text-image:文本-图片对联合编码
|
text | string | data_type 为 text 或 text-image时,必选 | 当 data_type=text 时,直接传入类型为 string 的文本。 |
image | string | data_type 为 image 或 text-image时,必选 | data_type=image时,传入图片内容的base64编码 |
示例
请求参数
HashMap<String, Object> params = new HashMap<>();
params.put("return_token_usage", true);
ArrayList<RawData> rawDatas = new ArrayList<>();
rawDatas.add(new RawData().setDataType("text").setText("hello1").build());
rawDatas.add(new RawData().setDataType("text").setText("hello2").build());
Map<String, Object> res = vikingDBService.embeddingV2(new EmbModel().setModelName("bge-m3").setParams(params).build(), rawDatas);
System.out.println(res);
返回值
Python 调用执行上面的任务,返回 list<float> 、list<list<float>> 类型的向量。