向量输出

Embeddings 向量 API

把单条文本或一批文本转换为向量,用于语义搜索、RAG 检索、推荐和聚类。

3 个模型批量输入已验证float 与 base64

选择向量模型

模型默认维度自定义维度核验价格
text-embedding-3-large3,072支持$0.13 / 1M 输入 tokens
text-embedding-3-small1,536支持$0.02 / 1M 输入 tokens
text-embedding-ada-0021,536不支持$0.10 / 1M 输入 tokens

追求最低成本可选 text-embedding-3-small;更重视检索质量可选 text-embedding-3-large。同一个现有索引中应固定模型和向量维度。

生成向量

input 可以是单个字符串或数组,返回的 data[].index 会保持输入顺序。

cURL · 批量输入与降维
curl https://api-models.com/v1/embeddings \
  -H "Authorization: Bearer $API_MODELS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": ["第一篇文档", "第二篇文档"],
    "encoding_format": "float",
    "dimensions": 256
  }'
Python · requests
import os
import requests

response = requests.post(
    "https://api-models.com/v1/embeddings",
    headers={"Authorization": f"Bearer {os.environ['API_MODELS_KEY']}"},
    json={
        "model": "text-embedding-3-large",
        "input": ["第一篇文档", "第二篇文档"],
        "encoding_format": "float",
        "dimensions": 1024,
    },
    timeout=120,
)
response.raise_for_status()
vectors = [item["embedding"] for item in response.json()["data"]]
print(len(vectors), len(vectors[0]))
Node.js · fetch
const response = await fetch("https://api-models.com/v1/embeddings", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.API_MODELS_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "text-embedding-3-small", input: ["第一篇文档", "第二篇文档"], encoding_format: "float", dimensions: 256 }),
});
if (!response.ok) throw new Error(await response.text());
const result = await response.json();
console.log(result.data.map((item) => item.embedding.length));

参数与限制

字段要求说明
model必填使用上表中的精确模型 ID
input必填字符串、token 数组或批量输入,不能是空字符串
encoding_format可选floatbase64,默认 float
dimensions仅 v3缩短 text-embedding-3 系列的向量
user可选稳定的最终用户标识,用于滥用监控

每条输入最多 8,192 tokens;一个请求最多 2,048 条输入,整个请求的输入 tokens 总数不能超过 300,000。

正确存储和比较向量

  • 每个索引版本都要记录模型 ID 和维度。
  • 文档和查询必须使用相同的向量模型。
  • 选择向量数据库支持的距离度量,必要时做归一化。
  • 模型或维度发生变化时必须重建索引,不同向量空间不能混用。

常见问题

现象处理
dimensions 被拒绝改用 text-embedding-3 系列;ada-002 不支持
向量维度不匹配让数据库字段或索引维度与实际返回值一致
超过上下文长度把每条文本切分到 8,192 tokens 以下
提示聊天接口错误使用 /v1/embeddings