Nirmos

Embeddings

Generate OpenAI-compatible text embeddings through the Nirmos gateway.

Use one string or a batch of strings. The model must advertise the embedding capability.

const response = await nirmos.gateway.embeddings.create({
  model: "openai/text-embedding-3-large",
  input: [
    "Nirmos provides model routing.",
    "Managed prompts are versioned.",
  ],
});

for (const embedding of response.embeddings) {
  console.log(embedding.index, embedding.values?.length);
}
const response = await client.embeddings.create({
  model: "openai/text-embedding-3-large",
  input: [
    "Nirmos provides model routing.",
    "Managed prompts are versioned.",
  ],
});

for (const embedding of response.data) {
  console.log(embedding.index, embedding.embedding.length);
}

Dimensions and encoding

const response = await nirmos.gateway.embeddings.create({
  model: "openai/text-embedding-3-large",
  input: "Vectorize this text",
  dimensions: 1024,
  encoding: "float",
});
const response = await client.embeddings.create({
  model: "openai/text-embedding-3-large",
  input: "Vectorize this text",
  dimensions: 1024,
  encoding_format: "float",
});

Only set custom dimensions when the selected provider model supports them. encoding: "base64" maps to OpenAI's encoding_format: "base64" and produces embedding.base64 in the normalized Nirmos response.

Nirmos response

type EmbeddingResponse = {
  model: string;
  embeddings: Array<
    | { index: number; values: number[] }
    | { index: number; base64: string }
  >;
  usage: {
    inputTokens: number;
    outputTokens: number;
    totalTokens: number;
  };
  metadata: RequestMetadata;
};

Preserve each index when mapping a batch response back to its source strings.

On this page