跳转到内容
返回主站

Embeddings

将文本转换为向量表示,用于语义搜索、聚类、分类和推荐等场景。生成的向量可用于计算文本之间的相似度。

Endpoint

POST /v1/embeddings

Method

POST

Authentication

需要 Bearer Token 认证:

Authorization: Bearer $API_KEY

Request Headers

Header是否必需说明
Authorization是Bearer <API_KEY>
Content-Type是application/json

Request Body

参数类型是否必需说明
modelstring是向量模型标识,如 text-embedding-3-small、text-embedding-ada-002
inputstring | array是要向量化的文本,可以是单个字符串或字符串数组
encoding_formatstring否返回格式:float(默认)或 base64
dimensionsinteger否向量维度(部分模型支持)

请求示例

{
"model": "text-embedding-3-small",
"input": "零派智能业务平台是一个兼容 OpenAI 格式的 AI 模型聚合平台。"
}

批量输入示例:

{
"model": "text-embedding-3-small",
"input": [
"第一段文本",
"第二段文本"
]
}

Response

{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
-0.006929283,
-0.005272833,
0.024328847,
-0.009327292
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}

响应字段说明

字段类型说明
objectstring固定为 list
dataarray向量数据数组
modelstring实际使用的模型标识
usageobjecttoken 用量统计

data 数组

字段类型说明
objectstring固定为 embedding
indexinteger输入文本对应的索引
embeddingarray向量数据,浮点数数组

使用场景

  • 语义搜索:将文档和查询转换为向量,通过余弦相似度匹配最相关内容。
  • 文本聚类:将相似文本归组,用于数据分析和挖掘。
  • 分类与推荐:基于向量特征进行文本分类或内容推荐。
  • 知识库构建:将知识库文档向量化后存储,配合 RAG 实现智能问答。

错误码

状态码说明
400请求参数错误
401API Key 无效或缺失
403无权限访问该模型
404模型不存在
429请求频率超限
500服务器内部错误

详见 Errors。

代码示例

import { Tabs, TabItem } from ‘@astrojs/starlight/components’;

Terminal window
curl "$BASE_URL/v1/embeddings" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-small",
"input": "零派智能 是一个兼容 OpenAI 格式的 AI 模型聚合平台。"
}'
import os
import requests
base_url = os.environ.get("BASE_URL")
api_key = os.environ.get("API_KEY")
response = requests.post(
f"{base_url}/v1/embeddings",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
},
json={
"model": "text-embedding-3-small",
"input": "零派智能 是一个兼容 OpenAI 格式的 AI 模型聚合平台。",
},
)
result = response.json()
embedding = result["data"][0]["embedding"]
print(f"向量维度: {len(embedding)}")
print(f"前5个值: {embedding[:5]}")
const baseURL = process.env.BASE_URL;
const apiKey = process.env.API_KEY;
const response = await fetch(`${baseURL}/v1/embeddings`, {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "text-embedding-3-small",
input: "零派智能 是一个兼容 OpenAI 格式的 AI 模型聚合平台。",
}),
});
const result = await response.json();
const embedding = result.data[0].embedding;
console.log(`向量维度: ${embedding.length}`);
console.log(`前5个值: ${embedding.slice(0, 5)}`);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
func main() {
baseURL := os.Getenv("BASE_URL")
apiKey := os.Getenv("API_KEY")
payload, _ := json.Marshal(map[string]interface{}{
"model": "text-embedding-3-small",
"input": "零派智能 是一个兼容 OpenAI 格式的 AI 模型聚合平台。",
})
req, _ := http.NewRequest("POST", baseURL+"/v1/embeddings", bytes.NewReader(payload))
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var result struct {
Data []struct {
Embedding []float64 `json:"embedding"`
} `json:"data"`
}
json.Unmarshal(body, &result)
embedding := result.Data[0].Embedding
fmt.Printf("向量维度: %d\n", len(embedding))
fmt.Printf("前5个值: %v\n", embedding[:5])
}