Embeddings API
POST
/v1/embeddings
将文本转换为向量嵌入
请求参数
请求头
Authorization
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
请求体
请求体必须使用 application/json。以下字段与原生 OpenAI 格式定义一致;未列出的字段不属于此接口的通用请求参数。
请求体参数(4 个)
| 参数 | 类型 | 默认值 | 说明 | 是否必填 |
|---|---|---|---|---|
model | string | — | 要调用的嵌入模型 ID,例如 text-embedding-3-small。模型必须已在网关渠道中配置。 | 是 |
input | string | array<string> | — | 要嵌入的文本。可以传入单个字符串,或传入字符串数组以批量生成多个向量;数组中的每一项都必须是字符串。 | 是 |
encoding_format | string | float | 向量编码格式。可选值为 float(浮点数数组)或 base64(Base64 编码);具体行为取决于上游模型和渠道。 | 否 |
dimensions | integer | 模型默认维度 | 输出向量维度。仅在模型支持自定义维度时生效;不支持时请省略此字段。 | 否 |
请求体示例
查看 JSON 请求体示例
{
"model": "text-embedding-3-small",
"input": [
"向量检索可以比较文本的语义相似度。",
"Embeddings convert text into numerical vectors."
],
"encoding_format": "float",
"dimensions": 512
}
请求示例代码
curl -X POST "https://10000router.com/v1/embeddings" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "text-embedding-3-small",
"input": ["向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors."],
"encoding_format": "float",
"dimensions": 512
}'
const response = await fetch("https://10000router.com/v1/embeddings", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.API_KEY,
},
body: JSON.stringify({
model: "text-embedding-3-small",
input: ["向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors."],
encoding_format: "float",
dimensions: 512
})
});
console.log(await response.json());
package main
import (
"log"
"net/http"
"os"
"strings"
)
func main() {
payload := `{"model":"text-embedding-3-small","input":["向量检索可以比较文本的语义相似度。","Embeddings convert text into numerical vectors."],"encoding_format":"float","dimensions":512}`
req, err := http.NewRequest("POST", "https://10000router.com/v1/embeddings", strings.NewReader(payload))
if err != nil { log.Fatal(err) }
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
}
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")
response = client.post(
"https://10000router.com/v1/embeddings",
headers={
"Authorization": "Bearer " + os.environ["API_KEY"],
},
json={
"model": "text-embedding-3-small",
"input": ["向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors."],
"encoding_format": "float",
"dimensions": 512,
},
)
print(response)
var client = java.net.http.HttpClient.newHttpClient();
var request = java.net.http.HttpRequest.newBuilder()
.uri(java.net.URI.create("https://10000router.com/v1/embeddings"))
.header("Authorization", "Bearer " + System.getenv("API_KEY"))
.POST(java.net.http.HttpRequest.BodyPublishers.ofString("{\"model\":\"text-embedding-3-small\",\"input\":[\"向量检索可以比较文本的语义相似度。\",\"Embeddings convert text into numerical vectors.\"],\"encoding_format\":\"float\",\"dimensions\":512}"))
.build();
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System.Net.Http.Json;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new(
"Bearer", Environment.GetEnvironmentVariable("API_KEY"));
var response = await client.PostAsJsonAsync(
"https://10000router.com/v1/embeddings",
new {
model = "text-embedding-3-small",
input = new[] { "向量检索可以比较文本的语义相似度。", "Embeddings convert text into numerical vectors." },
encoding_format = "float",
dimensions = 512
});
Console.WriteLine(await response.Content.ReadAsStringAsync());
返回响应
响应示例
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0123, -0.0456, 0.0789]
},
{
"object": "embedding",
"index": 1,
"embedding": [0.0234, -0.0567, 0.089]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 14,
"total_tokens": 14
}
}
{
"error": {
"message": "Invalid value for 'input': expected a string or an array of strings.",
"type": "invalid_request_error",
"param": "input",
"code": null
}
}
{
"error": {
"message": "Rate limit reached for embeddings requests.",
"type": "rate_limit_exceeded",
"param": null,
"code": null
}
}
{
"error": {
"message": "Invalid authentication credentials",
"type": "invalid_request_error",
"param": null,
"code": null
}
}
返回字段参数
顶层字段(4 个)
| 字段 | 类型 | 说明 |
|---|---|---|
object | string | 响应对象类型,固定为 list。 |
data | array<object> | 每个输入文本对应一个嵌入对象,顺序与请求中的 input 一致。 |
model | string | 实际生成嵌入的模型 ID。 |
usage | object | 本次请求的输入 token 用量统计。 |
data[] 字段(3 个)
| 字段 | 类型 | 说明 |
|---|---|---|
object | string | 嵌入对象类型,固定为 embedding。 |
index | integer | 对应输入文本在 input 数组中的索引,从 0 开始。 |
embedding | array<number> | 生成的向量数组。数组长度通常等于模型默认维度,或请求中生效的 dimensions。 |
usage 字段(2 个)
| 字段 | 类型 | 说明 |
|---|---|---|
prompt_tokens | integer | 所有输入文本消耗的 token 数。 |
total_tokens | integer | 本次请求消耗的总 token 数;Embeddings 请求通常等于 prompt_tokens。 |
错误响应
请求参数无效、认证失败、模型不可用或触发限流时,接口返回相应的 HTTP 4xx 状态码,并使用以下 OpenAI 兼容错误对象:
{
"error": {
"message": "错误描述",
"type": "invalid_request_error",
"param": "input",
"code": null
}
}
请根据 error.type、error.param 和 HTTP 状态码定位问题;修正请求参数后再重试,避免对参数错误进行重复重试。