跳转到主要内容

基础用法

from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="https://crazyrouter.com/v1")

response = client.embeddings.create(
    model="text-embedding-3-large",
    input="Crazyrouter 是一个 AI 模型网关"
)

embedding = response.data[0].embedding
print(f"维度: {len(embedding)}")

批量嵌入

texts = [
    "人工智能的发展历史",
    "机器学习与深度学习的区别",
    "自然语言处理的应用场景"
]

response = client.embeddings.create(
    model="text-embedding-3-large",
    input=texts
)

for i, item in enumerate(response.data):
    print(f"文本 {i}: 维度 {len(item.embedding)}")

指定维度

text-embedding-3-* 系列支持自定义输出维度:
response = client.embeddings.create(
    model="text-embedding-3-large",
    input="测试文本",
    dimensions=256  # 降维到 256
)

print(f"维度: {len(response.data[0].embedding)}")  # 256

计算相似度

import numpy as np

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

response = client.embeddings.create(
    model="text-embedding-3-large",
    input=["猫是一种宠物", "狗也是常见的宠物", "量子力学是物理学分支"]
)

vectors = [item.embedding for item in response.data]

print(f"猫 vs 狗: {cosine_similarity(vectors[0], vectors[1]):.4f}")
print(f"猫 vs 量子力学: {cosine_similarity(vectors[0], vectors[2]):.4f}")
降维可以减少存储和计算成本,但会损失部分精度。建议根据实际场景测试选择合适的维度。