新接口 | 旧接口 | |
|---|---|---|
模型组合 | 稠密和稀疏模型可以独立指定。支持稠密+稀疏、仅稠密、或仅稀疏embedding计算。 | 稠密和稀疏模型通过同一个model_name参数指定。 |
单次写入的数据量限制 | 不超过10,时延更低。 | 不超过100 |
返回消耗的模型token用量 | 是 | 需要额外设置参数才能返回 |
说明
说明
请求向量数据库 VikingDB 的 OpenAPI 接口时,可以使用 ak、sk 构造签名进行鉴权。请参见数据面API调用流程,复制调用示例并填入必要信息
URI | /api/vikingdb/embedding | 统一资源标识符 |
|---|---|---|
方法 | POST | 客户端对向量数据库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 鉴权 |
参数 | 类型 | 是否必选 | 子参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|---|---|---|
dense_model | map | 2者至少选1 | name | string | 是 | 模型名 |
version | string | 否,但豆包模型必选 | 模型版本 | |||
dim | int | 否 | 维度。不填则使用该模型版本的默认维度。 | |||
sparse_model | map | name | string | 是 | 模型名 | |
version | string | 否 | 模型版本 | |||
data | list | 是 | 数据。详细字段见下。列表长度最大 10。如果数据类型是full_modal_seq则长度为1 |
其中,Data结构:
参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
text | string | 至少选一个,也可 text、image和video的组合 | 文本字符串内容。过长则会截断,各模型的截断阈值见下。 |
image | string |
| |
video | map | { | |
full_modal_seq | list | 若选择full_modal_seq,则不能出现上述text等三个参数 | FullModalData结构见下 |
二选一 |
|
|---|---|
|
三选一 | 字段名 | 类型 | 备注 |
|---|---|---|---|
text | string | 纯文本 | |
image | string | 若无特殊配置参数,使用string类型填入图片资源地址,参考MediaData规范; | |
video | map | 若无特殊配置参数,可使用map类型,子参数包括:
|
模型名称 | 模型版本 | 支持向量化类型 | 默认稠密向量维度 | 可选稠密向量维度 | 文本截断长度 | 支持稀疏向量 | 可支持instruction |
|---|---|---|---|---|---|---|---|
bge-large-zh | (default) | text | 1024 | 1024 | 512 | 否 | 是 |
bge-m3 | (default) | text | 1024 | 1024 | 8192 | 是 | 否 |
bge-visualized-m3 | (default) | text、image及其组合 | 1024 | 1024 | 8192 | 否 | 否 |
doubao-embedding | 240715 | text | 2048 | 512, 1024, 2048 | 4096 | 否 | 是 |
doubao-embedding-large | 240915 | text | 2048 | 512, 1024, 2048, 4096 | 4096 | 否 | 是 |
doubao-embedding-vision | 250328 | text、image及其组合 | 2048 | 2048, 1024 | 8192 | 否 | 是 |
doubao-embedding-vision | 250615 | 兼容241215和250328的用法*。*另外,支持full_modal_seq(文/图/视频序列) | 2048 | 2048, 1024 | 128k | 否 | 是 |
公共响应体参数部分见
数据面API调用流程
参数名 | 类型 | 子参数 | 说明 | |
|---|---|---|---|---|
request_id | string | 请求id | ||
code | int | 状态码。成功则为0 | ||
message | string | 成功则为success | ||
result | map | data | list | 数据列表 |
token_usage | map | 按模型粒度的token统计。 |
其中,EmbeddingResult结构:
参数名 | 类型 | 说明 |
|---|---|---|
dense | list | 稠密向量结果 |
sparse | map<string,float> | 稀疏向量结果 |
req_path = "/api/vikingdb/embedding" req_body = { "dense_model": { "name": "doubao-embedding-large", "version": "240915", "dim": 1024, }, "sparse_model": { "name": "bge-m3", "version": "default", }, "data": [ { "text": "天很蓝。" }, { "text": "海很深。" } ] }
{ "code": "Success", "message": "The API call was executed successfully.", "request_id": "02175438839168500000000000000000000ffff0a003ee4fc3499", "result": { "data": [ { "dense": [0.05149054509186956,0.034275332726816786, ......], "sparse": { "天": 0.263671875, "很": 0.18603515625, "蓝": 0.3046875 } }, { "dense": [0.0076801463728645375,0.034275332726816786, ......], "sparse": { "很": 0.2010498046875, "海": 0.32958984375, "深": 0.32373046875 } } ], "token_usage": { "bge-m3__default": { "prompt_tokens": 14, "completion_tokens": 0, "image_tokens": 0, "total_tokens": 14 }, "doubao-embedding-large__240915": { "prompt_tokens": 9, "completion_tokens": 0, "image_tokens": 0, "total_tokens": 9 } } } }
req_path = "/api/vikingdb/embedding" req_body = { "dense_model": { "name": "bge-visualized-m3", "version": "default", "dim": 1024 }, "data": [ {"text": "天很蓝"}, {"text": "tos://my_bucket/sky_1.jpeg"} ] }
{ "code": "Success", "message": "The API call was executed successfully.", "request_id": "02175438839168500000000000000000000ffff0a003ee4fc3499", "result": { "data": [ { "dense": [0.013657506555318832,0.034275332726816786, ......] } ], "token_usage": { "bge-visualized-m3__default": { "prompt_tokens": 926, "completion_tokens": 0, "image_tokens": 926, "total_tokens": 926 } } } }
req_path = "/api/vikingdb/embedding" req_body = { "dense_model": { "name": "doubao-embedding-vision", "version": "250615", "dim": 1024, }, "data": [ { "full_modal_seq":[ { "text": "haha haha" }, { "image": "tos://my_bucket/images/dogs/5.jpeg" }, { "video": "tos://my_bucket/videos/1.mp4" }, { "video": //如果需要对视频有自定义处理,可将video值定义为json,以设置高级参数: //value表示视频内容; //fps表示抽帧的频率。不设置则默认为1,范围为0.2-5.0。不过,服务端默认至少抽取16帧。越大,则抽帧更多,同时消耗的token也越多、时延越高。 { "value": "tos://my_bucket/videos/2.mp4", "fps": 0.4, } } ] } ] }
{ "code": "Success", "message": "The API call was executed successfully.", "request_id": "02175438839168500000000000000000000ffff0a003ee4fc3499", "result": { "data": [ { "dense": [0.05149054509186956,0.034275332726816786, ......] } ], "token_usage": { "doubao-embedding-vision__250615": { "prompt_tokens": 1325, "completion_tokens": 0, "image_tokens": 1312, "total_tokens": 1325 } } } }
req_path = "/api/vikingdb/embedding" req_body = { "dense_model": { "name": "doubao-embedding-vision", "version": "250615", "dim": 2048, }, "data": [ { "image": {"value":"tos://yuan-tos/cat.jpeg","x-tos-process": "image/resize,l_600|image/indexcrop,x_600,i_0"}, } ] }
{ "code":"Success", "message":"The API call was executed successfully.", "request_id":"xxx", "result": { "data":[ { "dense":[...], } ], "token_usage":{"doubao-embedding-vision__250615":{"prompt_tokens":472,"completion_tokens":0,"image_tokens":459,"total_tokens":472}} } }
doubao-embedding-vision 0615模型稀疏向量输出结构为多个{index:value}
index:类型为string,代表token对应的行号
value:token对应的embedding值
req_path = "/api/vikingdb/embedding" req_body = { "dense_model": { "name": "doubao-embedding-vision", "version": "250615", "dim": 2048, }, "sparse_model": { "name": "doubao-embedding-vision", "version": "250615", }, "data": [ { "text": "从前有座山,山里有座庙", } ] }
{ "code":"Success", "message":"The API call was executed successfully.", "request_id":"02175739508084500000000000000000000ffff0a005a4847c517", "result": { "data":[ { "dense":[...], "sparse"::{"139":0.2431640625,"14310":0.375,"1590":0.35546875,"3129":0.47265625,"37460":0.44140625,"514":0.294921875,"95188":0.408203125} } ], "token_usage":{"doubao-embedding-vision__250615":{"prompt_tokens":23,"completion_tokens":0,"image_tokens":0,"total_tokens":23}} } }
""" pip3 install volcengine """ import os from volcengine.auth.SignerV4 import SignerV4 from volcengine.Credentials import Credentials from volcengine.base.Request import Request import requests, json class ClientForDataApi: def __init__(self, ak, sk, host): self.ak = ak self.sk = sk self.host = host def prepare_request(self, method, path, params=None, data=None): r = Request() r.set_shema("https") r.set_method(method) r.set_connection_timeout(10) r.set_socket_timeout(10) mheaders = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Host': self.host, } r.set_headers(mheaders) if params: r.set_query(params) r.set_host(self.host) r.set_path(path) if data is not None: r.set_body(json.dumps(data)) credentials = Credentials(self.ak, self.sk, 'vikingdb', 'cn-beijing') SignerV4.sign(r, credentials) return r def do_req(self, req_method, req_path, req_params, req_body): req = self.prepare_request(method=req_method, path=req_path, params=req_params, data=req_body) return requests.request(method=req.method, url="http://{}{}".format(self.host, req.path), headers=req.headers, data=req.body, timeout=10000) if __name__ == '__main__': client = ClientForDataApi( ak = "*",#替换为您的ak sk = "*",#替换为您的sk host = "api-vikingdb.vikingdb.cn-beijing.volces.com",#替换为您所在的域名 ) req_method = "POST" req_params = None req_path = "/api/vikingdb/embedding" req_body = { "dense_model": { "name": "doubao-embedding-vision", "version": "250615", "dim": 2048, }, "sparse_model": { "name": "doubao-embedding-vision", "version": "250615", }, "data": [ { "text": "从前有座山,山里有座庙", } ] } result = client.do_req(req_method=req_method, req_path=req_path, req_params=req_params, req_body=req_body) print("req http status code: ", result.status_code) print("req result: \n", result.text)