diff --git a/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts b/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts index 20dd0c29f5..3e999aa7d6 100644 --- a/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts +++ b/packages/backend/server/src/plugins/copilot/providers/gemini/gemini.ts @@ -239,12 +239,16 @@ export abstract class GeminiProvider extends CopilotProvider { taskType: 'RETRIEVAL_DOCUMENT', }); - const { embeddings } = await embedMany({ - model: modelInstance, - values: messages, - }); + const embeddings = await Promise.allSettled( + messages.map(m => + embedMany({ model: modelInstance, values: [m], maxRetries: 3 }) + ) + ); - return embeddings.filter(v => v && Array.isArray(v)); + return embeddings + .map(e => (e.status === 'fulfilled' ? e.value.embeddings : null)) + .flat() + .filter((v): v is number[] => !!v && Array.isArray(v)); } catch (e: any) { metrics.ai .counter('generate_embedding_errors')