@@ -22,6 +22,25 @@ interface MigrateOpts {
2222 force : boolean ;
2323}
2424
25+ function normalizeEmbedding ( value : unknown ) : Float32Array | undefined {
26+ if ( ! value ) return undefined ;
27+ if ( value instanceof Float32Array ) return value ;
28+ if ( Array . isArray ( value ) ) return new Float32Array ( value . map ( Number ) ) ;
29+ if ( typeof value === 'string' ) {
30+ try {
31+ const parsed = JSON . parse ( value ) ;
32+ if ( Array . isArray ( parsed ) ) return new Float32Array ( parsed . map ( Number ) ) ;
33+ } catch {
34+ const trimmed = value . trim ( ) ;
35+ if ( trimmed . startsWith ( '[' ) && trimmed . endsWith ( ']' ) ) {
36+ const nums = trimmed . slice ( 1 , - 1 ) . split ( ',' ) . map ( s => Number ( s . trim ( ) ) ) . filter ( n => Number . isFinite ( n ) ) ;
37+ if ( nums . length > 0 ) return new Float32Array ( nums ) ;
38+ }
39+ }
40+ }
41+ return undefined ;
42+ }
43+
2544function parseArgs ( args : string [ ] ) : MigrateOpts {
2645 const toIdx = args . indexOf ( '--to' ) ;
2746 if ( toIdx === - 1 || ! args [ toIdx + 1 ] ) {
@@ -165,7 +184,7 @@ export async function runMigrateEngine(sourceEngine: BrainEngine, args: string[]
165184 chunk_index : c . chunk_index ,
166185 chunk_text : c . chunk_text ,
167186 chunk_source : c . chunk_source ,
168- embedding : c . embedding || undefined ,
187+ embedding : normalizeEmbedding ( c . embedding ) ,
169188 model : c . model ,
170189 token_count : c . token_count || undefined ,
171190 } ) ) ) ;
0 commit comments