@@ -48,6 +48,12 @@ function prepareText(text: string, config: EmbeddingConfig): string {
4848// Single Embedding
4949// =============================================================================
5050
51+ export interface SingleEmbedResult {
52+ embedding : number [ ] ;
53+ /** Tokens consumed by the embedding API call */
54+ tokens : number ;
55+ }
56+
5157/**
5258 * Generate a single embedding for text.
5359 *
@@ -58,7 +64,7 @@ function prepareText(text: string, config: EmbeddingConfig): string {
5864export async function generateEmbedding (
5965 text : string ,
6066 config : EmbeddingConfig ,
61- ) : Promise < number [ ] > {
67+ ) : Promise < SingleEmbedResult > {
6268 const model = getEmbeddingModel ( config ) ;
6369 const preparedText = prepareText ( text , config ) ;
6470
@@ -74,7 +80,10 @@ export async function generateEmbedding(
7480 ) ;
7581 }
7682
77- return result . embedding ;
83+ return {
84+ embedding : result . embedding ,
85+ tokens : result . usage . tokens ,
86+ } ;
7887}
7988
8089// =============================================================================
@@ -107,12 +116,15 @@ export async function generateEmbeddings(
107116
108117 try {
109118 // Try batch API first
110- const { embeddings } = await embedMany ( {
119+ const { embeddings, usage } = await embedMany ( {
111120 model,
112121 values : texts ,
113122 ...getEmbedOptions ( config ) ,
114123 } ) ;
115124
125+ // embedMany returns aggregate token count — distribute evenly
126+ const tokensPerRow = Math . floor ( usage . tokens / rows . length ) ;
127+
116128 for ( let i = 0 ; i < rows . length ; i ++ ) {
117129 const embedding = embeddings [ i ] ;
118130 const row = rows [ i ] ;
@@ -128,6 +140,7 @@ export async function generateEmbeddings(
128140 results . push ( {
129141 id : row . id ,
130142 embedding,
143+ tokens : tokensPerRow ,
131144 } ) ;
132145 }
133146 }
@@ -155,6 +168,7 @@ export async function generateEmbeddings(
155168 results . push ( {
156169 id : row . id ,
157170 embedding : result . embedding ,
171+ tokens : result . usage . tokens ,
158172 } ) ;
159173 }
160174 } catch ( err ) {
0 commit comments