From e8b93dba41b30153cf5e43f74e19988f881b9fbd Mon Sep 17 00:00:00 2001 From: Bo26fhmC5M <88071760+Bo26fhmC5M@users.noreply.github.com> Date: Sat, 5 Apr 2025 17:01:19 +0900 Subject: [PATCH] fix: handle similarity search error in HypaV3 --- src/ts/process/memory/hypav3.ts | 63 +++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/src/ts/process/memory/hypav3.ts b/src/ts/process/memory/hypav3.ts index 8285a362..f1e9f8a1 100644 --- a/src/ts/process/memory/hypav3.ts +++ b/src/ts/process/memory/hypav3.ts @@ -646,7 +646,16 @@ export async function hypaMemoryV3( processor.oaikey = db.supaMemoryKey; // Add summaryChunks to processor for similarity search - await processor.addSummaryChunks(summaryChunks); + try { + await processor.addSummaryChunks(summaryChunks); + } catch (error) { + return { + currentTokens, + chats, + error: `[HypaV3] Similarity search failed: ${error}`, + memory: toSerializableHypaV3Data(data), + }; + } const scoredSummaries = new Map(); @@ -656,15 +665,24 @@ export async function hypaMemoryV3( if (!pop) break; - const searched = await processor.similaritySearchScoredEx(pop.content); + try { + const searched = await processor.similaritySearchScoredEx(pop.content); - for (const [chunk, similarity] of searched) { - const summary = chunk.summary; + for (const [chunk, similarity] of searched) { + const summary = chunk.summary; - scoredSummaries.set( - summary, - (scoredSummaries.get(summary) || 0) + similarity - ); + scoredSummaries.set( + summary, + (scoredSummaries.get(summary) || 0) + similarity + ); + } + } catch (error) { + return { + currentTokens, + chats, + error: `[HypaV3] Similarity search failed: ${error}`, + memory: toSerializableHypaV3Data(data), + }; } } @@ -687,17 +705,26 @@ export async function hypaMemoryV3( }; } - const searched = await processor.similaritySearchScoredEx( - summarizeResult.data - ); - - for (const [chunk, similarity] of searched) { - const summary = chunk.summary; - - scoredSummaries.set( - summary, - (scoredSummaries.get(summary) || 0) + similarity + try { + const searched = await processor.similaritySearchScoredEx( + summarizeResult.data ); + + for (const [chunk, similarity] of searched) { + const summary = chunk.summary; + + scoredSummaries.set( + summary, + (scoredSummaries.get(summary) || 0) + similarity + ); + } + } catch (error) { + return { + currentTokens, + chats, + error: `[HypaV3] Similarity search failed: ${error}`, + memory: toSerializableHypaV3Data(data), + }; } console.log("[HypaV3] Similarity corrected.");