@ai-sdk/voyage 2.0.57 → 2.0.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @ai-sdk/voyage
2
2
 
3
+ ## 2.0.59
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [9667bf2]
8
+ - Updated dependencies [e57803c]
9
+ - Updated dependencies [81663cc]
10
+ - @ai-sdk/provider-utils@5.0.59
11
+ - @ai-sdk/provider@4.0.27
12
+
13
+ ## 2.0.58
14
+
15
+ ### Patch Changes
16
+
17
+ - 5cf13d2: feat: map the top level embedding dimensions to provider settings
18
+ - Updated dependencies [4dbc902]
19
+ - @ai-sdk/provider@4.0.26
20
+ - @ai-sdk/provider-utils@5.0.58
21
+
3
22
  ## 2.0.57
4
23
 
5
24
  ### Patch Changes
package/dist/index.js CHANGED
@@ -43,7 +43,7 @@ var VoyageEmbeddingModel = class VoyageEmbeddingModel {
43
43
  get provider() {
44
44
  return this.config.provider;
45
45
  }
46
- async doEmbed({ values, headers, abortSignal, providerOptions }) {
46
+ async doEmbed({ values, dimensions, headers, abortSignal, providerOptions }) {
47
47
  const embeddingOptions = await parseProviderOptions({
48
48
  provider: "voyage",
49
49
  providerOptions,
@@ -63,7 +63,7 @@ var VoyageEmbeddingModel = class VoyageEmbeddingModel {
63
63
  model: this.modelId,
64
64
  input_type: embeddingOptions?.inputType,
65
65
  truncation: embeddingOptions?.truncation,
66
- output_dimension: embeddingOptions?.outputDimension,
66
+ output_dimension: embeddingOptions?.outputDimension ?? dimensions,
67
67
  output_dtype: embeddingOptions?.outputDtype
68
68
  },
69
69
  failedResponseHandler: voyageFailedResponseHandler,
@@ -155,7 +155,7 @@ const voyageRerankingResponseSchema = lazySchema(() => zodSchema(z.object({ data
155
155
  })) })));
156
156
  //#endregion
157
157
  //#region src/version.ts
158
- const VERSION = "2.0.57";
158
+ const VERSION = "2.0.59";
159
159
  //#endregion
160
160
  //#region src/voyage-provider.ts
161
161
  function createVoyage(options = {}) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/voyage-embedding-model-options.ts","../src/voyage-error.ts","../src/voyage-embedding-model.ts","../src/reranking/voyage-reranking-model-options.ts","../src/reranking/voyage-reranking-model.ts","../src/version.ts","../src/voyage-provider.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n | 'voyage-4-large'\n | 'voyage-4'\n | 'voyage-4-lite'\n | 'voyage-4-nano'\n | 'voyage-code-3.5'\n | 'voyage-code-3'\n | 'voyage-3-large'\n | 'voyage-3.5'\n | 'voyage-3.5-lite'\n | 'voyage-3'\n | 'voyage-3-lite'\n | 'voyage-finance-2'\n | 'voyage-law-2'\n | 'voyage-multilingual-2'\n | 'voyage-code-2'\n | 'voyage-2'\n | (string & {});\n\nexport const voyageEmbeddingModelOptions = z.object({\n inputType: z.enum(['query', 'document']).nullable().optional(),\n truncation: z.boolean().optional(),\n outputDimension: z.number().optional(),\n outputDtype: z\n .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n .optional(),\n});\n\nexport type VoyageEmbeddingModelOptions = z.infer<\n typeof voyageEmbeddingModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n detail: z.string(),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: voyageErrorDataSchema,\n errorToMessage: data => data.detail,\n});\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n voyageEmbeddingModelOptions,\n type VoyageEmbeddingModelId,\n} from './voyage-embedding-model-options';\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 EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: VoyageEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 128;\n readonly supportsParallelCalls = true;\n\n private readonly config: VoyageEmbeddingConfig;\n\n static [WORKFLOW_SERIALIZE](model: VoyageEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: VoyageEmbeddingModelId;\n config: VoyageEmbeddingConfig;\n }) {\n return new VoyageEmbeddingModel(options.modelId, options.config);\n }\n\n constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageEmbeddingModelOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers?.(), headers),\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 successfulResponseHandler: createJsonResponseHandler(\n voyageEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.data\n .sort((a, b) => a.index - b.index)\n .map(item => item.embedding),\n usage: { tokens: response.usage?.total_tokens ?? 0 },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\nconst voyageEmbeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n index: z.number(),\n }),\n ),\n model: z.string(),\n usage: z\n .object({\n total_tokens: z.number(),\n })\n .nullish(),\n});\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\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 VoyageRerankingModelOptions = {\n returnDocuments?: boolean;\n truncation?: boolean;\n};\n\nexport const voyageRerankingModelOptionsSchema: FlexibleSchema<VoyageRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n returnDocuments: z.boolean().optional(),\n truncation: z.boolean().optional(),\n }),\n ),\n );\n","import type { RerankingModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n zodSchema,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n voyageRerankingModelOptionsSchema,\n type VoyageRerankingModelId,\n} from './voyage-reranking-model-options';\ntype VoyageRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\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 async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV4['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageRerankingModelOptionsSchema,\n });\n\n const warnings: SharedV4Warning[] = [];\n\n if (documents.type === 'object') {\n warnings.push({\n type: 'compatibility',\n feature: 'object documents',\n details: 'Object documents are converted to strings.',\n });\n }\n\n const stringValues =\n documents.type === 'text'\n ? documents.values\n : documents.values.map(value => JSON.stringify(value));\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 query,\n documents: stringValues,\n model: this.modelId,\n top_k: topN,\n return_documents: rerankingOptions?.returnDocuments,\n truncation: rerankingOptions?.truncation,\n },\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,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n\nconst voyageRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n }),\n ),\n);\n","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n NoSuchModelError,\n type EmbeddingModelV4,\n type RerankingModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-model-options';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-model-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport { VERSION } from './version';\n\nexport interface VoyageProvider extends ProviderV4 {\n embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n reranking(modelId: VoyageRerankingModelId): RerankingModelV4;\n rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;\n}\n\nexport interface VoyageProviderSettings {\n baseURL?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n fetch?: FetchFunction;\n}\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'VOYAGE_API_KEY',\n description: 'Voyage',\n })}`,\n ...options.headers,\n },\n `ai-sdk-voyage/${VERSION}`,\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 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: VoyageProvider = {\n specificationVersion: 'v4' as const,\n embedding: createEmbeddingModel,\n embeddingModel: createEmbeddingModel,\n textEmbedding: createEmbeddingModel,\n textEmbeddingModel: createEmbeddingModel,\n reranking: createRerankingModel,\n rerankingModel: createRerankingModel,\n\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n },\n\n imageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n },\n };\n\n return provider;\n}\n\nexport const voyage = createVoyage();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/voyage-embedding-model-options.ts","../src/voyage-error.ts","../src/voyage-embedding-model.ts","../src/reranking/voyage-reranking-model-options.ts","../src/reranking/voyage-reranking-model.ts","../src/version.ts","../src/voyage-provider.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport type VoyageEmbeddingModelId =\n | 'voyage-4-large'\n | 'voyage-4'\n | 'voyage-4-lite'\n | 'voyage-4-nano'\n | 'voyage-code-3.5'\n | 'voyage-code-3'\n | 'voyage-3-large'\n | 'voyage-3.5'\n | 'voyage-3.5-lite'\n | 'voyage-3'\n | 'voyage-3-lite'\n | 'voyage-finance-2'\n | 'voyage-law-2'\n | 'voyage-multilingual-2'\n | 'voyage-code-2'\n | 'voyage-2'\n | (string & {});\n\nexport const voyageEmbeddingModelOptions = z.object({\n inputType: z.enum(['query', 'document']).nullable().optional(),\n truncation: z.boolean().optional(),\n outputDimension: z.number().optional(),\n outputDtype: z\n .enum(['float', 'int8', 'uint8', 'binary', 'ubinary'])\n .optional(),\n});\n\nexport type VoyageEmbeddingModelOptions = z.infer<\n typeof voyageEmbeddingModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst voyageErrorDataSchema = z.object({\n detail: z.string(),\n});\n\nexport type VoyageErrorData = z.infer<typeof voyageErrorDataSchema>;\n\nexport const voyageFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: voyageErrorDataSchema,\n errorToMessage: data => data.detail,\n});\n","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n voyageEmbeddingModelOptions,\n type VoyageEmbeddingModelId,\n} from './voyage-embedding-model-options';\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 EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: VoyageEmbeddingModelId;\n\n readonly maxEmbeddingsPerCall = 128;\n readonly supportsParallelCalls = true;\n\n private readonly config: VoyageEmbeddingConfig;\n\n static [WORKFLOW_SERIALIZE](model: VoyageEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: VoyageEmbeddingModelId;\n config: VoyageEmbeddingConfig;\n }) {\n return new VoyageEmbeddingModel(options.modelId, options.config);\n }\n\n constructor(modelId: VoyageEmbeddingModelId, config: VoyageEmbeddingConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n dimensions,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n > {\n const embeddingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageEmbeddingModelOptions,\n });\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers?.(), headers),\n body: {\n input: values,\n model: this.modelId,\n input_type: embeddingOptions?.inputType,\n truncation: embeddingOptions?.truncation,\n output_dimension: embeddingOptions?.outputDimension ?? dimensions,\n output_dtype: embeddingOptions?.outputDtype,\n },\n failedResponseHandler: voyageFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n voyageEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.data\n .sort((a, b) => a.index - b.index)\n .map(item => item.embedding),\n usage: { tokens: response.usage?.total_tokens ?? 0 },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\nconst voyageEmbeddingResponseSchema = z.object({\n data: z.array(\n z.object({\n embedding: z.array(z.number()),\n index: z.number(),\n }),\n ),\n model: z.string(),\n usage: z\n .object({\n total_tokens: z.number(),\n })\n .nullish(),\n});\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\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 VoyageRerankingModelOptions = {\n returnDocuments?: boolean;\n truncation?: boolean;\n};\n\nexport const voyageRerankingModelOptionsSchema: FlexibleSchema<VoyageRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n returnDocuments: z.boolean().optional(),\n truncation: z.boolean().optional(),\n }),\n ),\n );\n","import type { RerankingModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n zodSchema,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { voyageFailedResponseHandler } from '../voyage-error';\nimport {\n voyageRerankingModelOptionsSchema,\n type VoyageRerankingModelId,\n} from './voyage-reranking-model-options';\ntype VoyageRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class VoyageRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\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 async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV4['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'voyage',\n providerOptions,\n schema: voyageRerankingModelOptionsSchema,\n });\n\n const warnings: SharedV4Warning[] = [];\n\n if (documents.type === 'object') {\n warnings.push({\n type: 'compatibility',\n feature: 'object documents',\n details: 'Object documents are converted to strings.',\n });\n }\n\n const stringValues =\n documents.type === 'text'\n ? documents.values\n : documents.values.map(value => JSON.stringify(value));\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 query,\n documents: stringValues,\n model: this.modelId,\n top_k: topN,\n return_documents: rerankingOptions?.returnDocuments,\n truncation: rerankingOptions?.truncation,\n },\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,\n response: {\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n\nconst voyageRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n }),\n ),\n);\n","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n NoSuchModelError,\n type EmbeddingModelV4,\n type RerankingModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VoyageEmbeddingModel } from './voyage-embedding-model';\nimport type { VoyageEmbeddingModelId } from './voyage-embedding-model-options';\nimport type { VoyageRerankingModelId } from './reranking/voyage-reranking-model-options';\nimport { VoyageRerankingModel } from './reranking/voyage-reranking-model';\nimport { VERSION } from './version';\n\nexport interface VoyageProvider extends ProviderV4 {\n embedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n embeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n textEmbedding(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n textEmbeddingModel(modelId: VoyageEmbeddingModelId): EmbeddingModelV4;\n reranking(modelId: VoyageRerankingModelId): RerankingModelV4;\n rerankingModel(modelId: VoyageRerankingModelId): RerankingModelV4;\n}\n\nexport interface VoyageProviderSettings {\n baseURL?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n fetch?: FetchFunction;\n}\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'VOYAGE_API_KEY',\n description: 'Voyage',\n })}`,\n ...options.headers,\n },\n `ai-sdk-voyage/${VERSION}`,\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 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: VoyageProvider = {\n specificationVersion: 'v4' as const,\n embedding: createEmbeddingModel,\n embeddingModel: createEmbeddingModel,\n textEmbedding: createEmbeddingModel,\n textEmbeddingModel: createEmbeddingModel,\n reranking: createRerankingModel,\n rerankingModel: createRerankingModel,\n\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n },\n\n imageModel: (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n },\n };\n\n return provider;\n}\n\nexport const voyage = createVoyage();\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/voyage",
3
- "version": "2.0.57",
3
+ "version": "2.0.59",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -25,8 +25,8 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "4.0.25",
29
- "@ai-sdk/provider-utils": "5.0.57"
28
+ "@ai-sdk/provider": "4.0.27",
29
+ "@ai-sdk/provider-utils": "5.0.59"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@ai-sdk/test-server": "2.0.4",
@@ -60,6 +60,7 @@ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
60
60
 
61
61
  async doEmbed({
62
62
  values,
63
+ dimensions,
63
64
  headers,
64
65
  abortSignal,
65
66
  providerOptions,
@@ -93,7 +94,7 @@ export class VoyageEmbeddingModel implements EmbeddingModelV4 {
93
94
  model: this.modelId,
94
95
  input_type: embeddingOptions?.inputType,
95
96
  truncation: embeddingOptions?.truncation,
96
- output_dimension: embeddingOptions?.outputDimension,
97
+ output_dimension: embeddingOptions?.outputDimension ?? dimensions,
97
98
  output_dtype: embeddingOptions?.outputDtype,
98
99
  },
99
100
  failedResponseHandler: voyageFailedResponseHandler,