From d11e1e0a235d245a4019f68b81449e84ab2e748b Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Tue, 31 Mar 2026 19:32:55 +0100 Subject: [PATCH] feat: add AI_EMBEDDING_SUPPORTS_MRL env var to decouple pgvector dimensions from model API Some embedding models don't accept a `dimensions` parameter. This adds an optional env var that controls whether the dimension is sent to the model API, while always using it for pgvector indexing. Preset models have this handled automatically; the env var allows explicit override for custom models. --- apps/client/package.json | 2 +- apps/server/src/ee | 2 +- .../src/integrations/environment/environment.service.ts | 6 ++++++ .../src/integrations/environment/environment.validation.ts | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 67b25406..3eddb402 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -25,7 +25,7 @@ "@tabler/icons-react": "^3.40.0", "@tanstack/react-query": "5.90.17", "alfaaz": "^1.1.0", - "axios": "^1.13.6", + "axios": "1.13.6", "blueimp-load-image": "^5.16.0", "clsx": "^2.1.1", "emoji-mart": "^5.6.0", diff --git a/apps/server/src/ee b/apps/server/src/ee index d6675bed..670b9458 160000 --- a/apps/server/src/ee +++ b/apps/server/src/ee @@ -1 +1 @@ -Subproject commit d6675bed05c20422c978e215866fb334c28dec09 +Subproject commit 670b9458f3bbdc6dcfe349933cae4d95ff05b978 diff --git a/apps/server/src/integrations/environment/environment.service.ts b/apps/server/src/integrations/environment/environment.service.ts index 89e4bb81..b1b27d40 100644 --- a/apps/server/src/integrations/environment/environment.service.ts +++ b/apps/server/src/integrations/environment/environment.service.ts @@ -259,6 +259,12 @@ export class EnvironmentService { ); } + getAiEmbeddingSupportsMrl(): boolean | undefined { + const val = this.configService.get('AI_EMBEDDING_SUPPORTS_MRL'); + if (val === undefined || val === null || val === '') return undefined; + return val === 'true'; + } + getOpenAiApiKey(): string { return this.configService.get('OPENAI_API_KEY'); } diff --git a/apps/server/src/integrations/environment/environment.validation.ts b/apps/server/src/integrations/environment/environment.validation.ts index 5c307da2..3a59b08c 100644 --- a/apps/server/src/integrations/environment/environment.validation.ts +++ b/apps/server/src/integrations/environment/environment.validation.ts @@ -117,6 +117,12 @@ export class EnvironmentVariables { @IsString() AI_EMBEDDING_DIMENSION: string; + @IsOptional() + @ValidateIf((obj) => obj.AI_EMBEDDING_SUPPORTS_MRL) + @IsIn(['true', 'false']) + @IsString() + AI_EMBEDDING_SUPPORTS_MRL: string; + @ValidateIf((obj) => obj.AI_DRIVER) @IsString() @IsNotEmpty()