Skip to main content

Basic Usage

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 is an AI model gateway"
)

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

Batch Embeddings

texts = [
    "The history of artificial intelligence",
    "Differences between machine learning and deep learning",
    "Applications of natural language processing"
]

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

for i, item in enumerate(response.data):
    print(f"Text {i}: dimensions {len(item.embedding)}")

Custom Dimensions

The text-embedding-3-* series supports custom output dimensions:
response = client.embeddings.create(
    model="text-embedding-3-large",
    input="Test text",
    dimensions=256  # Reduce to 256 dimensions
)

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

Compute Similarity

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=["Cats are pets", "Dogs are also common pets", "Quantum mechanics is a branch of physics"]
)

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

print(f"Cat vs Dog: {cosine_similarity(vectors[0], vectors[1]):.4f}")
print(f"Cat vs Quantum mechanics: {cosine_similarity(vectors[0], vectors[2]):.4f}")
Reducing dimensions can lower storage and computation costs but may sacrifice some accuracy. Test with your specific use case to find the right dimension.