Compare commits

...

1 Commits

Author SHA1 Message Date
Philipinho d11e1e0a23 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.
2026-03-31 19:32:55 +01:00
4 changed files with 14 additions and 2 deletions
+1 -1
View File
@@ -25,7 +25,7 @@
"@tabler/icons-react": "^3.40.0", "@tabler/icons-react": "^3.40.0",
"@tanstack/react-query": "5.90.17", "@tanstack/react-query": "5.90.17",
"alfaaz": "^1.1.0", "alfaaz": "^1.1.0",
"axios": "^1.13.6", "axios": "1.13.6",
"blueimp-load-image": "^5.16.0", "blueimp-load-image": "^5.16.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"emoji-mart": "^5.6.0", "emoji-mart": "^5.6.0",
@@ -259,6 +259,12 @@ export class EnvironmentService {
); );
} }
getAiEmbeddingSupportsMrl(): boolean | undefined {
const val = this.configService.get<string>('AI_EMBEDDING_SUPPORTS_MRL');
if (val === undefined || val === null || val === '') return undefined;
return val === 'true';
}
getOpenAiApiKey(): string { getOpenAiApiKey(): string {
return this.configService.get<string>('OPENAI_API_KEY'); return this.configService.get<string>('OPENAI_API_KEY');
} }
@@ -117,6 +117,12 @@ export class EnvironmentVariables {
@IsString() @IsString()
AI_EMBEDDING_DIMENSION: string; 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) @ValidateIf((obj) => obj.AI_DRIVER)
@IsString() @IsString()
@IsNotEmpty() @IsNotEmpty()