API 參考

Embeddings

為語義搜尋、RAG、聚類及相似度檢測生成向量 Embeddings。透過單一端點存取來自 OpenAI、Cohere、Voyage、BGE-M3 等供應商的模型。

端點

http
POST https://api.tokspan.com/v1/embeddings

請求參數

參數類型必要說明
modelstringEmbedding 模型 ID(例如 text-embedding-3-largetext-embedding-3-smallvoyage-3
inputstring / array要進行 Embedding 的文字。傳遞字串以獲取單一 Embedding,或傳遞字串陣列進行批次處理(每次請求最多 2048 個項目)。
dimensionsinteger降低輸出維度以節省儲存空間並提升搜尋速度。text-embedding-3 模型支援。必須小於等於模型的最大維度。
encoding_formatstring"float"(預設)或 "base64" 用於緊湊傳輸。
userstring用於濫用監控的最終使用者識別碼。

單一 Embedding

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-key",
    base_url="https://api.tokspan.com/v1",
)

response = client.embeddings.create(
    model="text-embedding-3-large",
    input="Your text string for embedding",
    dimensions=1024,  # Optional: reduce dimensions
)

embedding = response.data[0].embedding
print(f"Vector dimension: {len(embedding)}")

批次 Embedding

在單一請求中發送最多 2048 個輸入以獲得最大吞吐量。回應保持輸入順序 — response.data[0] 對應 input[0]

python
# Batch embedding — process up to 2048 inputs per request
texts = ["First document", "Second document", "Third document"]

response = client.embeddings.create(
    model="text-embedding-3-large",
    input=texts,
    dimensions=1024,
)

for i, data in enumerate(response.data):
    print(f"Text {i}: vector[:5] = {data.embedding[:5]}...")

維度縮減

text-embedding-3-large(最大 3072 維度)和 text-embedding-3-small(最大 1536 維度)等模型支援透過 dimensions 參數降低輸出維度。

為何要降低維度?

  • 更小的儲存空間:256 維度的向量比 3072 維度節省 12 倍空間
  • 更快的搜尋速度:越少維度 = 越快的餘弦相似度計算
  • 足夠的品質:對於大多數用例,256–512 維度可保留約 95% 以上的語義品質
維度儲存空間(每百萬向量)品質最適合
256~1 GB良好大規模搜尋、成本敏感應用
512~2 GB優秀通用 RAG 和語義搜尋
1024~4 GB卓越高精度搜尋、聚類分析
3072~12 GB最高最高精度、小型語料庫
python
import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# Embed your document corpus (do this once, store results)
doc_embeddings = client.embeddings.create(model="text-embedding-3-large", input=documents)

# Embed a search query
query_embedding = client.embeddings.create(model="text-embedding-3-large", input="How do I reset my password?")

# Find most similar documents
scores = [cosine_similarity(query_embedding.data[0].embedding, d.embedding) for d in doc_embeddings.data]
top_idx = np.argmax(scores)
print(f"Best match: {documents[top_idx]} (score: {scores[top_idx]:.3f})")
專業提示:在生產環境 RAG 中,將 Embeddings 與 Rerank 搭配使用,實作兩階段管線:先用 Embeddings 進行粗略檢索(快速且便宜),再對前 20–50 筆結果進行精確重排序。

可用模型

模型供應商最大維度最適合
text-embedding-3-largeOpenAI3072最高精度、靈活的維度縮減
text-embedding-3-smallOpenAI1536成本效益高、品質良好
Cohere Embed v3Cohere1024多語言、強大搜尋效能
Voyage AIVoyage1024 / 2048程式碼和法律文件 Embedding
BGE-M3BAAI1024開源、多語言、適合自託管

請參閱模型頁面了解完整目錄及目前每 Token 定價。