Skip to content

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-small62,50062.3%8191
text-embedding-3-large9,61564.6%8191
text-embedding-ada-00212,50061.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个令牌

AnyAPI — 专业的 AI 接口聚合服务