向量化 - OpenAI Embeddings 协议
接口概述
把文本转成高维向量,用于语义检索、文本聚类、相似度计算、去重等场景。兼容 OpenAI Embeddings 格式。
接口地址
POST https://test.jw-info.com/v1/embeddings
请求头
| 请求头 | 是否必填 | 说明 |
|---|---|---|
| Content-Type | 是 | 固定 application/json |
| Authorization | 是 | Bearer {API_KEY},也可用 x-api-key: {API_KEY} |
请求参数
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | - | 模型名称,见下方「可用模型」 |
| input | string / array | 是 | - | 输入文本:字符串、字符串数组,或 Token ID 数组。每条不超过 8192 token |
| encoding_format | string | 否 | float | 返回向量的编码格式:float / base64 |
| user | string | 否 | - | 终端用户标识,仅用于用量追踪 |
input 的三种写法:
| 形式 | 示例 | 说明 |
|---|---|---|
| 单条文本 | "你好,世界" | 单条输入,返回一条向量 |
| 字符串数组 | ["hello", "world"] | 批量输入,按顺序返回多条向量 |
| Token ID 数组 | [1212, 345, 678] | 已分词的 token 列表 |
请求示例
最简请求:
{
"model": "text-embedding-v4",
"input": "你好,世界"
}
批量请求:
{
"model": "text-embedding-v4",
"input": [
"人工智能是计算机科学的一个分支",
"机器学习是实现人工智能的一种方法",
"深度学习是机器学习的子集"
]
}
指定编码格式:
{
"model": "text-embedding-v4",
"input": "这是一段需要向量化的文本",
"encoding_format": "float"
}
curl https://test.jw-info.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-你的密钥" \
-d '{
"model": "text-embedding-v4",
"input": ["人工智能是计算机科学的一个分支", "机器学习是实现人工智能的一种方法"]
}'
响应参数
| 字段 | 类型 | 说明 |
|---|---|---|
| object | string | 固定为 list |
| data | array | 向量结果列表,与 input 顺序一一对应 |
| data[].object | string | 固定为 embedding |
| data[].index | integer | 对应 input 中的索引(从 0 开始) |
| data[].embedding | array | 向量:encoding_format=float 时为 float 数组,base64 时为字符串 |
| model | string | 实际使用的模型名称 |
| usage.prompt_tokens | integer | 输入 token 数 |
| usage.total_tokens | integer | 总 token 数 |
响应示例
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [0.0023, -0.0092, 0.0156],
"index": 0
}
],
"model": "text-embedding-v4",
"usage": { "prompt_tokens": 10, "total_tokens": 10 }
}
实际返回的是完整维度的 float 数组,上例只展示前 3 维。
用量与计费
- 按输入 token 计费,人民币计价(精确到 0.000001 元,无最低消费),单价见模型广场对应卡片。
- 费用不进响应,到控制台「费用中心」查看明细。
- 拿不到用量统计的极少数情况会按估算用量计费,并在明细里标「估」便于对账。
错误响应
| 情况 | 说明 |
|---|---|
参数错误(缺 model、input 类型不对) | 按「错误码」页返回;模型侧参数错误以 502 带上其原始错误正文 |
{
"error": {
"message": "model is required",
"type": "invalid_request_error",
"code": "invalid_request_error"
}
}
完整状态码与处理方式见「错误码」页。
可用模型
| 模型 ID | 说明 |
|---|---|
| text-embedding-v4 | 通义千问文本向量 v4(1024 维) |
| text-embedding-v3 | 通义千问文本向量 v3(1024 维) |
| bge-m3 | 智源研究院多语言文本向量 |
更多向量模型见模型广场(筛选「文本向量」)。
代码示例(Python)
import requests
BASE = "https://test.jw-info.com"
API_KEY = "sk-你的密钥"
resp = requests.post(
f"{BASE}/v1/embeddings",
headers={"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}"},
json={
"model": "text-embedding-v4",
"input": [
"人工智能是计算机科学的一个分支",
"机器学习是实现人工智能的一种方法",
"深度学习是机器学习的子集",
],
},
timeout=60,
)
result = resp.json()
if resp.status_code == 200:
print("模型:", result["model"])
print("向量维度:", len(result["data"][0]["embedding"]))
print("用量:", result["usage"])
else:
print("请求失败:", result.get("error") or result)