Embeddings
将文本转换为向量表示,用于语义搜索、聚类、分类和推荐等场景。生成的向量可用于计算文本之间的相似度。
Endpoint
POST /v1/embeddingsMethod
POST
Authentication
需要 Bearer Token 认证:
Authorization: Bearer $API_KEYRequest Headers
| Header | 是否必需 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <API_KEY> |
Content-Type | 是 | application/json |
Request Body
| 参数 | 类型 | 是否必需 | 说明 |
|---|---|---|---|
model | string | 是 | 向量模型标识,如 text-embedding-3-small、text-embedding-ada-002 |
input | string | array | 是 | 要向量化的文本,可以是单个字符串或字符串数组 |
encoding_format | string | 否 | 返回格式:float(默认)或 base64 |
dimensions | integer | 否 | 向量维度(部分模型支持) |
请求示例
{ "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 }}响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
object | string | 固定为 list |
data | array | 向量数据数组 |
model | string | 实际使用的模型标识 |
usage | object | token 用量统计 |
data 数组
| 字段 | 类型 | 说明 |
|---|---|---|
object | string | 固定为 embedding |
index | integer | 输入文本对应的索引 |
embedding | array | 向量数据,浮点数数组 |
使用场景
- 语义搜索:将文档和查询转换为向量,通过余弦相似度匹配最相关内容。
- 文本聚类:将相似文本归组,用于数据分析和挖掘。
- 分类与推荐:基于向量特征进行文本分类或内容推荐。
- 知识库构建:将知识库文档向量化后存储,配合 RAG 实现智能问答。
错误码
| 状态码 | 说明 |
|---|---|
| 400 | 请求参数错误 |
| 401 | API Key 无效或缺失 |
| 403 | 无权限访问该模型 |
| 404 | 模型不存在 |
| 429 | 请求频率超限 |
| 500 | 服务器内部错误 |
详见 Errors。
代码示例
import { Tabs, TabItem } from ‘@astrojs/starlight/components’;
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 osimport 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])}