UniterRouter
API 参考OpenAI 兼容

Embeddings

OpenAI Embeddings API - 通过 UniterRouter 生成 text-embedding-3-large、ada-002 向量。构建语义搜索、RAG 应用的统一嵌入 API。

Embeddings

从文本输入创建向量嵌入。嵌入是文本的数值表示,可用于语义搜索、聚类和相似度比较。

端点

POST https://api.uniterouter.ai/v1/embeddings

请求体

参数类型必填描述
modelstring是要使用的嵌入模型 ID
inputstring | array是要嵌入的文本。可以是字符串或字符串数组
encoding_formatstring否嵌入格式:float(默认)或 base64
dimensionsinteger否输出维度数(取决于模型)

支持的模型

模型提供商维度最大 Token
text-embedding-3-smallOpenAI15368191
text-embedding-3-largeOpenAI30728191
text-embedding-ada-002OpenAI15368191
voyage-3Voyage102432000
voyage-3-liteVoyage51232000

请求示例

curl https://api.uniterouter.ai/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $UNITEROUTER_API_KEY" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "敏捷的棕色狐狸跳过懒惰的狗"
  }'
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uniterouter.ai/v1",
    api_key="your_api_key",
)

response = client.embeddings.create(
    model="text-embedding-3-small",
    input="敏捷的棕色狐狸跳过懒惰的狗"
)

embedding = response.data[0].embedding
print(f"嵌入维度: {len(embedding)}")
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.uniterouter.ai/v1",
  apiKey: process.env.UNITEROUTER_API_KEY,
});

const response = await client.embeddings.create({
  model: "text-embedding-3-small",
  input: "敏捷的棕色狐狸跳过懒惰的狗",
});

const embedding = response.data[0].embedding;
console.log(`嵌入维度: ${embedding.length}`);

响应

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [0.0023064255, -0.009327292, ...]
    }
  ],
  "model": "text-embedding-3-small",
  "usage": {
    "prompt_tokens": 9,
    "total_tokens": 9
  }
}

批量嵌入

在单个请求中嵌入多个文本以提高效率:

response = client.embeddings.create(
    model="text-embedding-3-small",
    input=[
        "第一个要嵌入的文档",
        "第二个要嵌入的文档",
        "第三个要嵌入的文档"
    ]
)

for item in response.data:
    print(f"索引 {item.index}: {len(item.embedding)} 维度")

使用场景

语义搜索

import numpy as np

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

# 嵌入查询和文档
query_embedding = get_embedding("什么是机器学习?")
doc_embeddings = [get_embedding(doc) for doc in documents]

# 找到最相似的
similarities = [cosine_similarity(query_embedding, doc) for doc in doc_embeddings]
most_similar_idx = np.argmax(similarities)

RAG(检索增强生成)

将嵌入与聊天补全结合,实现上下文感知的响应:

# 1. 嵌入用户查询
query_embedding = client.embeddings.create(
    model="text-embedding-3-small",
    input=user_query
).data[0].embedding

# 2. 在向量数据库中搜索相关上下文
relevant_docs = vector_db.search(query_embedding, top_k=5)

# 3. 使用上下文生成响应
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": f"上下文: {relevant_docs}"},
        {"role": "user", "content": user_query}
    ]
)

提示:大多数使用场景建议使用 text-embedding-3-small。它提供最佳的成本和性能平衡。

How is this guide?