API 參考
Embeddings 向量介面
POST /v1/embeddings 的參數、請求與響應示例:把文本轉成向量,用於語義檢索、知識庫 RAG、相似問題匹配和去重。格式與 OpenAI Embeddings 一致,已在本站實測。
POST /v1/embeddings 把一段或多段文本轉換成向量,也就是一串浮點數。兩段文字意思越接近,它們的向量距離越近,所以向量常用來做知識庫檢索、相似問題匹配、聚類和去重。介面格式與 OpenAI Embeddings API 一致,已在本站實測。
POST
https://www.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://www.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://www.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://www.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-0.6b | 通義千問 | 國產模型 | — | — | ¥0.0014 |
| qwen3-embedding-8b | 通義千問 | 國產模型 | — | — | ¥0.0014 |
| qwen3-reranker-0.6b | 通義千問 | 標準 | — | — | ¥0.002 |
| qwen3-reranker-4b | 通義千問 | 標準 | — | — | ¥0.002 |
| qwen3-reranker-8b | 通義千問 | 國產模型 | ¥0.00308 | ¥0.00308 | — |
| text-embedding-3-small | OpenAI | 標準 | ¥0.04 | ¥0.04 | — |
價格為人民幣,取各模型最低價分組;價格更新於 2026年11月13日 下午6:08。
共 18 個模型支援此介面,上表列出其中一部分。 在模型廣場檢視全部
沒找到答案?加客服微信 JsnonoChat,傳送報錯資訊裡的 request id,我們幫你排查。