voyage-ai-provider
Version:
Voyage AI Provider for running Voyage AI models with Vercel AI SDK
1 lines • 33.7 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/voyage-provider.ts","../src/voyage-embedding-model.ts","../src/voyage-embedding-settings.ts","../src/voyage-error.ts","../src/voyage-multimodal-embedding-model.ts","../src/voyage-multimodal-embedding-settings.ts","../src/reranking/voyage-reranking-model.ts","../src/reranking/voyage-reranking-api.ts","../src/reranking/voyage-reranking-options.ts"],"sourcesContent":["export { createVoyage, voyage } from './voyage-provider';\nexport type { VoyageEmbeddingOptions } from './voyage-embedding-settings';\nexport type {\n VoyageMultimodalEmbeddingOptions,\n VoyageMultimodalContentPart,\n} from './voyage-multimodal-embedding-settings';\nexport type { VoyageRerankingOptions } from './reranking/voyage-reranking-options';\nexport type { VoyageProvider, VoyageProviderSettings } from './voyage-provider';\nexport type { MultimodalEmbeddingModel } from './voyage-multimodal-embedding-model';\n","import type {\n EmbeddingModelV3,\n ImageModelV3,\n LanguageModelV3,\n ProviderV3,\n RerankingModelV3,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-settings';\nimport type { VoyageMultimodalEmbeddingModelId } from './voyage-multimodal-embedding-settings';\nimport { MultimodalEmbeddingModel } from './voyage-multimodal-embedding-model';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\n\nexport interface VoyageProvider extends ProviderV3 {\n (modelId: VoyageEmbeddingModelId): EmbeddingModelV3;\n\n embeddingModel: (modelId: VoyageEmbeddingModelId) => EmbeddingModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead. `textEmbeddingModel` is kept for\n * backwards compatibility and points to the same implementation.\n */\n textEmbeddingModel: (modelId: VoyageEmbeddingModelId) => EmbeddingModelV3;\n\n /**\n * Multimodal (text and/or image) embeddings.\n *\n * Voyage exposes a single multimodal endpoint, so `imageEmbeddingModel` and\n * `multimodalEmbeddingModel` are equivalent. Pass text in `values` and images\n * via `providerOptions.voyage.content`.\n */\n multimodalEmbeddingModel: (\n modelId: VoyageMultimodalEmbeddingModelId,\n ) => EmbeddingModelV3;\n\n /**\n * Alias for {@link VoyageProvider.multimodalEmbeddingModel} — both use the\n * `voyage-multimodal-3` model and the same multimodal endpoint.\n */\n imageEmbeddingModel: (\n modelId: VoyageMultimodalEmbeddingModelId,\n ) => EmbeddingModelV3;\n\n reranking: (modelId: VoyageRerankingModelId) => RerankingModelV3;\n\n rerankingModel: (modelId: VoyageRerankingModelId) => RerankingModelV3;\n}\n\nexport interface VoyageProviderSettings {\n /**\n * Use a different URL prefix for API calls, e.g. to use proxy servers.\n * The default prefix is `https://api.voyageai.com/v1`.\n *\n * @see https://docs.voyageai.com/reference\n */\n baseURL?: string;\n\n /**\n API key that is being send using the `Authorization` header.\n It defaults to the `VOYAGE_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n Custom fetch implementation. You can use it as a middleware to intercept requests,\n or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n Create a Voyage AI provider instance.\n */\nexport function createVoyage(\n options: VoyageProviderSettings = {},\n): VoyageProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.voyageai.com/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'VOYAGE_API_KEY',\n description: 'Voyage',\n })}`,\n ...options.headers,\n });\n\n const createEmbeddingModel = (modelId: VoyageEmbeddingModelId) =>\n new VoyageEmbeddingModel(modelId, {\n provider: 'voyage.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createMultimodalEmbeddingModel = (\n modelId: VoyageMultimodalEmbeddingModelId,\n ) =>\n new MultimodalEmbeddingModel(modelId, {\n provider: 'voyage.multimodal.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createRerankingModel = (modelId: VoyageRerankingModelId) =>\n new VoyageRerankingModel(modelId, {\n provider: 'voyage.reranking',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: VoyageEmbeddingModelId) {\n if (new.target) {\n throw new Error(\n 'The Voyage model function cannot be called with the new keyword.',\n );\n }\n\n return createEmbeddingModel(modelId);\n };\n\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.multimodalEmbeddingModel = createMultimodalEmbeddingModel;\n provider.imageEmbeddingModel = createMultimodalEmbeddingModel;\n\n provider.chat = provider.languageModel = (): LanguageModelV3 => {\n throw new Error('languageModel method is not implemented.');\n };\n provider.imageModel = (): ImageModelV3 => {\n throw new Error('imageModel method is not implemented.');\n };\n\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n\n return provider as unknown as VoyageProvider;\n}\n\n/**\n Default Voyage provider instance.\n */\nexport const voyage = createVoyage();\n","import {\n type EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n type FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nimport {\n voyageEmbeddingOptions,\n type VoyageEmbeddingModelId,\n} from '@/voyage-embedding-settings';\nimport { voyageFailedResponseHandler } from '@/voyage-error';\n\ntype VoyageEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageEmbeddingModelId;\n\n private readonly config: VoyageEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return 128;\n }\n\n get supportsParallelCalls(): boolean {\n return false;\n }\n\n constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n abortSignal,\n values,\n headers,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageEmbeddingOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n modelId: this.modelId,\n provider: this.provider,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n abortSignal,\n body: {\n input: values,\n model: this.modelId,\n input_type: embeddingOptions?.inputType,\n truncation: embeddingOptions?.truncation,\n output_dimension: embeddingOptions?.outputDimension,\n output_dtype: embeddingOptions?.outputDtype,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n fetch: this.config.fetch,\n headers: combineHeaders(this.config.headers(), headers),\n successfulResponseHandler: createJsonResponseHandler(\n voyageTextEmbeddingResponseSchema,\n ),\n url: `${this.config.baseURL}/embeddings`,\n });\n\n return {\n embeddings: response.data.map((item) => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.total_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n warnings: [],\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst voyageTextEmbeddingResponseSchema = z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ total_tokens: z.number() }).nullish(),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n // Latest generation (recommended)\n | 'voyage-4-large'\n | 'voyage-4'\n | 'voyage-4-lite'\n | 'voyage-code-3'\n | 'voyage-finance-2'\n | 'voyage-law-2'\n | 'voyage-code-2'\n\n // Previous generation\n | 'voyage-3-large'\n | 'voyage-3.5'\n | 'voyage-3.5-lite'\n | 'voyage-3'\n | 'voyage-3-lite'\n | 'voyage-multilingual-2'\n\n // Older models [Deprecated]\n | 'voyage-large-2-instruct'\n | 'voyage-large-2'\n | 'voyage-2'\n | 'voyage-02'\n | 'voyage-01'\n | 'voyage-lite-01'\n | (string & NonNullable<unknown>);\n\nexport const voyageEmbeddingOptions = z.object({\n /**\n * The input type for the embeddings. Defaults to \"query\".\n * For query, the prompt is \"Represent the query for retrieving supporting documents: \".\n * For document, the prompt is \"Represent the document for retrieval: \".\n */\n\n inputType: z.enum(['query', 'document']).optional(),\n\n // /**\n // * Format in which the embeddings are encoded. We support two options:\n // * If not specified (defaults to null): the embeddings are represented as lists of floating-point numbers;\n // * base64: the embeddings are compressed to base64 encodings.\n // */\n // encodingFormat?: 'base64';\n\n /**\n * The number of dimensions for the resulting output embeddings.\n *\n * If not specified (defaults to null), the resulting output embeddings dimension is the default for the model.\n * `voyage-code-3` supports the following `outputDimension` values: 2048, 1024 (default), 512, and 256.\n * `voyage-3-large` supports the following `outputDimension` values: 2048, 1024 (default), 512, and 256.\n *\n * please refer to the model documentation for the supported values.\n * https://docs.voyageai.com/docs/embeddings\n */\n outputDimension: z.number().optional(),\n\n /**\n * The data type for the resulting output embeddings.\n *\n * Defaults to 'float'.\n *\n * Other options: 'int8', 'uint8', 'binary', 'ubinary'.\n * - 'float' is supported by all models.\n * - 'float': Each returned embedding is a list of 32-bit (4-byte) single-precision floating-point numbers.\n * - 'int8', 'uint8', 'binary', and 'ubinary' are supported by 'voyage-code-3'.\n * - 'int8' and 'uint8': Each returned embedding is a list of 8-bit (1-byte) integers ranging from -128 to 127 and 0 to 255, respectively.\n * - 'binary' and 'ubinary': Each returned embedding is a list of 8-bit integers that represent bit-packed, quantized single-bit embedding values:\n * 'int8' for 'binary' and 'uint8' for 'ubinary'.\n * The length of the returned list of integers is 1/8 of outputDimension (which is the actual dimension of the embedding).\n * The 'binary' type uses the offset binary method.\n *\n * https://docs.voyageai.com/docs/faq#what-is-quantization-and-output-data-types\n */\n outputDtype: z\n .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n .optional(),\n\n /**\n * Whether to truncate the input texts to fit within the context length.\n */\n truncation: z.boolean().optional(),\n});\n\nexport type VoyageEmbeddingOptions = z.infer<typeof voyageEmbeddingOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n error: z.object({\n code: z.string().nullable(),\n message: z.string(),\n param: z.any().nullable(),\n type: z.string(),\n }),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: voyageErrorDataSchema,\n errorToMessage: (data) => data.error.message,\n});\n","import {\n type EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n type FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\n\nimport {\n voyageMultimodalEmbeddingOptions,\n type VoyageMultimodalContentPart,\n type VoyageMultimodalEmbeddingModelId,\n} from '@/voyage-multimodal-embedding-settings';\nimport { voyageFailedResponseHandler } from '@/voyage-error';\nimport { z } from 'zod/v4';\n\ntype VoyageEmbeddingConfig = {\n baseURL: string;\n fetch?: FetchFunction;\n headers: () => Record<string, string | undefined>;\n provider: string;\n};\n\n// API-compatible input for the Voyage multimodal embeddings endpoint.\n// https://docs.voyageai.com/reference/multimodal-embeddings-api\ntype VoyageMultimodalInput = {\n content: VoyageMultimodalContentPart[];\n};\n\nexport class MultimodalEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageMultimodalEmbeddingModelId;\n\n private readonly config: VoyageEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return 128;\n }\n\n get supportsParallelCalls(): boolean {\n return false;\n }\n\n constructor(\n modelId: VoyageMultimodalEmbeddingModelId,\n config: VoyageEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n abortSignal,\n values,\n headers,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageMultimodalEmbeddingOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n modelId: this.modelId,\n provider: this.provider,\n values,\n });\n }\n\n const multimodalContent = embeddingOptions?.content;\n\n if (\n multimodalContent != null &&\n multimodalContent.length !== values.length\n ) {\n throw new Error(\n `The number of multimodal content entries (${multimodalContent.length}) must match the number of values (${values.length}).`,\n );\n }\n\n // Merge each text value with its per-index content parts (images), the\n // same way the Google provider merges text with multimodal parts.\n // https://docs.voyageai.com/reference/multimodal-embeddings-api\n const inputs: VoyageMultimodalInput[] = values.map((value, index) => {\n const valueParts = multimodalContent?.[index];\n const textPart: VoyageMultimodalContentPart[] = value\n ? [{ type: 'text', text: value }]\n : [];\n return {\n content:\n valueParts != null\n ? [...textPart, ...valueParts]\n : [{ type: 'text', text: value }],\n };\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n abortSignal,\n body: {\n inputs,\n model: this.modelId,\n input_type: embeddingOptions?.inputType,\n truncation: embeddingOptions?.truncation,\n output_encoding: embeddingOptions?.outputEncoding,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n fetch: this.config.fetch,\n headers: combineHeaders(this.config.headers(), headers),\n successfulResponseHandler: createJsonResponseHandler(\n voyageMultimodalEmbeddingResponseSchema,\n ),\n url: `${this.config.baseURL}/multimodalembeddings`,\n });\n\n return {\n embeddings: response.data.map((item) => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.total_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n warnings: [],\n };\n }\n}\n\nconst voyageMultimodalEmbeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n object: z.literal('embedding'),\n embedding: z.array(z.number()),\n index: z.number(),\n }),\n ),\n usage: z.object({\n text_tokens: z.number().nullish(),\n image_pixels: z.number().nullish(),\n total_tokens: z.number(),\n }),\n model: z.string(),\n});\n","import { z } from 'zod/v4';\n\nexport type VoyageMultimodalEmbeddingModelId =\n | 'voyage-multimodal-3.5'\n | 'voyage-multimodal-3'\n | (string & {});\n\n/**\n * A single multimodal content part, mirroring the Voyage multimodal\n * embeddings API content items.\n *\n * https://docs.voyageai.com/reference/multimodal-embeddings-api\n */\nconst voyageMultimodalContentPart = z.union([\n z.object({ type: z.literal('text'), text: z.string() }),\n z.object({ type: z.literal('image_url'), image_url: z.string() }),\n z.object({ type: z.literal('image_base64'), image_base64: z.string() }),\n]);\n\nexport type VoyageMultimodalContentPart = z.infer<\n typeof voyageMultimodalContentPart\n>;\n\nexport const voyageMultimodalEmbeddingOptions = z.object({\n /**\n * Type of the input.\n * Defaults to \"query\".\n *\n * When input_type is specified as \"query\" or \"document\", Voyage automatically prepends a prompt\n * to your inputs before vectorize them, creating vectors more tailored for retrieval/search tasks.\n *\n * For retrieval/search purposes where a query is used to search through documents, we recommend\n * specifying whether your inputs are queries or documents. Since inputs can be multimodal,\n * \"queries\" and \"documents\" can be text, images, or an interleaving of both modalities.\n *\n * For transparency, the following prompts are prepended:\n * - For \"query\": \"Represent the query for retrieving supporting documents: \"\n * - For \"document\": \"Represent the document for retrieval: \"\n */\n\n inputType: z.enum(['query', 'document']).optional(),\n\n /**\n * The data type for the resulting output embeddings.\n *\n * Defaults to null.\n *\n * - If null, the embeddings are represented as a list of floating-point numbers.\n * - If base64, the embeddings are represented as a Base64-encoded NumPy array of single-precision floats.\n *\n * https://docs.voyageai.com/docs/faq#what-is-quantization-and-output-data-types\n */\n outputEncoding: z.enum(['base64']).optional(),\n\n /**\n * Whether to truncate the input texts to fit within the context length.\n *\n * Defaults to true.\n */\n truncation: z.boolean().optional(),\n\n /**\n * Per-value multimodal content parts for embedding non-text content\n * (images). Each entry corresponds to the embedding value at the same\n * index and its parts are merged after the text value in the request.\n * Use `null` for entries that are text-only.\n *\n * The array length must match the number of values being embedded.\n *\n * https://docs.voyageai.com/reference/multimodal-embeddings-api\n */\n content: z\n .array(z.array(voyageMultimodalContentPart).min(1).nullable())\n .optional(),\n});\n\nexport type VoyageMultimodalEmbeddingOptions = z.infer<\n typeof voyageMultimodalEmbeddingOptions\n>;\n","import type { RerankingModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n type FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { voyageFailedResponseHandler } from '@/voyage-error';\nimport {\n type VoyageRerankingInput,\n voyageRerankingResponseSchema,\n} from '@/reranking/voyage-reranking-api';\nimport {\n type VoyageRerankingModelId,\n voyageRerankingOptionsSchema,\n} from '@/reranking/voyage-reranking-options';\n\ntype VoyageRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: VoyageRerankingModelId;\n\n private readonly config: VoyageRerankingConfig;\n\n constructor(modelId: VoyageRerankingModelId, config: VoyageRerankingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n // current implementation is based on the API:https://docs.voyageai.com/reference/reranker-api\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV3['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV3['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageRerankingOptionsSchema,\n });\n\n const warnings: SharedV3Warning[] = [];\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n query,\n documents:\n documents.type === 'text'\n ? documents.values\n : documents.values.map((value) => JSON.stringify(value)),\n top_k: topN,\n return_documents: rerankingOptions?.returnDocuments ?? false,\n truncation: rerankingOptions?.truncation ?? true,\n } satisfies VoyageRerankingInput,\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageRerankingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n ranking: response.data.map((result) => ({\n index: result.index,\n relevanceScore: result.relevance_score,\n })),\n warnings: warnings.length > 0 ? warnings : undefined,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.voyageai.com/reference/reranker-api\nexport type VoyageRerankingInput = {\n model: string;\n query: string;\n documents: string[];\n top_k: number | undefined;\n return_documents: boolean;\n truncation: boolean;\n};\n\nexport const voyageRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n object: z.literal('list'),\n data: z.array(\n z.object({\n relevance_score: z.number(),\n index: z.number(),\n }),\n ),\n model: z.string(),\n usage: z.object({\n total_tokens: z.number(),\n }),\n }),\n ),\n);\n","import type { FlexibleSchema } from '@ai-sdk/provider-utils';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.voyageai.com/docs/reranker\nexport type VoyageRerankingModelId =\n | 'rerank-2.5'\n | 'rerank-2.5-lite'\n | 'rerank-2'\n | 'rerank-2-lite'\n | 'rerank-1'\n | 'rerank-lite-1'\n | (string & {});\n\nexport type VoyageRerankingOptions = {\n /**\n * Whether to return the documents in the response. Defaults to false.\n *\n * If false, the API will return a list of {\"index\", \"relevance_score\"} where \"index\" refers to\n * the index of a document within the input list.\n * If true, the API will return a list of {\"index\", \"document\", \"relevance_score\"} where \"document\"\n * is the corresponding document from the input list.\n *\n * @default false\n */\n returnDocuments?: boolean;\n\n /**\n * Whether to truncate the input to satisfy the \"context length limit\" on the query\n * and the documents. Defaults to true.\n *\n * If true, the query and documents will be truncated to fit within the context length limit,\n * before processed by the reranker model.\n *\n * If false, an error will be raised when the query exceeds 8,000 tokens for rerank-2.5\n * and rerank-2.5-lite; 4,000 tokens for rerank-2; 2,000 tokens for rerank-2-lite and rerank-1;\n * and 1,000 tokens for rerank-lite-1, or the sum of the number of tokens in the query and the\n * number of tokens in any single document exceeds 32,000 for rerank-2.5 and rerank-2.5-lite;\n * 16,000 for rerank-2; 8,000 for rerank-2-lite and rerank-1; and 4,000 for rerank-lite-1.\n *\n * @default true\n */\n truncation?: boolean;\n};\n\nexport const voyageRerankingOptionsSchema: FlexibleSchema<VoyageRerankingOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n returnDocuments: z.boolean().optional(),\n truncation: z.boolean().optional(),\n }),\n ),\n );\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOA,IAAAA,yBAIO;;;ACXP,sBAGO;AACP,IAAAC,yBAMO;AACP,IAAAC,aAAkB;;;ACXlB,gBAAkB;AA6BX,IAAM,yBAAyB,YAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO7C,WAAW,YAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBlD,iBAAiB,YAAE,OAAO,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBrC,aAAa,YACV,KAAK,CAAC,SAAS,QAAQ,SAAS,UAAU,SAAS,CAAC,EACpD,SAAS;AAAA;AAAA;AAAA;AAAA,EAKZ,YAAY,YAAE,QAAQ,EAAE,SAAS;AACnC,CAAC;;;AClFD,4BAA+C;AAC/C,IAAAC,aAAkB;AAElB,IAAM,wBAAwB,aAAE,OAAO;AAAA,EACrC,OAAO,aAAE,OAAO;AAAA,IACd,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,SAAS,aAAE,OAAO;AAAA,IAClB,OAAO,aAAE,IAAI,EAAE,SAAS;AAAA,IACxB,MAAM,aAAE,OAAO;AAAA,EACjB,CAAC;AACH,CAAC;AAIM,IAAM,kCAA8B,sDAA+B;AAAA,EACxE,aAAa;AAAA,EACb,gBAAgB,CAAC,SAAS,KAAK,MAAM;AACvC,CAAC;;;AFSM,IAAM,uBAAN,MAAuD;AAAA,EACnD,uBAAuB;AAAA,EACvB;AAAA,EAEQ;AAAA,EAEjB,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,uBAA+B;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,wBAAiC;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,SAAiC,QAA+B;AAC1E,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,OAAO,SAAS,KAAK,sBAAsB;AAC7C,YAAM,IAAI,mDAAmC;AAAA,QAC3C,sBAAsB,KAAK;AAAA,QAC3B,SAAS,KAAK;AAAA,QACd,UAAU,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,OAAO,KAAK;AAAA,QACZ,YAAY,kBAAkB;AAAA,QAC9B,YAAY,kBAAkB;AAAA,QAC9B,kBAAkB,kBAAkB;AAAA,QACpC,cAAc,kBAAkB;AAAA,MAClC;AAAA,MACA,uBAAuB;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,MACnB,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,MACL,YAAY,SAAS,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS;AAAA,MACtD,OAAO,SAAS,QACZ,EAAE,QAAQ,SAAS,MAAM,aAAa,IACtC;AAAA,MACJ,UAAU,EAAE,SAAS,iBAAiB,MAAM,SAAS;AAAA,MACrD,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;AAIA,IAAM,oCAAoC,aAAE,OAAO;AAAA,EACjD,MAAM,aAAE,MAAM,aAAE,OAAO,EAAE,WAAW,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAAA,EAC1D,OAAO,aAAE,OAAO,EAAE,cAAc,aAAE,OAAO,EAAE,CAAC,EAAE,QAAQ;AACxD,CAAC;;;AG/GD,IAAAC,mBAGO;AACP,IAAAC,yBAMO;;;ACVP,IAAAC,aAAkB;AAalB,IAAM,8BAA8B,aAAE,MAAM;AAAA,EAC1C,aAAE,OAAO,EAAE,MAAM,aAAE,QAAQ,MAAM,GAAG,MAAM,aAAE,OAAO,EAAE,CAAC;AAAA,EACtD,aAAE,OAAO,EAAE,MAAM,aAAE,QAAQ,WAAW,GAAG,WAAW,aAAE,OAAO,EAAE,CAAC;AAAA,EAChE,aAAE,OAAO,EAAE,MAAM,aAAE,QAAQ,cAAc,GAAG,cAAc,aAAE,OAAO,EAAE,CAAC;AACxE,CAAC;AAMM,IAAM,mCAAmC,aAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBvD,WAAW,aAAE,KAAK,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYlD,gBAAgB,aAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5C,YAAY,aAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYjC,SAAS,aACN,MAAM,aAAE,MAAM,2BAA2B,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAC5D,SAAS;AACd,CAAC;;;ADxDD,IAAAC,aAAkB;AAeX,IAAM,2BAAN,MAA2D;AAAA,EACvD,uBAAuB;AAAA,EACvB;AAAA,EAEQ;AAAA,EAEjB,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,uBAA+B;AACjC,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,wBAAiC;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,YACE,SACA,QACA;AACA,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,OAAO,SAAS,KAAK,sBAAsB;AAC7C,YAAM,IAAI,oDAAmC;AAAA,QAC3C,sBAAsB,KAAK;AAAA,QAC3B,SAAS,KAAK;AAAA,QACd,UAAU,KAAK;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,oBAAoB,kBAAkB;AAE5C,QACE,qBAAqB,QACrB,kBAAkB,WAAW,OAAO,QACpC;AACA,YAAM,IAAI;AAAA,QACR,6CAA6C,kBAAkB,MAAM,sCAAsC,OAAO,MAAM;AAAA,MAC1H;AAAA,IACF;AAKA,UAAM,SAAkC,OAAO,IAAI,CAAC,OAAO,UAAU;AACnE,YAAM,aAAa,oBAAoB,KAAK;AAC5C,YAAM,WAA0C,QAC5C,CAAC,EAAE,MAAM,QAAQ,MAAM,MAAM,CAAC,IAC9B,CAAC;AACL,aAAO;AAAA,QACL,SACE,cAAc,OACV,CAAC,GAAG,UAAU,GAAG,UAAU,IAC3B,CAAC,EAAE,MAAM,QAAQ,MAAM,MAAM,CAAC;AAAA,MACtC;AAAA,IACF,CAAC;AAED,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,YAAY,kBAAkB;AAAA,QAC9B,YAAY,kBAAkB;AAAA,QAC9B,iBAAiB,kBAAkB;AAAA,MACrC;AAAA,MACA,uBAAuB;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,MACnB,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,MACL,YAAY,SAAS,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS;AAAA,MACtD,OAAO,SAAS,QACZ,EAAE,QAAQ,SAAS,MAAM,aAAa,IACtC;AAAA,MACJ,UAAU,EAAE,SAAS,iBAAiB,MAAM,SAAS;AAAA,MACrD,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;AAEA,IAAM,0CAA0C,aAAE,OAAO;AAAA,EACvD,MAAM,aAAE;AAAA,IACN,aAAE,OAAO;AAAA,MACP,QAAQ,aAAE,QAAQ,WAAW;AAAA,MAC7B,WAAW,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,MAC7B,OAAO,aAAE,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EACA,OAAO,aAAE,OAAO;AAAA,IACd,aAAa,aAAE,OAAO,EAAE,QAAQ;AAAA,IAChC,cAAc,aAAE,OAAO,EAAE,QAAQ;AAAA,IACjC,cAAc,aAAE,OAAO;AAAA,EACzB,CAAC;AAAA,EACD,OAAO,aAAE,OAAO;AAClB,CAAC;;;AE3JD,IAAAC,yBAMO;;;ACPP,IAAAC,yBAAsC;AACtC,IAAAC,aAAkB;AAYX,IAAM,oCAAgC;AAAA,EAAW,UACtD;AAAA,IACE,aAAE,OAAO;AAAA,MACP,QAAQ,aAAE,QAAQ,MAAM;AAAA,MACxB,MAAM,aAAE;AAAA,QACN,aAAE,OAAO;AAAA,UACP,iBAAiB,aAAE,OAAO;AAAA,UAC1B,OAAO,aAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,OAAO,aAAE,OAAO;AAAA,MAChB,OAAO,aAAE,OAAO;AAAA,QACd,cAAc,aAAE,OAAO;AAAA,MACzB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;AC5BA,IAAAC,yBAAsC;AACtC,IAAAC,aAAkB;AA2CX,IAAM,mCACX;AAAA,EAAW,UACT;AAAA,IACE,aAAE,OAAO;AAAA,MACP,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AAAA,MACtC,YAAY,aAAE,QAAQ,EAAE,SAAS;AAAA,IACnC,CAAC;AAAA,EACH;AACF;;;AF5BK,IAAM,uBAAN,MAAuD;AAAA,EACnD,uBAAuB;AAAA,EACvB;AAAA,EAEQ;AAAA,EAEjB,YAAY,SAAiC,QAA+B;AAC1E,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA,EAGA,MAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AACA,UAAM,mBAAmB,UAAM,6CAAqB;AAAA,MAClD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,WAA8B,CAAC;AAErC,UAAM;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,IAAI,UAAM,sCAAc;AAAA,MACtB,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,aAAS,uCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,WACE,UAAU,SAAS,SACf,UAAU,SACV,UAAU,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,KAAK,CAAC;AAAA,QAC3D,OAAO;AAAA,QACP,kBAAkB,kBAAkB,mBAAmB;AAAA,QACvD,YAAY,kBAAkB,cAAc;AAAA,MAC9C;AAAA,MACA,uBAAuB;AAAA,MACvB,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,SAAS,SAAS,KAAK,IAAI,CAAC,YAAY;AAAA,QACtC,OAAO,OAAO;AAAA,QACd,gBAAgB,OAAO;AAAA,MACzB,EAAE;AAAA,MACF,UAAU,SAAS,SAAS,IAAI,WAAW;AAAA,MAC3C,UAAU;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;ANbO,SAAS,aACd,UAAkC,CAAC,GACnB;AAChB,QAAM,cACJ,6CAAqB,QAAQ,OAAO,KAAK;AAE3C,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,mCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,iCAAiC,CACrC,YAEA,IAAI,yBAAyB,SAAS;AAAA,IACpC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,uBAAuB,CAAC,YAC5B,IAAI,qBAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,WAAW,SAAU,SAAiC;AAC1D,QAAI,YAAY;AACd,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,qBAAqB,OAAO;AAAA,EACrC;AAEA,WAAS,iBAAiB;AAC1B,WAAS,qBAAqB;AAC9B,WAAS,2BAA2B;AACpC,WAAS,sBAAsB;AAE/B,WAAS,OAAO,SAAS,gBAAgB,MAAuB;AAC9D,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AACA,WAAS,aAAa,MAAoB;AACxC,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,WAAS,YAAY;AACrB,WAAS,iBAAiB;AAE1B,SAAO;AACT;AAKO,IAAM,SAAS,aAAa;","names":["import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider","import_provider_utils","import_v4","import_v4","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4"]}