Skip to content

Text Embeddings

POST /v1/embeddings

Converts text into high-dimensional vectors for semantic search, RAG (retrieval-augmented generation), clustering, recommendation, and similar use cases.

input accepts a single string or an array of strings (batch processing).

Request parameters

ParameterTypeRequiredDescription
modelstringEmbedding model ID, e.g. text-embedding-3-small
inputstring / arrayText to embed; supports an array of strings for batching
dimensionsintegerOutput vector dimensions (dimensionality reduction); supported by some models
encoding_formatstringOutput format: float (default) or base64

Request example

bash
curl https://api.idreame.ai/v1/embeddings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "text-embedding-3-small",
    "input": ["Hello, world", "你好,世界"]
  }'
python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.idreame.ai/v1",
    api_key="sk-xxxxxxxx",
)

response = client.embeddings.create(
    model="text-embedding-3-small",
    input=["Hello, world", "你好,世界"],
)

for item in response.data:
    print(f"index {item.index}: dim {len(item.embedding)}")

Response example

json
{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [0.0023, -0.0091, 0.0142, ...]
    },
    {
      "object": "embedding",
      "index": 1,
      "embedding": [0.0154, 0.0037, -0.0089, ...]
    }
  ],
  "model": "text-embedding-3-small",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Common use: semantic similarity

python
import numpy as np
from openai import OpenAI

client = OpenAI(
    base_url="https://api.idreame.ai/v1",
    api_key="sk-xxxxxxxx",
)

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

texts = ["Apples are a fruit", "Bananas are yellow", "Cats are pets"]
query = "What fruits are there?"

# Fetch all vectors in one batch
all_texts = [query] + texts
response = client.embeddings.create(
    model="text-embedding-3-small",
    input=all_texts,
)

embeddings = [item.embedding for item in response.data]
query_vec = embeddings[0]
doc_vecs = embeddings[1:]

# Compute similarity and sort
scores = [(texts[i], cosine_similarity(query_vec, doc_vecs[i])) for i in range(len(texts))]
scores.sort(key=lambda x: x[1], reverse=True)

for text, score in scores:
    print(f"{score:.4f}  {text}")
ModelDimensionsUse case
text-embedding-3-small1536General semantic search, cost-effective
text-embedding-3-large3072High-precision semantic understanding
text-embedding-ada-0021536Compatibility with older projects

OpenAI-compatible · Multimodal AI gateway