python 使用Embeddings 向量化
嵌入(Embeddings) API 指南
概述
新模型发布
- text-embedding-3-small
- text-embedding-3-large 特点:更低成本、更好的多语言性能、可控制维度
主要应用场景
- 🔍 搜索(相关性排序)
- 📊 聚类(相似性分组)
- 👍 推荐系统
- ⚠️ 异常检测
- 📈 多样性分析
- 🏷️ 文本分类
基础使用
获取嵌入向量
python
from openai import OpenAI
client = OpenAI(
base_url="https://www.anyapi.vip/v1",
api_key=key
)
response = client.embeddings.create(
input="Your text string goes here",
model="text-embedding-3-small"
)
print(response.data[0].embedding)响应格式
json
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
-0.006929283495992422,
-0.005336422007530928,
// ... 更多数值
],
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
}
}模型对比
| 模型 | 每美元页面数 | MTEB性能评估 | 最大输入 |
|---|---|---|---|
| text-embedding-3-small | 62,500 | 62.3% | 8191 |
| text-embedding-3-large | 9,615 | 64.6% | 8191 |
| text-embedding-ada-002 | 12,500 | 61.0% | 8191 |
实际应用示例
处理评论数据
python
from openai import OpenAI
client = OpenAI(
base_url="https://www.anyapi.vip/v1",
api_key=key
)
def get_embedding(text, model="text-embedding-3-small"):
text = text.replace("\n", " ")
return client.embeddings.create(input = [text], model=model).data[0].embedding
# 处理数据框
df['ada_embedding'] = df.combined.apply(lambda x: get_embedding(x, model='text-embedding-3-small'))
df.to_csv('output/embedded_1k_reviews.csv', index=False)
# 加载保存的嵌入
import pandas as pd
import numpy as np
df = pd.read_csv('output/embedded_1k_reviews.csv')
df['ada_embedding'] = df.ada_embedding.apply(eval).apply(np.array)技术细节
维度说明
- text-embedding-3-small: 默认1536维
- text-embedding-3-large: 默认3072维
- 可通过 Dimensions 参数调整维度
注意事项
- 计费基于输入令牌数
- 每页约800个令牌
- 所有模型最大输入均为8191个令牌