选择向量模型
| 模型 | 默认维度 | 自定义维度 | 核验价格 |
|---|---|---|---|
text-embedding-3-large | 3,072 | 支持 | $0.13 / 1M 输入 tokens |
text-embedding-3-small | 1,536 | 支持 | $0.02 / 1M 输入 tokens |
text-embedding-ada-002 | 1,536 | 不支持 | $0.10 / 1M 输入 tokens |
追求最低成本可选 text-embedding-3-small;更重视检索质量可选 text-embedding-3-large。同一个现有索引中应固定模型和向量维度。
生成向量
input 可以是单个字符串或数组,返回的 data[].index 会保持输入顺序。
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
}'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]))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 | 可选 | float 或 base64,默认 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 |