Skip to main content

Embed

Mastra uses the AI SDK's embed and embedMany functions to generate vector embeddings for text inputs, enabling similarity search and RAG workflows.

Single Embedding​

The embed function generates a vector embedding for a single text input:

import { embed } from "ai";

const result = await embed({
model: openai.embedding("text-embedding-3-small"),
value: "Your text to embed",
maxRetries: 2, // optional, defaults to 2
});

Parameters​

model:

EmbeddingModel
The embedding model to use (e.g. openai.embedding('text-embedding-3-small'))

value:

string | Record<string, any>
The text content or object to embed

maxRetries?:

number
= 2
Maximum number of retries per embedding call. Set to 0 to disable retries.

abortSignal?:

AbortSignal
Optional abort signal to cancel the request

headers?:

Record<string, string>
Additional HTTP headers for the request (only for HTTP-based providers)

Return Value​

embedding:

number[]
The embedding vector for the input

Multiple Embeddings​

For embedding multiple texts at once, use the embedMany function:

import { embedMany } from "ai";

const result = await embedMany({
model: openai.embedding("text-embedding-3-small"),
values: ["First text", "Second text", "Third text"],
maxRetries: 2, // optional, defaults to 2
});

Parameters​

model:

EmbeddingModel
The embedding model to use (e.g. openai.embedding('text-embedding-3-small'))

values:

string[] | Record<string, any>[]
Array of text content or objects to embed

maxRetries?:

number
= 2
Maximum number of retries per embedding call. Set to 0 to disable retries.

abortSignal?:

AbortSignal
Optional abort signal to cancel the request

headers?:

Record<string, string>
Additional HTTP headers for the request (only for HTTP-based providers)

Return Value​

embeddings:

number[][]
Array of embedding vectors corresponding to the input values

Example Usage​

import { embed, embedMany } from "ai";
import { openai } from "@ai-sdk/openai";

// Single embedding
const singleResult = await embed({
model: openai.embedding("text-embedding-3-small"),
value: "What is the meaning of life?",
});

// Multiple embeddings
const multipleResult = await embedMany({
model: openai.embedding("text-embedding-3-small"),
values: [
"First question about life",
"Second question about universe",
"Third question about everything",
],
});

For more detailed information about embeddings in the Vercel AI SDK, see:

On this page