Skip to Content
ReferenceRAG.embed()

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: