UNPKG

@mastra/core

Version:

Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.

92 lines (61 loc) 2.95 kB
# 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: ```typescript import { embed } from 'ai' import { ModelRouterEmbeddingModel } from '@mastra/core/llm' const result = await embed({ model: new ModelRouterEmbeddingModel('openai/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`): Maximum number of retries per embedding call. Set to 0 to disable retries. (Default: `2`) **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: ```typescript import { embedMany } from 'ai' const result = await embedMany({ model: new ModelRouterEmbeddingModel('openai/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`): Maximum number of retries per embedding call. Set to 0 to disable retries. (Default: `2`) **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 ```typescript import { embed, embedMany } from 'ai' // Single embedding const singleResult = await embed({ model: new ModelRouterEmbeddingModel('openai/text-embedding-3-small'), value: 'What is the meaning of life?', }) // Multiple embeddings const multipleResult = await embedMany({ model: new ModelRouterEmbeddingModel('openai/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: - [AI SDK Embeddings Overview](https://sdk.vercel.ai/docs/ai-sdk-core/embeddings) - [embed()](https://sdk.vercel.ai/docs/reference/ai-sdk-core/embed) - [embedMany()](https://sdk.vercel.ai/docs/reference/ai-sdk-core/embed-many)