创建文本嵌入向量,用于语义搜索、文本相似度计算等任务。
- 接口地址:
POST /v1/embeddings - 认证方式: Bearer Token
- Content-Type: application/json
| 参数 | 类型 | 说明 |
|---|
| model | string | 嵌入模型名称 |
| input | string/array | 输入文本 |
| 参数 | 类型 | 默认值 | 说明 |
|---|
| encoding_format | string | "float" | 编码格式,可选 "float" 或 "base64" |
| user | string | null | 用户标识 |
| 模型 | 维度 | 最大 Token | 说明 |
|---|
| text-embedding-ada-002 | 1536 | 8,191 | OpenAI 第二代嵌入模型 |
| text-embedding-3-small | 1536 | 8,191 | 高性价比小模型 |
| text-embedding-3-large | 3072 | 8,191 | 高精度大模型 |
curl https://aigc.aochengcloud.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "text-embedding-ada-002",
"input": "你好,世界"
}'
curl https://aigc.aochengcloud.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "text-embedding-ada-002",
"input": [
"你好",
"世界",
"人工智能"
]
}'
curl https://aigc.aochengcloud.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "text-embedding-3-small",
"input": "你好,世界",
"encoding_format": "float"
}'
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [
0.0023064255,
-0.009327292,
0.015797345,
...
],
"index": 0
}
],
"model": "text-embedding-ada-002",
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
}
}
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [0.0023064255, ...],
"index": 0
},
{
"object": "embedding",
"embedding": [0.0012345678, ...],
"index": 1
},
{
"object": "embedding",
"embedding": [0.0034567890, ...],
"index": 2
}
],
"model": "text-embedding-ada-002",
"usage": {
"prompt_tokens": 15,
"total_tokens": 15
}
}
| 字段 | 类型 | 说明 |
|---|
| object | string | 对象类型 |
| data | array | 嵌入向量列表 |
| model | string | 使用的模型 |
| usage | object | token 用量统计 |
| 字段 | 类型 | 说明 |
|---|
| object | string | 对象类型 |
| embedding | array | 嵌入向量 |
| index | integer | 文本索引 |
import openai
client = openai.OpenAI(
api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
base_url="https://aigc.aochengcloud.com/v1"
)
response = client.embeddings.create(
model="text-embedding-ada-002",
input="你好,世界"
)
embedding = response.data[0].embedding
print(f"向量维度: {len(embedding)}")
response = client.embeddings.create(
model="text-embedding-ada-002",
input=[
"你好",
"世界",
"人工智能"
]
)
for item in response.data:
print(f"文本 {item.index}: 向量维度 {len(item.embedding)}")
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
baseURL: 'https://aigc.aochengcloud.com/v1'
});
const response = await openai.embeddings.create({
model: 'text-embedding-ada-002',
input: '你好,世界'
});
console.log(`向量维度: ${response.data[0].embedding.length}`);
import numpy as np
response = client.embeddings.create(
model="text-embedding-ada-002",
input="你好,世界"
)
embedding = np.array(response.data[0].embedding)
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
text1_embedding = client.embeddings.create(
model="text-embedding-ada-002",
input="你好"
).data[0].embedding
text2_embedding = client.embeddings.create(
model="text-embedding-ada-002",
input="世界"
).data[0].embedding
similarity = cosine_similarity(text1_embedding, text2_embedding)
print(f"相似度: {similarity}")
import numpy as np
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
base_url="https://aigc.aochengcloud.com/v1"
)
documents = [
"人工智能是计算机科学的一个分支",
"机器学习是人工智能的一个子领域",
"深度学习是机器学习的一个分支"
]
doc_embeddings = []
for doc in documents:
response = client.embeddings.create(
model="text-embedding-ada-002",
input=doc
)
doc_embeddings.append(response.data[0].embedding)
def search(query, top_k=3):
query_embedding = client.embeddings.create(
model="text-embedding-ada-002",
input=query
).data[0].embedding
similarities = []
for i, doc_embedding in enumerate(doc_embeddings):
similarity = np.dot(query_embedding, doc_embedding) / (
np.linalg.norm(query_embedding) * np.linalg.norm(doc_embedding)
)
similarities.append((similarity, i))
similarities.sort(reverse=True)
return [(documents[idx], score) for score, idx in similarities[:top_k]]
results = search("什么是深度学习?")
for doc, score in results:
print(f"相似度: {score:.4f} - {doc}")
from sklearn.cluster import KMeans
import numpy as np
texts = ["文本1", "文本2", "文本3", ...]
embeddings = []
for text in texts:
response = client.embeddings.create(
model="text-embedding-ada-002",
input=text
)
embeddings.append(response.data[0].embedding)
kmeans = KMeans(n_clusters=3)
clusters = kmeans.fit_predict(embeddings)
for i, text in enumerate(texts):
print(f"文本: {text} -> 簇: {clusters[i]}")
def get_recommendations(user_input, candidate_items, top_k=5):
user_embedding = client.embeddings.create(
model="text-embedding-ada-002",
input=user_input
).data[0].embedding
item_embeddings = []
for item in candidate_items:
response = client.embeddings.create(
model="text-embedding-ada-002",
input=item
)
item_embeddings.append(response.data[0].embedding)
similarities = []
for i, item_embedding in enumerate(item_embeddings):
similarity = np.dot(user_embedding, item_embedding) / (
np.linalg.norm(user_embedding) * np.linalg.norm(item_embedding)
)
similarities.append((similarity, i))
similarities.sort(reverse=True)
return [(candidate_items[idx], score) for score, idx in similarities[:top_k]]
- 单次请求最大输入:8,191 tokens
- 建议批量处理:每次请求 100-1000 条文本
- 超长文本:先分句再嵌入
- text-embedding-ada-002: 1536 维,通用场景
- text-embedding-3-small: 1536 维,高性价比
- text-embedding-3-large: 3072 维,高精度场景
batch_size = 100
for i in range(0, len(texts), batch_size):
batch = texts[i:i+batch_size]
response = client.embeddings.create(
model="text-embedding-ada-002",
input=batch
)
| 错误码 | 说明 | 处理方式 |
|---|
| 400 | 请求参数错误 | 检查输入格式 |
| 401 | 认证失败 | 检查 API Key |
| 429 | 请求频率超限 | 降低请求频率 |
| 500 | 服务器错误 | 稍后重试 |