Embeddings

The /v1/embeddings endpoint is under development and will be available in upcoming platform updates.

Embeddings are numerical vector representations of text that capture its semantic meaning. Texts with similar meaning will have close vectors, enabling semantic search, clustering, and classification.

Use Cases

  • Semantic searchFind documents similar in meaning to a query, even if they don't contain the same keywords.
  • ClusteringAutomatically group texts by topic without manual labeling.
  • ClassificationDetermine text category by comparing against reference embeddings.
  • Duplicate detectionIdentify semantically similar texts for deduplication.
  • RecommendationsRecommend content based on similarity to user preferences.

API Endpoint

Send a POST request to /v1/embeddings:

modelstringRequiredEmbedding model, e.g. mira-embed
inputstring | string[]RequiredText or array of texts to embed
dimensionsintegerOptionalVector dimensions (default 1536)
encoding_formatstringOptional"float" (default) or "base64"

Python Example

Python
import requests

response = requests.post(
    "https://api.vmira.ai/v1/embeddings",
    headers={"Authorization": "Bearer sk-mira-YOUR_KEY"},
    json={
        "model": "mira-embed",
        "input": "Artificial intelligence is changing the world"
    }
)

data = response.json()
embedding = data["data"][0]["embedding"]
print(f"Dimensions: {len(embedding)}")  # 1536
print(f"First 5 values: {embedding[:5]}")

JavaScript Example

JavaScript
const response = await fetch("https://api.vmira.ai/v1/embeddings", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk-mira-YOUR_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "mira-embed",
    input: "Artificial intelligence is changing the world",
  }),
});

const data = await response.json();
const embedding = data.data[0].embedding;
console.log("Dimensions:", embedding.length);  // 1536
console.log("First 5:", embedding.slice(0, 5));

Batch Embeddings

Send an array of texts to get multiple embeddings at once:

Python
response = requests.post(
    "https://api.vmira.ai/v1/embeddings",
    headers={"Authorization": "Bearer sk-mira-YOUR_KEY"},
    json={
        "model": "mira-embed",
        "input": [
            "Machine learning",
            "Deep neural networks",
            "Chocolate cake recipe"
        ]
    }
)

embeddings = [item["embedding"] for item in response.json()["data"]]
print(f"Got {len(embeddings)} embeddings")

Response Format

JSON
{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [0.0023, -0.0091, 0.0152, ...]
    }
  ],
  "model": "mira-embed",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Similarity Metrics

To compare embeddings, use one of the following metrics:

MetricRangeDescription
Cosine similarity-1 ... 1Most common. 1 = identical, 0 = orthogonal
Dot product-inf ... infFast computation, considers vector magnitude
Euclidean distance0 ... infLower = closer. Sensitive to scale

Cosine Similarity Example

Python
import numpy as np

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

# Compare two embeddings
similarity = cosine_similarity(embeddings[0], embeddings[1])
print(f"Similarity: {similarity:.4f}")  # ~0.89 (similar topics)

similarity2 = cosine_similarity(embeddings[0], embeddings[2])
print(f"Similarity: {similarity2:.4f}")  # ~0.31 (different topics)
For semantic search, use cosine similarity — it normalizes vector length and gives the most stable results.

Best Practices

  • Batch processingSend up to 100 texts per request for maximum efficiency.
  • CachingStore embeddings in a database (e.g., pgvector, Pinecone) to avoid recomputing them.
  • Text preprocessingRemove extra whitespace, HTML tags, and noise before computing embeddings.
  • DimensionsUse the default 1536. Smaller values (256, 512) save memory but reduce accuracy.

Next Steps