API 参考OpenAI 兼容
Embeddings
OpenAI Embeddings API - 通过 UniterRouter 生成 text-embedding-3-large、ada-002 向量。构建语义搜索、RAG 应用的统一嵌入 API。
Embeddings
从文本输入创建向量嵌入。嵌入是文本的数值表示,可用于语义搜索、聚类和相似度比较。
端点
POST https://api.uniterouter.ai/v1/embeddings请求体
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
model | string | 是 | 要使用的嵌入模型 ID |
input | string | array | 是 | 要嵌入的文本。可以是字符串或字符串数组 |
encoding_format | string | 否 | 嵌入格式:float(默认)或 base64 |
dimensions | integer | 否 | 输出维度数(取决于模型) |
支持的模型
| 模型 | 提供商 | 维度 | 最大 Token |
|---|---|---|---|
text-embedding-3-small | OpenAI | 1536 | 8191 |
text-embedding-3-large | OpenAI | 3072 | 8191 |
text-embedding-ada-002 | OpenAI | 1536 | 8191 |
voyage-3 | Voyage | 1024 | 32000 |
voyage-3-lite | Voyage | 512 | 32000 |
请求示例
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?