@@ -327,7 +327,7 @@ class TextProcessor {
327327 * Calculate cosine similarity between two vectors
328328 */
329329 static cosineSimilarity ( a : number [ ] , b : number [ ] ) : number {
330- if ( a . length !== b . length ) return 0
330+ if ( ! a || ! b || a . length !== b . length ) return 0
331331 let dot = 0 , magA = 0 , magB = 0
332332 for ( let i = 0 ; i < a . length ; i ++ ) {
333333 dot += a [ i ] * b [ i ]
@@ -893,7 +893,7 @@ class MemoryClusterer {
893893 if ( assigned . has ( j ) ) continue
894894
895895 const avgDist = vectors
896- . map ( ( v , k ) => assigned . has ( k ) ? 0 : TextProcessor . cosineSimilarity ( vectors [ j ] , v ) )
896+ . map ( ( v , k ) => assigned . has ( k ) || ! vectors [ j ] || ! v ? 0 : TextProcessor . cosineSimilarity ( vectors [ j ] , v ) )
897897 . reduce ( ( a , b ) => a + b , 0 ) / Math . max ( 1 , memories . length - assigned . size )
898898
899899 if ( avgDist > maxAvgDist ) {
@@ -909,7 +909,7 @@ class MemoryClusterer {
909909
910910 const similarities = vectors . map ( ( v , idx ) => ( {
911911 idx,
912- sim : TextProcessor . cosineSimilarity ( vectors [ seedIdx ] , v )
912+ sim : ! vectors [ seedIdx ] || ! v ? 0 : TextProcessor . cosineSimilarity ( vectors [ seedIdx ] , v )
913913 } ) )
914914 . filter ( s => ! assigned . has ( s . idx ) )
915915 . sort ( ( a , b ) => b . sim - a . sim )
0 commit comments