API 参考
Embeddings 向量接口
POST /v1/embeddings 的参数、请求与响应示例:把文本转成向量,用于语义检索、知识库 RAG、相似问题匹配和去重。格式与 OpenAI Embeddings 一致,已在本站实测。
POST /v1/embeddings 把一段或多段文本转换成向量,也就是一串浮点数。两段文字意思越接近,它们的向量距离越近,所以向量常用来做知识库检索、相似问题匹配、聚类和去重。接口格式与 OpenAI Embeddings API 一致,已在本站实测。
POST
https://open.tutujin.com/v1/embeddings请求头
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer sk-...,控制台创建的 API Key |
Content-Type | 是 | application/json |
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名,例如 text-embedding-3-small |
input | string 或 array | 是 | 要向量化的文本。传字符串数组可以一次处理多段。单段长度有上限,长文档先切块 |
encoding_format | string | 否 | float(默认)返回浮点数组,base64 返回压缩后的编码,传输量更小 |
dimensions | integer | 否 | 输出维度,只有 text-embedding-3 系列支持。维度越低,向量越短,存储和检索越省 |
user | string | 否 | 你这边的终端用户标识,便于排查滥用 |
请求示例
curl https://open.tutujin.com/v1/embeddings \
-H "Authorization: Bearer $TUTUJIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-small",
"input": ["退货政策是什么?", "下单后多久发货?"]
}'import os
from openai import OpenAI
client = OpenAI(base_url="https://open.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"])
resp = client.embeddings.create(
model="text-embedding-3-small",
input=["退货政策是什么?", "下单后多久发货?"],
)
vectors = [d.embedding for d in sorted(resp.data, key=lambda d: d.index)]
print(len(vectors), len(vectors[0]), resp.usage)import OpenAI from 'openai'
const client = new OpenAI({ baseURL: 'https://open.tutujin.com/v1', apiKey: process.env.TUTUJIN_API_KEY })
const resp = await client.embeddings.create({
model: 'text-embedding-3-small',
input: ['退货政策是什么?', '下单后多久发货?'],
})
const vectors = [...resp.data].sort((a, b) => a.index - b.index).map((d) => d.embedding)
console.log(vectors.length, vectors[0].length, resp.usage)拿到向量后,用余弦相似度比较两段文本的相近程度。数据量小时可以直接在内存里算,量大了交给 pgvector、Milvus、Qdrant 这类向量数据库:
Python
import math
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
return dot / (math.sqrt(sum(x * x for x in a)) * math.sqrt(sum(y * y for y in b)))
print(cosine(vectors[0], vectors[1]))响应示例
JSON
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, 0.0789] },
{ "object": "embedding", "index": 1, "embedding": [0.0234, -0.0112, 0.0567] }
],
"model": "text-embedding-3-small",
"usage": { "prompt_tokens": 18, "total_tokens": 18 }
}示例里的向量只截取了前 3 个数,实际长度等于模型的输出维度。
| 字段 | 说明 |
|---|---|
data[].embedding | 向量,浮点数组(encoding_format 为 base64 时是字符串) |
data[].index | 对应 input 里第几段文本,按它把结果和原文对上 |
usage.prompt_tokens | 输入 tokens,向量模型按它计费,没有输出 tokens |
注意事项
- 同一个知识库的入库和查询必须用同一个向量模型。换模型以后,原来的向量都要重新生成。
- 能批量就批量:一次请求传多段文本,比逐段请求省时间。单次请求不要太大,几十到几百段为宜,出错时重试的代价也小。
- 按
index对应结果,不要假设返回顺序和输入顺序一致。 - 向量模型多数按输入 tokens 计费,个别按次计费,以下方价格表和控制台「用量明细」为准。
- 做知识库检索时,可以在向量召回之后再接 Rerank 重排,完整方案见企业知识库与 RAG。
支持此接口的模型
| 模型 | 厂商 | 最低价分组 | 输入 ¥/百万 | 输出 ¥/百万 | 按次 ¥/次 |
|---|---|---|---|---|---|
| text-embedding-3-large | OpenAI | 标准 | ¥0.26 | ¥0.26 | — |
| qwen3-embedding-4b | 通义千问 | 国产模型 | — | — | ¥0.0014 |
| qwen3-embedding-8b | 通义千问 | 国产模型 | — | — | ¥0.0014 |
| qwen3-embedding-0.6b | 通义千问 | 国产模型 | — | — | ¥0.0014 |
| qwen3-reranker-4b | 通义千问 | 标准 | — | — | ¥0.002 |
| qwen3-reranker-0.6b | 通义千问 | 标准 | — | — | ¥0.002 |
| qwen3-reranker-8b | 通义千问 | 国产模型 | ¥0.00308 | ¥0.00308 | — |
| text-embedding-3-small | OpenAI | 标准 | ¥0.04 | ¥0.04 | — |
价格为人民币,取各模型最低价分组;价格更新于 2026年11月12日 20:17。
共 18 个模型支持此接口,上表列出其中一部分。 在模型广场查看全部
没找到答案?加客服微信 JsnonoChat,发送报错信息里的 request id,我们帮你排查。