Skip to content

通用文本向量 ​

提供 OpenAI 兼容的通用文本向量接口。

请求方法 ​

POST

请求地址 ​

https://chat.ecnu.edu.cn/open/api/v1/embeddings

请求参数 ​

参数名类型是否必须描述
modelstring是模型名称,目前可用 ecnu-embedding-small(文本向量)与 ecnu-embedding-vl(多模态向量),详见 模型列表
inputstring/array是输入内容,可以是字符串或字符串数组,不超过 8192 个字符(ecnu-embedding-vl 还支持图文对象,见多模态向量)
dimensionsint否返回向量维度,仅 ecnu-embedding-vl 支持,可选 1024 / 2048 / 4096,默认 4096
encoding_formatstring否向量编码格式,float 或 base64(little-endian float32),默认 float

返回参数 ​

参数名类型描述
objectstring返回类型,固定为 list
dataarray向量结果列表
data[].objectstring元素对象类型,固定为 embedding
data[].embeddingarray[float]输入对应的向量,ecnu-embedding-small 固定 1024 维,ecnu-embedding-vl 默认 4096 维(可通过 dimensions 指定)
data[].indexint输入内容的索引,与请求顺序一致
modelstring使用的模型名称
usage.prompt_tokensint输入部分的 token 消耗
usage.total_tokensint总 token 消耗

多模态向量(ecnu-embedding-vl) ​

ecnu-embedding-vl 基于 qwen3-vl-embedding,支持文本、图片及图文混合内容的统一向量化,适合构建多模态检索(RAG)应用。

  • 图文内容使用对象 {"text": "...", "image": "..."} 表达,text 与 image 至少传一个;
  • image 只支持完整的 PNG/JPEG base64 data URL,例如 data:image/png;base64,...;远程 URL、视频、多图对象暂不支持;
  • 单张图片不超过 5 MiB、1600 万像素;
  • 字符串与图文对象可以混在同一批次中,单批最多 32 项;
  • 默认输出 4096 维向量,可通过 dimensions 指定 1024 / 2048 / 4096,降维后会自动重新归一化;
  • usage 取上游实际消耗,无法取得时返回 null。

多模态请求示例 ​

http
POST https://chat.ecnu.edu.cn/open/api/v1/embeddings
Content-Type: application/json
Authorization: Bearer sk-UDK3*******************1Y

{
    "model": "ecnu-embedding-vl",
    "input": [
        "图书馆公告",
        {"text": "通知栏截图", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."},
        {"image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD..."}
    ],
    "dimensions": 1024,
    "encoding_format": "float"
}

请求示例 ​

http
POST https://chat.ecnu.edu.cn/open/api/v1/embeddings
Content-Type: application/json
Authorization: Bearer sk-UDK3*******************1Y

{
    "model": "ecnu-embedding-small",
    "input": ["干的不错","一块石头"]
}

返回示例 ​

json
{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... (1024 floats total)
        -0.0028842222,
      ],
      "index": 0
    }
  ],
  "model": "ecnu-embedding-small",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

代码示例 ​

直接调用接口 ​

python
import requests
import json

# 设置API参数
url = "https://chat.ecnu.edu.cn/open/api/v1/embeddings"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer your-api-key"  # 替换为您的API密钥
}

# 单个文本嵌入请求
data_single = {
    "model": "ecnu-embedding-small",
    "input": "Hello world"
}

response = requests.post(url, headers=headers, data=json.dumps(data_single))
print(response.json()["data"][0]["embedding"])

# 多个文本嵌入请求
data_multi = {
    "model": "ecnu-embedding-small",
    "input": ["Hello world", "good work"]
}

response = requests.post(url, headers=headers, data=json.dumps(data_multi))
embeddings = response.json()["data"]
print(embeddings[0]["embedding"])  # Hello world
print(embeddings[1]["embedding"])  # good work

使用 openai sdk ​

python
from openai import OpenAI
  
client = OpenAI(
    base_url="https://chat.ecnu.edu.cn/open/api/v1",
    api_key="your-api-key"  # 替换为您的API密钥
)

# 单个文本嵌入请求
response = client.embeddings.create(
    model="ecnu-embedding-small",  # 指定模型
    input="Hello world",           # 
)

# Hello world
print(response.data[0].embedding)

# 多个文本嵌入请求
response = client.embeddings.create(
    model="ecnu-embedding-small",  # 指定模型
    input=["Hello world","good work"]           #
)

# Hello world
print(response.data[0].embedding)
# good work
print(response.data[1].embedding)

使用 LangChain ​

python
from langchain_openai import OpenAIEmbeddings
  
embeddings = OpenAIEmbeddings(
        base_url="https://chat.ecnu.edu.cn/open/api/v1",
           model="ecnu-embedding-small",
           api_key="your-api-key",  # 替换为您的API密钥
           dimensions=1024,
           check_embedding_ctx_length=False
        )

print(embeddings.embed_query("Hello world"))

重要 ​

LangChain 在 OpenAIEmedding 模式下,默认会将 input 的字符串按 openai 的模型进行 Tokenize。此时提交接口的 input 将不再是字符串而是 token 数组。这对于非 openai 模型下实现的的 OpenAI 兼容 api 是无法支持的。因此,需要设置 check_embedding_ctx_length=False 来关闭 Tokenize 行为,确保提交接口的 input 仍然为字符串。详见 7815, 19743, 23984