@mastra/voyageai 0.0.0

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/dist/index.js ADDED
@@ -0,0 +1,552 @@
1
+ import { VoyageAIClient } from 'voyageai';
2
+ export { VoyageAIClient } from 'voyageai';
3
+
4
+ // src/types.ts
5
+ var TEXT_MODEL_INFO = {
6
+ "voyage-4-large": {
7
+ maxInputTokens: 12e4,
8
+ defaultDimension: 1024,
9
+ supportedDimensions: [256, 512, 1024, 2048],
10
+ isMultimodal: false,
11
+ isContextualized: false
12
+ },
13
+ "voyage-4": {
14
+ maxInputTokens: 32e4,
15
+ defaultDimension: 1024,
16
+ supportedDimensions: [256, 512, 1024, 2048],
17
+ isMultimodal: false,
18
+ isContextualized: false
19
+ },
20
+ "voyage-4-lite": {
21
+ maxInputTokens: 1e6,
22
+ defaultDimension: 1024,
23
+ supportedDimensions: [256, 512, 1024, 2048],
24
+ isMultimodal: false,
25
+ isContextualized: false
26
+ },
27
+ "voyage-3-large": {
28
+ maxInputTokens: 12e4,
29
+ defaultDimension: 1024,
30
+ supportedDimensions: [256, 512, 1024, 2048],
31
+ isMultimodal: false,
32
+ isContextualized: false
33
+ },
34
+ "voyage-3.5": {
35
+ maxInputTokens: 32e4,
36
+ defaultDimension: 1024,
37
+ supportedDimensions: [256, 512, 1024, 2048],
38
+ isMultimodal: false,
39
+ isContextualized: false
40
+ },
41
+ "voyage-3.5-lite": {
42
+ maxInputTokens: 1e6,
43
+ defaultDimension: 1024,
44
+ supportedDimensions: [256, 512, 1024, 2048],
45
+ isMultimodal: false,
46
+ isContextualized: false
47
+ },
48
+ "voyage-code-3": {
49
+ maxInputTokens: 32e3,
50
+ defaultDimension: 1024,
51
+ supportedDimensions: [256, 512, 1024, 2048],
52
+ isMultimodal: false,
53
+ isContextualized: false
54
+ },
55
+ "voyage-finance-2": {
56
+ maxInputTokens: 32e3,
57
+ defaultDimension: 1024,
58
+ isMultimodal: false,
59
+ isContextualized: false
60
+ },
61
+ "voyage-law-2": {
62
+ maxInputTokens: 32e3,
63
+ defaultDimension: 1024,
64
+ isMultimodal: false,
65
+ isContextualized: false
66
+ }
67
+ };
68
+ var MULTIMODAL_MODEL_INFO = {
69
+ "voyage-multimodal-3": {
70
+ maxInputTokens: 32e3,
71
+ defaultDimension: 1024,
72
+ isMultimodal: true,
73
+ isContextualized: false
74
+ },
75
+ "voyage-multimodal-3.5": {
76
+ maxInputTokens: 32e3,
77
+ defaultDimension: 1024,
78
+ isMultimodal: true,
79
+ isContextualized: false
80
+ }
81
+ };
82
+ var CONTEXTUALIZED_MODEL_INFO = {
83
+ "voyage-context-3": {
84
+ maxInputTokens: 32e3,
85
+ defaultDimension: 1024,
86
+ supportedDimensions: [256, 512, 1024, 2048],
87
+ isMultimodal: false,
88
+ isContextualized: true
89
+ }
90
+ };
91
+ var RERANKER_MODEL_INFO = {
92
+ "rerank-2.5": {
93
+ contextLength: 32e3,
94
+ description: "Best quality with instruction-following support"
95
+ },
96
+ "rerank-2.5-lite": {
97
+ contextLength: 32e3,
98
+ description: "Optimized for latency and quality"
99
+ },
100
+ "rerank-2": {
101
+ contextLength: 16e3,
102
+ description: "Second-generation with multilingual support"
103
+ },
104
+ "rerank-2-lite": {
105
+ contextLength: 8e3,
106
+ description: "Second-generation, latency-optimized"
107
+ },
108
+ "rerank-1": {
109
+ contextLength: 8e3,
110
+ description: "First-generation, quality-focused"
111
+ },
112
+ "rerank-lite-1": {
113
+ contextLength: 4e3,
114
+ description: "First-generation, latency-optimized"
115
+ }
116
+ };
117
+ function toSdkInputType(inputType) {
118
+ if (inputType === null) return void 0;
119
+ return inputType;
120
+ }
121
+ async function createTokenAwareBatches(client, model, texts, maxTokens, maxInputsPerBatch) {
122
+ const tokenResults = await client.tokenize(texts, model);
123
+ const batches = [];
124
+ let currentBatch = [];
125
+ let currentTokens = 0;
126
+ for (let i = 0; i < texts.length; i++) {
127
+ const tokenCount = tokenResults[i]?.ids.length ?? 0;
128
+ if (currentBatch.length > 0 && (currentTokens + tokenCount > maxTokens || currentBatch.length >= maxInputsPerBatch)) {
129
+ batches.push(currentBatch);
130
+ currentBatch = [];
131
+ currentTokens = 0;
132
+ }
133
+ currentBatch.push(texts[i]);
134
+ currentTokens += tokenCount;
135
+ }
136
+ if (currentBatch.length > 0) {
137
+ batches.push(currentBatch);
138
+ }
139
+ return batches;
140
+ }
141
+ var VoyageTextEmbeddingModelV2 = class {
142
+ constructor(config) {
143
+ this.specificationVersion = "v2";
144
+ this.provider = "voyage";
145
+ this.maxEmbeddingsPerCall = 1e3;
146
+ // VoyageAI supports up to 1000 inputs per API call
147
+ this.supportsParallelCalls = true;
148
+ this.modelId = config.model;
149
+ this.config = config;
150
+ this.maxInputTokens = TEXT_MODEL_INFO[config.model]?.maxInputTokens ?? 32e3;
151
+ const apiKey = config.apiKey || process.env.VOYAGE_API_KEY;
152
+ if (!apiKey) {
153
+ throw new Error(
154
+ "VoyageAI API key is required. Set VOYAGE_API_KEY environment variable or pass apiKey in config."
155
+ );
156
+ }
157
+ this.client = new VoyageAIClient({ apiKey });
158
+ }
159
+ /**
160
+ * Generate embeddings for the provided text values.
161
+ * Automatically splits inputs into token-aware batches when total tokens
162
+ * would exceed the model's limit.
163
+ */
164
+ async doEmbed(args) {
165
+ const { values, providerOptions } = args;
166
+ const inputType = providerOptions?.voyage?.inputType ?? this.config.inputType;
167
+ const outputDimension = providerOptions?.voyage?.outputDimension ?? this.config.outputDimension;
168
+ const outputDtype = providerOptions?.voyage?.outputDtype ?? this.config.outputDtype;
169
+ const truncation = providerOptions?.voyage?.truncation ?? this.config.truncation ?? true;
170
+ const batches = await createTokenAwareBatches(
171
+ this.client,
172
+ this.modelId,
173
+ values,
174
+ this.maxInputTokens,
175
+ this.maxEmbeddingsPerCall
176
+ );
177
+ const allEmbeddings = [];
178
+ for (const batch of batches) {
179
+ const response = await this.client.embed({
180
+ input: batch,
181
+ model: this.modelId,
182
+ inputType: toSdkInputType(inputType),
183
+ outputDimension,
184
+ outputDtype,
185
+ truncation
186
+ });
187
+ const embeddings = response.data?.sort((a, b) => (a.index ?? 0) - (b.index ?? 0)).map((item) => item.embedding ?? []) ?? [];
188
+ allEmbeddings.push(...embeddings);
189
+ }
190
+ return { embeddings: allEmbeddings };
191
+ }
192
+ };
193
+ var VoyageTextEmbeddingModelV3 = class {
194
+ constructor(config) {
195
+ this.specificationVersion = "v3";
196
+ this.provider = "voyage";
197
+ this.maxEmbeddingsPerCall = 1e3;
198
+ // VoyageAI supports up to 1000 inputs per API call
199
+ this.supportsParallelCalls = true;
200
+ this.modelId = config.model;
201
+ this.v2Model = new VoyageTextEmbeddingModelV2(config);
202
+ }
203
+ /**
204
+ * Generate embeddings for the provided text values
205
+ */
206
+ async doEmbed(args) {
207
+ const result = await this.v2Model.doEmbed(args);
208
+ return { ...result, warnings: [] };
209
+ }
210
+ };
211
+ function createVoyageTextEmbedding(config) {
212
+ const normalizedConfig = typeof config === "string" ? { model: config } : config;
213
+ return new VoyageTextEmbeddingModelV3(normalizedConfig);
214
+ }
215
+ function createVoyageTextEmbeddingV2(config) {
216
+ const normalizedConfig = typeof config === "string" ? { model: config } : config;
217
+ return new VoyageTextEmbeddingModelV2(normalizedConfig);
218
+ }
219
+ function toSdkContent(content) {
220
+ switch (content.type) {
221
+ case "text":
222
+ return content.text;
223
+ case "image_url":
224
+ return { type: "image_url", image_url: content.image_url };
225
+ case "image_base64":
226
+ return { type: "image_base64", image_base64: content.image_base64 };
227
+ case "video_url":
228
+ return { type: "video_url", video_url: content.video_url };
229
+ default:
230
+ throw new Error(`Unknown content type: ${content.type}`);
231
+ }
232
+ }
233
+ function toSdkInput(input) {
234
+ return input.content.map(toSdkContent);
235
+ }
236
+ function toSdkInputType2(inputType) {
237
+ if (inputType === null) return void 0;
238
+ return inputType;
239
+ }
240
+ var VoyageMultimodalEmbeddingModel = class {
241
+ constructor(config) {
242
+ this.provider = "voyage";
243
+ this.maxEmbeddingsPerCall = 1e3;
244
+ this.supportsParallelCalls = true;
245
+ this.modelId = config.model;
246
+ this.config = config;
247
+ const apiKey = config.apiKey || process.env.VOYAGE_API_KEY;
248
+ if (!apiKey) {
249
+ throw new Error(
250
+ "VoyageAI API key is required. Set VOYAGE_API_KEY environment variable or pass apiKey in config."
251
+ );
252
+ }
253
+ this.client = new VoyageAIClient({ apiKey });
254
+ }
255
+ /**
256
+ * Generate embeddings for multimodal inputs
257
+ *
258
+ * @param args.values - Array of multimodal inputs, each containing interleaved content
259
+ * @param args.providerOptions - Runtime options to override config
260
+ * @returns Object containing embeddings array
261
+ */
262
+ async doEmbed(args) {
263
+ const { values, providerOptions } = args;
264
+ const inputType = providerOptions?.voyage?.inputType ?? this.config.inputType;
265
+ const truncation = providerOptions?.voyage?.truncation ?? this.config.truncation ?? true;
266
+ const sdkInputs = values.map(toSdkInput);
267
+ const response = await this.client.multimodalEmbed({
268
+ inputs: sdkInputs,
269
+ model: this.modelId,
270
+ inputType: toSdkInputType2(inputType),
271
+ truncation
272
+ });
273
+ const embeddings = response.data?.sort((a, b) => (a.index ?? 0) - (b.index ?? 0)).map((item) => item.embedding ?? []) ?? [];
274
+ return { embeddings };
275
+ }
276
+ /**
277
+ * Generate a single embedding for a multimodal input
278
+ *
279
+ * @param input - Single multimodal input
280
+ * @returns Single embedding vector
281
+ */
282
+ async embedOne(input) {
283
+ const result = await this.doEmbed({ values: [input] });
284
+ return result.embeddings[0] ?? [];
285
+ }
286
+ };
287
+ function createVoyageMultimodalEmbedding(config) {
288
+ const normalizedConfig = typeof config === "string" ? { model: config } : config;
289
+ return new VoyageMultimodalEmbeddingModel(normalizedConfig);
290
+ }
291
+ function toSdkInputType3(inputType) {
292
+ if (inputType === null) return void 0;
293
+ return inputType;
294
+ }
295
+ var VoyageContextualizedEmbeddingModel = class {
296
+ constructor(config) {
297
+ this.provider = "voyage";
298
+ this.maxEmbeddingsPerCall = 1e3;
299
+ // Max inputs
300
+ this.maxTotalChunks = 16e3;
301
+ // Max total chunks across all inputs
302
+ this.supportsParallelCalls = true;
303
+ this.modelId = config.model;
304
+ this.config = config;
305
+ const apiKey = config.apiKey || process.env.VOYAGE_API_KEY;
306
+ if (!apiKey) {
307
+ throw new Error(
308
+ "VoyageAI API key is required. Set VOYAGE_API_KEY environment variable or pass apiKey in config."
309
+ );
310
+ }
311
+ this.client = new VoyageAIClient({ apiKey });
312
+ }
313
+ /**
314
+ * Generate contextualized embeddings for grouped chunks
315
+ *
316
+ * @param args.values - Nested array where each inner array contains chunks from the same document
317
+ * @param args.inputType - 'query' for search queries, 'document' for content being indexed
318
+ * @param args.outputDimension - Output embedding dimension (256, 512, 1024, or 2048)
319
+ * @param args.outputDtype - Output data type
320
+ * @param args.providerOptions - Runtime options to override config
321
+ * @returns Object containing flattened embeddings array (one per chunk across all documents)
322
+ */
323
+ async doEmbed(args) {
324
+ const { values, providerOptions } = args;
325
+ const inputType = args.inputType ?? providerOptions?.voyage?.inputType ?? this.config.inputType;
326
+ const outputDimension = args.outputDimension ?? providerOptions?.voyage?.outputDimension ?? this.config.outputDimension;
327
+ const outputDtype = args.outputDtype ?? providerOptions?.voyage?.outputDtype ?? this.config.outputDtype;
328
+ const response = await this.client.contextualizedEmbed({
329
+ inputs: values,
330
+ model: this.modelId,
331
+ inputType: toSdkInputType3(inputType),
332
+ outputDimension,
333
+ outputDtype
334
+ });
335
+ const sortedData = [...response.data ?? []].sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
336
+ const allEmbeddings = [];
337
+ const chunkCounts = [];
338
+ for (const item of sortedData) {
339
+ const chunkData = item.data ?? [];
340
+ const docEmbeddings = chunkData.map((chunk) => chunk.embedding ?? []);
341
+ chunkCounts.push(docEmbeddings.length);
342
+ allEmbeddings.push(...docEmbeddings);
343
+ }
344
+ return { embeddings: allEmbeddings, chunkCounts };
345
+ }
346
+ /**
347
+ * Generate contextualized embeddings and return grouped by document
348
+ *
349
+ * @param args - Same as doEmbed
350
+ * @returns Embeddings grouped by document
351
+ */
352
+ async doEmbedGrouped(args) {
353
+ const { values, providerOptions } = args;
354
+ const inputType = args.inputType ?? providerOptions?.voyage?.inputType ?? this.config.inputType;
355
+ const outputDimension = args.outputDimension ?? providerOptions?.voyage?.outputDimension ?? this.config.outputDimension;
356
+ const outputDtype = args.outputDtype ?? providerOptions?.voyage?.outputDtype ?? this.config.outputDtype;
357
+ const response = await this.client.contextualizedEmbed({
358
+ inputs: values,
359
+ model: this.modelId,
360
+ inputType: toSdkInputType3(inputType),
361
+ outputDimension,
362
+ outputDtype
363
+ });
364
+ const sortedData = [...response.data ?? []].sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
365
+ const embeddingsByDocument = sortedData.map((item) => {
366
+ const chunkData = item.data ?? [];
367
+ return chunkData.map((chunk) => chunk.embedding ?? []);
368
+ });
369
+ return { embeddingsByDocument };
370
+ }
371
+ /**
372
+ * Generate a query embedding (contextualized with itself)
373
+ *
374
+ * @param query - The search query text
375
+ * @returns Single embedding vector
376
+ */
377
+ async embedQuery(query) {
378
+ const result = await this.doEmbed({
379
+ values: [[query]],
380
+ inputType: "query"
381
+ });
382
+ return result.embeddings[0] ?? [];
383
+ }
384
+ /**
385
+ * Generate document chunk embeddings with context
386
+ *
387
+ * @param chunks - Array of text chunks from the same document
388
+ * @returns Array of embeddings, one per chunk
389
+ */
390
+ async embedDocumentChunks(chunks) {
391
+ const result = await this.doEmbed({
392
+ values: [chunks],
393
+ inputType: "document"
394
+ });
395
+ return result.embeddings;
396
+ }
397
+ };
398
+ function createVoyageContextualizedEmbedding(config) {
399
+ const normalizedConfig = typeof config === "string" ? { model: config } : config;
400
+ return new VoyageContextualizedEmbeddingModel(normalizedConfig);
401
+ }
402
+ var VoyageRelevanceScorer = class {
403
+ constructor(config) {
404
+ this.modelId = config.model;
405
+ this.config = config;
406
+ const apiKey = config.apiKey || process.env.VOYAGE_API_KEY;
407
+ if (!apiKey) {
408
+ throw new Error(
409
+ "VoyageAI API key is required. Set VOYAGE_API_KEY environment variable or pass apiKey in config."
410
+ );
411
+ }
412
+ this.client = new VoyageAIClient({ apiKey });
413
+ }
414
+ /**
415
+ * Get relevance score between a query and a document.
416
+ *
417
+ * @param query - The search query (text1)
418
+ * @param document - The document to score (text2)
419
+ * @returns Relevance score between 0 and 1
420
+ */
421
+ async getRelevanceScore(query, document) {
422
+ const response = await this.client.rerank({
423
+ query,
424
+ documents: [document],
425
+ model: this.modelId,
426
+ topK: 1,
427
+ truncation: this.config.truncation ?? true
428
+ });
429
+ const result = response.data?.[0];
430
+ if (!result || result.relevanceScore === void 0) {
431
+ throw new Error("No relevance score found in VoyageAI response");
432
+ }
433
+ return result.relevanceScore;
434
+ }
435
+ /**
436
+ * Rerank multiple documents against a query.
437
+ *
438
+ * This is more efficient than calling getRelevanceScore multiple times
439
+ * as it makes a single API call for all documents.
440
+ *
441
+ * @param query - The search query
442
+ * @param documents - Array of documents to rerank
443
+ * @param topK - Optional number of top results to return
444
+ * @returns Array of reranked results with scores
445
+ */
446
+ async rerankDocuments(query, documents, topK) {
447
+ const response = await this.client.rerank({
448
+ query,
449
+ documents,
450
+ model: this.modelId,
451
+ topK,
452
+ truncation: this.config.truncation ?? true
453
+ });
454
+ return response.data?.map((item) => ({
455
+ document: documents[item.index ?? 0] ?? "",
456
+ index: item.index ?? 0,
457
+ score: item.relevanceScore ?? 0
458
+ })) ?? [];
459
+ }
460
+ };
461
+ function createVoyageReranker(config) {
462
+ const normalizedConfig = typeof config === "string" ? { model: config } : config;
463
+ return new VoyageRelevanceScorer(normalizedConfig);
464
+ }
465
+ var voyageReranker = createVoyageReranker;
466
+
467
+ // src/index.ts
468
+ var voyageEmbedding = createVoyageTextEmbedding;
469
+ var voyageEmbeddingV2 = createVoyageTextEmbeddingV2;
470
+ var voyageMultimodalEmbedding = createVoyageMultimodalEmbedding;
471
+ var voyageContextualizedEmbedding = createVoyageContextualizedEmbedding;
472
+ var voyage = (() => {
473
+ const cache = /* @__PURE__ */ new Map();
474
+ function lazy(key, factory) {
475
+ let instance = cache.get(key);
476
+ if (!instance) {
477
+ instance = factory();
478
+ cache.set(key, instance);
479
+ }
480
+ return instance;
481
+ }
482
+ const base = {
483
+ get specificationVersion() {
484
+ return "v3";
485
+ },
486
+ get provider() {
487
+ return "voyage";
488
+ },
489
+ get modelId() {
490
+ return "voyage-3.5";
491
+ },
492
+ get maxEmbeddingsPerCall() {
493
+ return 1e3;
494
+ },
495
+ get supportsParallelCalls() {
496
+ return true;
497
+ },
498
+ doEmbed(args) {
499
+ return lazy("_default", () => createVoyageTextEmbedding("voyage-3.5")).doEmbed(args);
500
+ }
501
+ };
502
+ return Object.defineProperties(base, {
503
+ // Text models (V3) - voyage-4 series
504
+ v4large: { get: () => lazy("v4large", () => createVoyageTextEmbedding("voyage-4-large")) },
505
+ v4: { get: () => lazy("v4", () => createVoyageTextEmbedding("voyage-4")) },
506
+ v4lite: { get: () => lazy("v4lite", () => createVoyageTextEmbedding("voyage-4-lite")) },
507
+ // Text models (V3) - voyage-3 series
508
+ large: { get: () => lazy("large", () => createVoyageTextEmbedding("voyage-3-large")) },
509
+ v35: { get: () => lazy("v35", () => createVoyageTextEmbedding("voyage-3.5")) },
510
+ v35lite: { get: () => lazy("v35lite", () => createVoyageTextEmbedding("voyage-3.5-lite")) },
511
+ code: { get: () => lazy("code", () => createVoyageTextEmbedding("voyage-code-3")) },
512
+ finance: { get: () => lazy("finance", () => createVoyageTextEmbedding("voyage-finance-2")) },
513
+ law: { get: () => lazy("law", () => createVoyageTextEmbedding("voyage-law-2")) },
514
+ // Text models (V2) - voyage-4 series
515
+ v4largeV2: { get: () => lazy("v4largeV2", () => createVoyageTextEmbeddingV2("voyage-4-large")) },
516
+ v4V2: { get: () => lazy("v4V2", () => createVoyageTextEmbeddingV2("voyage-4")) },
517
+ v4liteV2: { get: () => lazy("v4liteV2", () => createVoyageTextEmbeddingV2("voyage-4-lite")) },
518
+ // Text models (V2) - voyage-3 series
519
+ largeV2: { get: () => lazy("largeV2", () => createVoyageTextEmbeddingV2("voyage-3-large")) },
520
+ v35V2: { get: () => lazy("v35V2", () => createVoyageTextEmbeddingV2("voyage-3.5")) },
521
+ v35liteV2: { get: () => lazy("v35liteV2", () => createVoyageTextEmbeddingV2("voyage-3.5-lite")) },
522
+ codeV2: { get: () => lazy("codeV2", () => createVoyageTextEmbeddingV2("voyage-code-3")) },
523
+ financeV2: { get: () => lazy("financeV2", () => createVoyageTextEmbeddingV2("voyage-finance-2")) },
524
+ lawV2: { get: () => lazy("lawV2", () => createVoyageTextEmbeddingV2("voyage-law-2")) },
525
+ // Multimodal models
526
+ multimodal: { get: () => lazy("multimodal", () => createVoyageMultimodalEmbedding("voyage-multimodal-3.5")) },
527
+ multimodal3: { get: () => lazy("multimodal3", () => createVoyageMultimodalEmbedding("voyage-multimodal-3")) },
528
+ multimodal35: { get: () => lazy("multimodal35", () => createVoyageMultimodalEmbedding("voyage-multimodal-3.5")) },
529
+ // Contextualized model
530
+ contextualized: {
531
+ get: () => lazy("contextualized", () => createVoyageContextualizedEmbedding("voyage-context-3"))
532
+ },
533
+ context3: { get: () => lazy("context3", () => createVoyageContextualizedEmbedding("voyage-context-3")) },
534
+ // Reranker models
535
+ reranker: { get: () => lazy("reranker", () => createVoyageReranker("rerank-2.5")) },
536
+ reranker25: { get: () => lazy("reranker25", () => createVoyageReranker("rerank-2.5")) },
537
+ reranker25lite: { get: () => lazy("reranker25lite", () => createVoyageReranker("rerank-2.5-lite")) },
538
+ reranker2: { get: () => lazy("reranker2", () => createVoyageReranker("rerank-2")) },
539
+ reranker2lite: { get: () => lazy("reranker2lite", () => createVoyageReranker("rerank-2-lite")) },
540
+ // Factory functions (no lazy needed - they are factories themselves)
541
+ embedding: { value: createVoyageTextEmbedding },
542
+ embeddingV2: { value: createVoyageTextEmbeddingV2 },
543
+ multimodalEmbedding: { value: createVoyageMultimodalEmbedding },
544
+ contextualizedEmbedding: { value: createVoyageContextualizedEmbedding },
545
+ createReranker: { value: createVoyageReranker }
546
+ });
547
+ })();
548
+ var index_default = voyage;
549
+
550
+ export { CONTEXTUALIZED_MODEL_INFO, MULTIMODAL_MODEL_INFO, RERANKER_MODEL_INFO, TEXT_MODEL_INFO, VoyageContextualizedEmbeddingModel, VoyageMultimodalEmbeddingModel, VoyageRelevanceScorer, VoyageTextEmbeddingModelV2, VoyageTextEmbeddingModelV3, createVoyageContextualizedEmbedding, createVoyageMultimodalEmbedding, createVoyageReranker, createVoyageTextEmbedding, createVoyageTextEmbeddingV2, index_default as default, voyage, voyageContextualizedEmbedding, voyageEmbedding, voyageEmbeddingV2, voyageMultimodalEmbedding, voyageReranker };
551
+ //# sourceMappingURL=index.js.map
552
+ //# sourceMappingURL=index.js.map