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 search — Find documents similar in meaning to a query, even if they don't contain the same keywords.
- Clustering — Automatically group texts by topic without manual labeling.
- Classification — Determine text category by comparing against reference embeddings.
- Duplicate detection — Identify semantically similar texts for deduplication.
- Recommendations — Recommend content based on similarity to user preferences.
API Endpoint
Send a POST request to /v1/embeddings:
modelstringRequiredEmbedding model, e.g. mira-embedinputstring | string[]RequiredText or array of texts to embeddimensionsintegerOptionalVector 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 processing — Send up to 100 texts per request for maximum efficiency.
- Caching — Store embeddings in a database (e.g., pgvector, Pinecone) to avoid recomputing them.
- Text preprocessing — Remove extra whitespace, HTML tags, and noise before computing embeddings.
- Dimensions — Use the default 1536. Smaller values (256, 512) save memory but reduce accuracy.