@convex-dev/rag 0.5.2 → 0.5.4

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/README.md CHANGED
@@ -95,6 +95,7 @@ Search across content with vector similarity
95
95
  - `results` is an array of matching chunks with scores and more metadata.
96
96
  - `entries` is an array of the entries that matched the query.
97
97
  Each result has a `entryId` referencing one of these source entries.
98
+ - `usage` contains embedding token usage information. Will be `{ tokens: 0 }` if no embedding was performed (e.g. when passing pre-computed embeddings).
98
99
 
99
100
  ```ts
100
101
  export const search = action({
@@ -102,14 +103,14 @@ export const search = action({
102
103
  query: v.string(),
103
104
  },
104
105
  handler: async (ctx, args) => {
105
- const { results, text, entries } = await rag.search(ctx, {
106
+ const { results, text, entries, usage } = await rag.search(ctx, {
106
107
  namespace: "global",
107
108
  query: args.query,
108
109
  limit: 10,
109
110
  vectorScoreThreshold: 0.5, // Only return results with a score >= 0.5
110
111
  });
111
112
 
112
- return { results, text, entries };
113
+ return { results, text, entries, usage };
113
114
  },
114
115
  });
115
116
  ```
@@ -253,14 +254,14 @@ export const searchWithContext = action({
253
254
  userId: v.string(),
254
255
  },
255
256
  handler: async (ctx, args) => {
256
- const { results, text, entries } = await rag.search(ctx, {
257
+ const { results, text, entries, usage } = await rag.search(ctx, {
257
258
  namespace: args.userId,
258
259
  query: args.query,
259
260
  chunkContext: { before: 2, after: 1 }, // Include 2 chunks before, 1 after
260
261
  limit: 5,
261
262
  });
262
263
 
263
- return { results, text, entries };
264
+ return { results, text, entries, usage };
264
265
  },
265
266
  });
266
267
  ```
@@ -1,4 +1,4 @@
1
- import { generateText, type ModelMessage, type EmbeddingModel } from "ai";
1
+ import { generateText, type ModelMessage, type EmbeddingModel, type EmbeddingModelUsage } from "ai";
2
2
  import { type FunctionArgs, type FunctionReturnType, type GenericActionCtx, type GenericDataModel, type GenericMutationCtx, type PaginationOptions, type PaginationResult, type RegisteredAction, type RegisteredMutation } from "convex/server";
3
3
  import { type Value } from "convex/values";
4
4
  import { vEntryId, vNamespaceId, type Chunk, type Entry, type EntryFilter, type EntryId, type Namespace, type NamespaceId, type SearchEntry, type SearchResult, type Status } from "../shared.js";
@@ -75,6 +75,7 @@ export declare class RAG<FitlerSchemas extends Record<string, Value> = Record<st
75
75
  status: Status;
76
76
  created: boolean;
77
77
  replacedEntry: Entry<FitlerSchemas, EntryMetadata> | null;
78
+ usage: EmbeddingModelUsage;
78
79
  }>;
79
80
  /**
80
81
  * Add an entry to the store asynchronously.
@@ -139,6 +140,7 @@ export declare class RAG<FitlerSchemas extends Record<string, Value> = Record<st
139
140
  results: SearchResult[];
140
141
  text: string;
141
142
  entries: SearchEntry<FitlerSchemas, EntryMetadata>[];
143
+ usage: EmbeddingModelUsage;
142
144
  }>;
143
145
  /**
144
146
  * Generate text based on Retrieval-Augmented Generation.
@@ -453,4 +455,13 @@ type SearchOptions<FitlerSchemas extends Record<string, Value>> = {
453
455
  */
454
456
  vectorScoreThreshold?: number;
455
457
  };
458
+ export type ModelOrMetadata = string | ({
459
+ provider: string;
460
+ } & ({
461
+ modelId: string;
462
+ } | {
463
+ model: string;
464
+ }));
465
+ export declare function getModelId(embeddingModel: ModelOrMetadata): string;
466
+ export declare function getProviderName(embeddingModel: ModelOrMetadata): string;
456
467
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -59,8 +59,11 @@ export class RAG {
59
59
  validateAddFilterValues(args.filterValues, this.options.filterNames);
60
60
  const chunks = args.chunks ?? defaultChunker(args.text);
61
61
  let allChunks;
62
+ const totalUsage = { tokens: 0 };
62
63
  if (Array.isArray(chunks) && chunks.length < CHUNK_BATCH_SIZE) {
63
- allChunks = await createChunkArgsBatch(this.options.textEmbeddingModel, chunks);
64
+ const result = await createChunkArgsBatch(this.options.textEmbeddingModel, chunks);
65
+ allChunks = result.chunks;
66
+ totalUsage.tokens += result.usage.tokens;
64
67
  }
65
68
  const onComplete = args.onComplete && (await createFunctionHandle(args.onComplete));
66
69
  const { entryId, status, created } = await ctx.runMutation(this.component.entries.add, {
@@ -82,6 +85,7 @@ export class RAG {
82
85
  status,
83
86
  created,
84
87
  replacedEntry: null,
88
+ usage: totalUsage,
85
89
  };
86
90
  }
87
91
  let isPending = false;
@@ -93,13 +97,14 @@ export class RAG {
93
97
  // break chunks up into batches, respecting soft limit
94
98
  let startOrder = 0;
95
99
  for await (const batch of batchIterator(chunks, CHUNK_BATCH_SIZE)) {
96
- const chunks = await createChunkArgsBatch(this.options.textEmbeddingModel, batch);
100
+ const result = await createChunkArgsBatch(this.options.textEmbeddingModel, batch);
101
+ totalUsage.tokens += result.usage.tokens;
97
102
  const { status } = await ctx.runMutation(this.component.chunks.insert, {
98
103
  entryId,
99
104
  startOrder,
100
- chunks,
105
+ chunks: result.chunks,
101
106
  });
102
- startOrder += chunks.length;
107
+ startOrder += result.chunks.length;
103
108
  if (status === "pending") {
104
109
  isPending = true;
105
110
  }
@@ -119,6 +124,7 @@ export class RAG {
119
124
  status: "replaced",
120
125
  created: false,
121
126
  replacedEntry: null,
127
+ usage: totalUsage,
122
128
  };
123
129
  }
124
130
  startOrder = nextStartOrder;
@@ -130,6 +136,7 @@ export class RAG {
130
136
  status: "ready",
131
137
  replacedEntry: promoted.replacedEntry,
132
138
  created: true,
139
+ usage: totalUsage,
133
140
  };
134
141
  }
135
142
  /**
@@ -195,17 +202,19 @@ export class RAG {
195
202
  async search(ctx, args) {
196
203
  const { namespace, filters = [], limit = DEFAULT_SEARCH_LIMIT, chunkContext = { before: 0, after: 0 }, vectorScoreThreshold, } = args;
197
204
  let embedding = Array.isArray(args.query) ? args.query : undefined;
205
+ let usage = { tokens: 0 };
198
206
  if (!embedding) {
199
207
  const embedResult = await embed({
200
208
  model: this.options.textEmbeddingModel,
201
209
  value: args.query,
202
210
  });
203
211
  embedding = embedResult.embedding;
212
+ usage = embedResult.usage;
204
213
  }
205
214
  const { results, entries } = await ctx.runAction(this.component.search.search, {
206
215
  embedding,
207
216
  namespace,
208
- modelId: this.options.textEmbeddingModel.modelId,
217
+ modelId: getModelId(this.options.textEmbeddingModel),
209
218
  filters,
210
219
  limit,
211
220
  vectorScoreThreshold,
@@ -237,6 +246,7 @@ export class RAG {
237
246
  .map((e) => (e.title ? `## ${e.title}:\n\n${e.text}` : e.text))
238
247
  .join(`\n\n---\n\n`),
239
248
  entries: entriesWithTexts,
249
+ usage,
240
250
  };
241
251
  }
242
252
  /**
@@ -345,7 +355,7 @@ export class RAG {
345
355
  namespace: args.namespace,
346
356
  dimension: this.options.embeddingDimension,
347
357
  filterNames: this.options.filterNames ?? [],
348
- modelId: this.options.textEmbeddingModel.modelId,
358
+ modelId: getModelId(this.options.textEmbeddingModel),
349
359
  key: args.key,
350
360
  contentHash: args.contentHash,
351
361
  });
@@ -364,7 +374,7 @@ export class RAG {
364
374
  namespace: args.namespace,
365
375
  status: args.status ?? "ready",
366
376
  onComplete,
367
- modelId: this.options.textEmbeddingModel.modelId,
377
+ modelId: getModelId(this.options.textEmbeddingModel),
368
378
  dimension: this.options.embeddingDimension,
369
379
  filterNames: this.options.filterNames ?? [],
370
380
  });
@@ -377,7 +387,7 @@ export class RAG {
377
387
  async getNamespace(ctx, args) {
378
388
  return ctx.runQuery(this.component.namespaces.get, {
379
389
  namespace: args.namespace,
380
- modelId: this.options.textEmbeddingModel.modelId,
390
+ modelId: getModelId(this.options.textEmbeddingModel),
381
391
  dimension: this.options.embeddingDimension,
382
392
  filterNames: this.options.filterNames ?? [],
383
393
  });
@@ -481,8 +491,9 @@ export class RAG {
481
491
  args: vChunkerArgs,
482
492
  handler: async (ctx, args) => {
483
493
  const { namespace, entry } = args;
484
- if (namespace.modelId !== this.options.textEmbeddingModel.modelId) {
485
- console.error(`You are using a different embedding model ${this.options.textEmbeddingModel.modelId} for asynchronously ` +
494
+ const modelId = getModelId(this.options.textEmbeddingModel);
495
+ if (namespace.modelId !== modelId) {
496
+ console.error(`You are using a different embedding model ${modelId} for asynchronously ` +
486
497
  `generating chunks than the one provided when it was started: ${namespace.modelId}`);
487
498
  return;
488
499
  }
@@ -514,13 +525,13 @@ export class RAG {
514
525
  }
515
526
  let batchOrder = 0;
516
527
  for await (const batch of batchIterator(chunkIterator, CHUNK_BATCH_SIZE)) {
517
- const createChunkArgs = await createChunkArgsBatch(this.options.textEmbeddingModel, batch);
528
+ const result = await createChunkArgsBatch(this.options.textEmbeddingModel, batch);
518
529
  await ctx.runMutation(args.insertChunks, {
519
530
  entryId: entry.entryId,
520
531
  startOrder: batchOrder,
521
- chunks: createChunkArgs,
532
+ chunks: result.chunks,
522
533
  });
523
- batchOrder += createChunkArgs.length;
534
+ batchOrder += result.chunks.length;
524
535
  }
525
536
  },
526
537
  });
@@ -599,21 +610,24 @@ async function createChunkArgsBatch(embedModel, chunks) {
599
610
  index,
600
611
  })
601
612
  .filter((b) => b !== null);
613
+ const totalUsage = { tokens: 0 };
602
614
  for (const batch of makeBatches(missingEmbeddingsWithIndex, 100)) {
603
- const { embeddings } = await embedMany({
615
+ const { embeddings, usage } = await embedMany({
604
616
  model: embedModel,
605
617
  values: batch.map((b) => b.text.trim() || "<empty>"),
606
618
  });
619
+ totalUsage.tokens += usage.tokens;
607
620
  for (const [index, embedding] of embeddings.entries()) {
608
621
  argsMaybeMissingEmbeddings[batch[index].index].embedding = embedding;
609
622
  }
610
623
  }
611
- return argsMaybeMissingEmbeddings.filter((a) => {
624
+ const finalChunks = argsMaybeMissingEmbeddings.filter((a) => {
612
625
  if (a.embedding === undefined) {
613
626
  throw new Error("Embedding is undefined for chunk " + a.content.text);
614
627
  }
615
628
  return true;
616
629
  });
630
+ return { chunks: finalChunks, usage: totalUsage };
617
631
  }
618
632
  function getModelCategory(model) {
619
633
  if (typeof model !== "string") {
@@ -638,4 +652,21 @@ function getModelCategory(model) {
638
652
  }
639
653
  return model;
640
654
  }
655
+ export function getModelId(embeddingModel) {
656
+ if (typeof embeddingModel === "string") {
657
+ if (embeddingModel.includes("/")) {
658
+ return embeddingModel.split("/").slice(1).join("/");
659
+ }
660
+ return embeddingModel;
661
+ }
662
+ return "modelId" in embeddingModel
663
+ ? embeddingModel.modelId
664
+ : embeddingModel.model;
665
+ }
666
+ export function getProviderName(embeddingModel) {
667
+ if (typeof embeddingModel === "string") {
668
+ return embeddingModel.split("/").at(0);
669
+ }
670
+ return embeddingModel.provider;
671
+ }
641
672
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "email": "support@convex.dev",
8
8
  "url": "https://github.com/get-convex/rag/issues"
9
9
  },
10
- "version": "0.5.2",
10
+ "version": "0.5.4",
11
11
  "license": "Apache-2.0",
12
12
  "keywords": [
13
13
  "convex",
@@ -74,6 +74,7 @@
74
74
  "@types/node": "18.17.0",
75
75
  "@typescript-eslint/eslint-plugin": "8.35.0",
76
76
  "@typescript-eslint/parser": "8.35.0",
77
+ "ai": "5.0.61",
77
78
  "chokidar-cli": "3.0.0",
78
79
  "convex-helpers": "0.1.100",
79
80
  "convex-test": "0.0.37",
@@ -94,7 +94,7 @@ export const search = action({
94
94
  ),
95
95
  },
96
96
  handler: async (ctx, args) => {
97
- const { results, entries, text } = await rag.search(ctx, {
97
+ const { results, entries, text, usage } = await rag.search(ctx, {
98
98
  query: args.embedding,
99
99
  namespace: args.namespace,
100
100
  limit: args.limit ?? 10,
@@ -105,6 +105,7 @@ export const search = action({
105
105
  results,
106
106
  text,
107
107
  entries,
108
+ usage,
108
109
  };
109
110
  },
110
111
  });
@@ -127,7 +128,7 @@ function dummyEmbeddings(text: string) {
127
128
  describe("RAG thick client", () => {
128
129
  test("should add a entry and be able to list it", async () => {
129
130
  const t = initConvexTest(schema);
130
- const { entryId, status } = await t.mutation(testApi.add, {
131
+ const { entryId, status, usage } = await t.mutation(testApi.add, {
131
132
  key: "test",
132
133
  chunks: [
133
134
  { text: "A", metadata: {}, embedding: dummyEmbeddings("A") },
@@ -138,6 +139,7 @@ describe("RAG thick client", () => {
138
139
  });
139
140
  expect(entryId).toBeDefined();
140
141
  expect(status).toBe("ready");
142
+ expect(usage).toEqual({ tokens: 0 });
141
143
  await t.run(async (ctx) => {
142
144
  const { isDone, page } = await rag.listChunks(ctx, {
143
145
  entryId,
@@ -167,14 +169,15 @@ describe("RAG thick client", () => {
167
169
 
168
170
  test("should be able to re-add an entry with the same key", async () => {
169
171
  const t = initConvexTest(schema);
170
- const { entryId, status } = await t.mutation(testApi.add, {
172
+ const { entryId, status, usage } = await t.mutation(testApi.add, {
171
173
  key: "test",
172
174
  chunks: [{ text: "A", metadata: {}, embedding: dummyEmbeddings("A") }],
173
175
  namespace: "test",
174
176
  });
175
177
  expect(entryId).toBeDefined();
176
178
  expect(status).toBe("ready");
177
- const { entryId: entryId2, status: status2 } = await t.mutation(
179
+ expect(usage).toEqual({ tokens: 0 });
180
+ const { entryId: entryId2, status: status2, usage: usage2 } = await t.mutation(
178
181
  testApi.add,
179
182
  {
180
183
  key: "test",
@@ -184,6 +187,7 @@ describe("RAG thick client", () => {
184
187
  );
185
188
  expect(entryId2).toBeDefined();
186
189
  expect(status2).toBe("ready");
190
+ expect(usage2).toEqual({ tokens: 0 });
187
191
  const { page } = await t.query(components.rag.chunks.list, {
188
192
  entryId: entryId2,
189
193
  paginationOpts: { numItems: 10, cursor: null },
@@ -224,7 +228,7 @@ describe("RAG thick client", () => {
224
228
  });
225
229
 
226
230
  // Search and verify text format
227
- const { text, entries } = await t.action(testApi.search, {
231
+ const { text, entries, usage } = await t.action(testApi.search, {
228
232
  embedding: dummyEmbeddings("content"),
229
233
  namespace: "format-test",
230
234
  limit: 10,
@@ -241,6 +245,7 @@ describe("RAG thick client", () => {
241
245
  expect(text).toBe(
242
246
  "## Test Document:\n\nChunk 1 content\nChunk 2 content\nChunk 3 content"
243
247
  );
248
+ expect(usage).toEqual({ tokens: 0 });
244
249
  });
245
250
 
246
251
  test("should format single entry without title correctly", async () => {
@@ -259,7 +264,7 @@ describe("RAG thick client", () => {
259
264
  namespace: "format-test-notitle",
260
265
  });
261
266
 
262
- const { text, entries } = await t.action(testApi.search, {
267
+ const { text, entries, usage } = await t.action(testApi.search, {
263
268
  embedding: dummyEmbeddings("content"),
264
269
  namespace: "format-test-notitle",
265
270
  limit: 10,
@@ -270,6 +275,7 @@ describe("RAG thick client", () => {
270
275
  expect(entries).toHaveLength(1);
271
276
  expect(entries[0].text).toBe("Content without title");
272
277
  expect(text).toBe("Content without title");
278
+ expect(usage).toEqual({ tokens: 0 });
273
279
  });
274
280
 
275
281
  test("should format non-sequential chunks with ellipsis separator", async () => {
@@ -4,6 +4,7 @@ import {
4
4
  generateText,
5
5
  type ModelMessage,
6
6
  type EmbeddingModel,
7
+ type EmbeddingModelUsage,
7
8
  } from "ai";
8
9
  import { assert } from "convex-helpers";
9
10
  import {
@@ -163,6 +164,7 @@ export class RAG<
163
164
  status: Status;
164
165
  created: boolean;
165
166
  replacedEntry: Entry<FitlerSchemas, EntryMetadata> | null;
167
+ usage: EmbeddingModelUsage;
166
168
  }> {
167
169
  let namespaceId: NamespaceId;
168
170
  if ("namespaceId" in args) {
@@ -179,11 +181,14 @@ export class RAG<
179
181
 
180
182
  const chunks = args.chunks ?? defaultChunker(args.text);
181
183
  let allChunks: CreateChunkArgs[] | undefined;
184
+ const totalUsage: EmbeddingModelUsage = { tokens: 0 };
182
185
  if (Array.isArray(chunks) && chunks.length < CHUNK_BATCH_SIZE) {
183
- allChunks = await createChunkArgsBatch(
186
+ const result = await createChunkArgsBatch(
184
187
  this.options.textEmbeddingModel,
185
188
  chunks
186
189
  );
190
+ allChunks = result.chunks;
191
+ totalUsage.tokens += result.usage.tokens;
187
192
  }
188
193
 
189
194
  const onComplete =
@@ -211,6 +216,7 @@ export class RAG<
211
216
  status,
212
217
  created,
213
218
  replacedEntry: null,
219
+ usage: totalUsage,
214
220
  };
215
221
  }
216
222
 
@@ -222,16 +228,17 @@ export class RAG<
222
228
  // break chunks up into batches, respecting soft limit
223
229
  let startOrder = 0;
224
230
  for await (const batch of batchIterator(chunks, CHUNK_BATCH_SIZE)) {
225
- const chunks = await createChunkArgsBatch(
231
+ const result = await createChunkArgsBatch(
226
232
  this.options.textEmbeddingModel,
227
233
  batch
228
234
  );
235
+ totalUsage.tokens += result.usage.tokens;
229
236
  const { status } = await ctx.runMutation(this.component.chunks.insert, {
230
237
  entryId,
231
238
  startOrder,
232
- chunks,
239
+ chunks: result.chunks,
233
240
  });
234
- startOrder += chunks.length;
241
+ startOrder += result.chunks.length;
235
242
  if (status === "pending") {
236
243
  isPending = true;
237
244
  }
@@ -253,6 +260,7 @@ export class RAG<
253
260
  status: "replaced" as const,
254
261
  created: false,
255
262
  replacedEntry: null,
263
+ usage: totalUsage,
256
264
  };
257
265
  }
258
266
  startOrder = nextStartOrder;
@@ -270,6 +278,7 @@ export class RAG<
270
278
  EntryMetadata
271
279
  > | null,
272
280
  created: true,
281
+ usage: totalUsage,
273
282
  };
274
283
  }
275
284
 
@@ -377,6 +386,7 @@ export class RAG<
377
386
  results: SearchResult[];
378
387
  text: string;
379
388
  entries: SearchEntry<FitlerSchemas, EntryMetadata>[];
389
+ usage: EmbeddingModelUsage;
380
390
  }> {
381
391
  const {
382
392
  namespace,
@@ -386,19 +396,21 @@ export class RAG<
386
396
  vectorScoreThreshold,
387
397
  } = args;
388
398
  let embedding = Array.isArray(args.query) ? args.query : undefined;
399
+ let usage: EmbeddingModelUsage = { tokens: 0 };
389
400
  if (!embedding) {
390
401
  const embedResult = await embed({
391
402
  model: this.options.textEmbeddingModel,
392
403
  value: args.query,
393
404
  });
394
405
  embedding = embedResult.embedding;
406
+ usage = embedResult.usage;
395
407
  }
396
408
  const { results, entries } = await ctx.runAction(
397
409
  this.component.search.search,
398
410
  {
399
411
  embedding,
400
412
  namespace,
401
- modelId: this.options.textEmbeddingModel.modelId,
413
+ modelId: getModelId(this.options.textEmbeddingModel),
402
414
  filters,
403
415
  limit,
404
416
  vectorScoreThreshold,
@@ -431,6 +443,7 @@ export class RAG<
431
443
  .map((e) => (e.title ? `## ${e.title}:\n\n${e.text}` : e.text))
432
444
  .join(`\n\n---\n\n`),
433
445
  entries: entriesWithTexts,
446
+ usage,
434
447
  };
435
448
  }
436
449
 
@@ -616,7 +629,7 @@ export class RAG<
616
629
  namespace: args.namespace,
617
630
  dimension: this.options.embeddingDimension,
618
631
  filterNames: this.options.filterNames ?? [],
619
- modelId: this.options.textEmbeddingModel.modelId,
632
+ modelId: getModelId(this.options.textEmbeddingModel),
620
633
  key: args.key,
621
634
  contentHash: args.contentHash,
622
635
  });
@@ -662,7 +675,7 @@ export class RAG<
662
675
  namespace: args.namespace,
663
676
  status: args.status ?? "ready",
664
677
  onComplete,
665
- modelId: this.options.textEmbeddingModel.modelId,
678
+ modelId: getModelId(this.options.textEmbeddingModel),
666
679
  dimension: this.options.embeddingDimension,
667
680
  filterNames: this.options.filterNames ?? [],
668
681
  }
@@ -682,7 +695,7 @@ export class RAG<
682
695
  ): Promise<Namespace | null> {
683
696
  return ctx.runQuery(this.component.namespaces.get, {
684
697
  namespace: args.namespace,
685
- modelId: this.options.textEmbeddingModel.modelId,
698
+ modelId: getModelId(this.options.textEmbeddingModel),
686
699
  dimension: this.options.embeddingDimension,
687
700
  filterNames: this.options.filterNames ?? [],
688
701
  }) as Promise<Namespace | null>;
@@ -834,9 +847,10 @@ export class RAG<
834
847
  args: vChunkerArgs,
835
848
  handler: async (ctx, args) => {
836
849
  const { namespace, entry } = args;
837
- if (namespace.modelId !== this.options.textEmbeddingModel.modelId) {
850
+ const modelId = getModelId(this.options.textEmbeddingModel);
851
+ if (namespace.modelId !== modelId) {
838
852
  console.error(
839
- `You are using a different embedding model ${this.options.textEmbeddingModel.modelId} for asynchronously ` +
853
+ `You are using a different embedding model ${modelId} for asynchronously ` +
840
854
  `generating chunks than the one provided when it was started: ${namespace.modelId}`
841
855
  );
842
856
  return;
@@ -880,7 +894,7 @@ export class RAG<
880
894
  chunkIterator,
881
895
  CHUNK_BATCH_SIZE
882
896
  )) {
883
- const createChunkArgs = await createChunkArgsBatch(
897
+ const result = await createChunkArgsBatch(
884
898
  this.options.textEmbeddingModel,
885
899
  batch
886
900
  );
@@ -893,10 +907,10 @@ export class RAG<
893
907
  {
894
908
  entryId: entry.entryId,
895
909
  startOrder: batchOrder,
896
- chunks: createChunkArgs,
910
+ chunks: result.chunks,
897
911
  }
898
912
  );
899
- batchOrder += createChunkArgs.length;
913
+ batchOrder += result.chunks.length;
900
914
  }
901
915
  },
902
916
  });
@@ -961,7 +975,7 @@ function makeBatches<T>(items: T[], batchSize: number): T[][] {
961
975
  async function createChunkArgsBatch(
962
976
  embedModel: EmbeddingModel<string>,
963
977
  chunks: InputChunk[]
964
- ): Promise<CreateChunkArgs[]> {
978
+ ): Promise<{ chunks: CreateChunkArgs[]; usage: EmbeddingModelUsage }> {
965
979
  const argsMaybeMissingEmbeddings: (Omit<CreateChunkArgs, "embedding"> & {
966
980
  embedding?: number[];
967
981
  })[] = chunks.map((chunk) => {
@@ -995,21 +1009,24 @@ async function createChunkArgsBatch(
995
1009
  }
996
1010
  )
997
1011
  .filter((b) => b !== null);
1012
+ const totalUsage: EmbeddingModelUsage = { tokens: 0 };
998
1013
  for (const batch of makeBatches(missingEmbeddingsWithIndex, 100)) {
999
- const { embeddings } = await embedMany({
1014
+ const { embeddings, usage } = await embedMany({
1000
1015
  model: embedModel,
1001
1016
  values: batch.map((b) => b.text.trim() || "<empty>"),
1002
1017
  });
1018
+ totalUsage.tokens += usage.tokens;
1003
1019
  for (const [index, embedding] of embeddings.entries()) {
1004
1020
  argsMaybeMissingEmbeddings[batch[index].index].embedding = embedding;
1005
1021
  }
1006
1022
  }
1007
- return argsMaybeMissingEmbeddings.filter((a) => {
1023
+ const finalChunks = argsMaybeMissingEmbeddings.filter((a) => {
1008
1024
  if (a.embedding === undefined) {
1009
1025
  throw new Error("Embedding is undefined for chunk " + a.content.text);
1010
1026
  }
1011
1027
  return true;
1012
1028
  }) as CreateChunkArgs[];
1029
+ return { chunks: finalChunks, usage: totalUsage };
1013
1030
  }
1014
1031
 
1015
1032
  type MastraChunk = {
@@ -1175,3 +1192,27 @@ function getModelCategory(model: string | { provider: string }) {
1175
1192
  }
1176
1193
  return model;
1177
1194
  }
1195
+
1196
+ // fetch metadata from either a string or EmbeddingModelV2 or LanguageModelV2
1197
+ export type ModelOrMetadata =
1198
+ | string
1199
+ | ({ provider: string } & ({ modelId: string } | { model: string }));
1200
+
1201
+ export function getModelId(embeddingModel: ModelOrMetadata): string {
1202
+ if (typeof embeddingModel === "string") {
1203
+ if (embeddingModel.includes("/")) {
1204
+ return embeddingModel.split("/").slice(1).join("/");
1205
+ }
1206
+ return embeddingModel;
1207
+ }
1208
+ return "modelId" in embeddingModel
1209
+ ? embeddingModel.modelId
1210
+ : embeddingModel.model;
1211
+ }
1212
+
1213
+ export function getProviderName(embeddingModel: ModelOrMetadata): string {
1214
+ if (typeof embeddingModel === "string") {
1215
+ return embeddingModel.split("/").at(0)!;
1216
+ }
1217
+ return embeddingModel.provider;
1218
+ }