请先登录
立即登录🌟 RzenEmbed API
RzenEmbed 是一个兼容 OpenAI API 格式的多模态 Embedding 服务,支持对文本、图像、视频及图文混排的视觉文档进行深层语义特征提取,返回标准化的语义 Embedding 向量。
向量规格与灵活配置
Embedding 向量为浮点数构成的一维数组,每个浮点数对应一个语义特征维度:
- 默认输出维度:2048 维(最优检索精度)
- 支持按需裁剪:可选择 256/512/768/1024 维输出,仅带来极小的精度损失,大幅降低向量存储与检索算力开销
- 支持无损量化:原生支持 int8 无损量化,可进一步压缩存储空间,且不影响检索效果
核心能力与适用场景
RzenEmbed 构建了文本、图像、视频、视觉文档统一的跨模态语义空间,所有模态生成的向量可直接互匹配,彻底打破传统单模态嵌入模型的能力边界。
RzenEmbed通过其指令遵循能力,支持用户通过指令精准引导语义聚焦,实现更贴合业务需求的同模态检索、跨模态检索及多模态混合检索,尤其适配企业级复杂知识场景:可支持中英文等多种语言检索,是构建企业级多模态 RAG 系统、智能知识库、内容推荐引擎的核心基础组件。
🚀 Request Method 请求方法
此服务支持 POST 方法,将文本和图片数据发送到服务端,然后返回 embedding 特征数据。
# python
import requests
url = "https://api.research.360.cn/v1/embeddings"
resp = requests.post(url=url,...)
# curl
curl -X 'POST' 'https://api.research.360.cn/v1/embeddings'
🔐 Headers 请求头
HTTP 请求头信息包含了客户端向服务器发送请求时附带的各种细节信息,帮助服务器更好地处理请求。这些头部字段多种多样,用于说明请求的各个方面,如客户端信息、请求的内容类型、缓存策略等。
🔑 Authorization
string Required HTTPS 请求的头部信息
带有Bearer <token>形式的认证方式,其中token即您的认证令牌,用于身份验证的凭证信息。
header = {"Authorization":"Bearer your_key",...} # python
-H 'Authorization:Bearer your_key' # curl
💾 accept
string Required HTTPS 请求的头部信息
客户端能够处理的内容类型(MIME 类型)列表,用于告知服务器期望接收的数据格式,例如:application/json。
header = {"accept": "application/json",...} # python
-H 'accept: application/json' # curl
📪 Content-Type
string Required HTTPS 请求的头部信息
告知服务端,客户端发送至服务端的数据格式是某种特定格式,例如:application/json。
header = {"Content-Type": "application/json",...} # python
-H 'Content-Type: application/json' # curl
🎰 Headers 完整示例
python 脚本
header = {
"accept": "application/json",
"Content-Type": "application/json",
"Authorization":"Bearer your_key"
}
curl 命令
curl -X 'POST' 'https://api.research.360.cn/v1/embeddings'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization:Bearer your_key'
📥 Request Body
HTTPS 请求的 Body 部分是请求消息的可选部分,通常用于在客户端向服务器发送数据时携带实际内容。Body 的格式和内容类型由请求头中的 Content-Type 字段决定。
在本服务中,Body 是必选部分,格式为 json 格式的字符串。
1️⃣ model
string Required
此次服务调用模型,目前只有一个模型选项:RzenEmbed。
request_body = {"model": "RzenEmbed",...} # python
2️⃣ dimensions
int Optional
指定传递给服务端的输出维度的选项,此值为整数类型,默认值为2048,仅支持 256,512,768,1024,1536,2048值输入。
request_body = {"dimensions": 1024,...} # python
3️⃣ instruction
string Optional
指令命令,为了精度和模型更好理解,请输入清晰指令,默认值为:"Represent the user's input."
request_body = {"instruction": "Represent the user's input.",...} # python
4️⃣ texts
list of strings Optional
对话消息,用于传递多模态输入文本内容,只允许传入一条文本。
request_body = {"texts": ["find apples"],...} # python
5️⃣ images
list of strings Optional
对话消息,用于传递多模态输入图片内容。只允许传入一张图片。
# image url 输入
request_body = {"images": ["https://xxxx.png"],...} # python
# image base64 输入
import os
import base64
def image_to_base64(image_path):
with open(image_path, "rb") as f:
img_data = f.read()
base64_str = base64.b64encode(img_data).decode("utf-8")
ext = os.path.splitext(image_path)[1].lower()
return f"data:image/{ext[1:]};base64,{base64_str}"
image_path = "/data/images/demo.png"
image_base64 = image_to_base64(image_path)
request_body = {"images": [image_base64],...} # python
6️⃣ video
list of strings Optional
对话消息,用于传递多模态输入视频内容。只允许传入2到64张图片,格式为url或者base64图片数据。
request_body = {"video": ["","",],...} # python
🎰 Request Body 完整示例
python 脚本
import uuid
from openai import OpenAI
client = OpenAI(base_url="https://api.research.360.cn/v1", api_key="your_key")
response = client.embeddings.create(
model="RzenEmbed",
input=[],
dimensions=2048,
extra_body={
"request_id": str(uuid.uuid4()),
"texts": ["two apples"],
"instruction": "Find me an everyday image that matches the given caption:",
"images": ["https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg"],
},
)
print(response)
response = client.embeddings.create(
model="RzenEmbed",
input=[],
dimensions=2048,
extra_body={
"request_id": str(uuid.uuid4()),
"instruction": "Find me an everyday video that matches the given caption:",
"video": [
"https://p0.ssl.qhimg.com/d/inn/20b6511288e3/Catch_med_5/10000.jpg",
"https://p0.ssl.qhimg.com/d/inn/20b6511288e3/Catch_med_5/10001.jpg",
"https://p0.ssl.qhimg.com/d/inn/20b6511288e3/Catch_med_5/10002.jpg"
],
},
)
print(response)
curl 命令
curl -X 'POST' 'https://api.research.360.cn/v1/embeddings'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization:Bearer your_key'
-d '{
"model": "RzenEmbed",
"request_id":"5fe3f69f-e4df-47c9-8ceb-c5c3cbe65daf",
"dimensions":2048,
"instruction": "Find me an everyday image that matches the given caption:",
"texts": ["two apples"],
"images": ["https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg"]
}'
curl -X 'POST' 'https://api.research.360.cn/v1/embeddings'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization:Bearer your_key'
-d '{
"model": "RzenEmbed",
"request_id":"5fe3f69f-e4df-47c9-8ceb-c5c3cbe65daf",
"dimensions":2048,"instruction": "Find me an everyday image that matches the given caption:",
"video": [
"https://p0.ssl.qhimg.com/d/inn/20b6511288e3/Catch_med_5/10000.jpg",
"https://p0.ssl.qhimg.com/d/inn/20b6511288e3/Catch_med_5/10001.jpg"
]
}'
📤 Response
✅ context
- code
int:0表示成功 - messages
string:"OK"表示成功 - timestamp
long long: 时间戳
{
"context": { "code": 0, "message": "OK", "timestamp": 1769589915 },
"data": {
"data": [
{
"embedding": [-0.07196125388145447, -0.0329570434987545, 0.0068786488845944405],
"index": 0,
"object": "embedding"
}
],
"model": "RzenEmbed",
"object": "list",
"usage": {
"prompt_tokens": 1761,
"total_tokens": 1761
},
"message": "success",
"response_status": 0,
"request_id": "b978be6f-151d-4758-9fdc-b25e19019801"
}
}
✅ data
resp["data"]中的字段 data,model,object,usage参考openai embedding接口返回格式,剩余字段参考下文;
1️⃣ request_id
string
单个请求的服务标识是由 uuid4 生成的,具备唯一性。"id": "2691733a-d172-4b20-8aab-4ecfeb089141"
2️⃣ response_status
int
此次请求embedding状态码,0代表请求正常,非0表示请求失败。
3️⃣ message
string
此次请求embedding状态描述,"success"代表请求正常,非"success"表示请求失败。
🎰 Response 完整示例
{
"context": { "code": 0, "message": "OK", "timestamp": 1769589915 },
"data": {
"data": [
{
"embedding": [-0.07196125388145447, -0.0329570434987545, 0.0068786488845944405],
"index": 0,
"object": "embedding"
}
],
"model": "RzenEmbed",
"object": "list",
"usage": {
"prompt_tokens": 1761,
"total_tokens": 1761
},
"message": "success",
"response_status": 0,
"request_id": "b978be6f-151d-4758-9fdc-b25e19019801"
}
}
🔧 Image-Text-Video Similarity Calculation
在得到对应的embedding特征向量后,相似度计算,包括
- 文本-文本相似度
- 文本-图像相似度
- 文本-视频相似度
- 图像-图像相似度
- 图像-视频相似度
- 视频-视频相似度
都可以采用简单的余弦相似度方法进行计算
import torch
image_features = torch.tensor(image_embeddings["float"])
text_features = torch.tensor(text_embeddings["float"])
probs = image_features @ text_features.T
print(probs.shape)
print("Label probs:", probs)
注意余弦相似度的值域是在[-1, +1]之间。