TencentCloud/TencentDB-Agent-Memory · error
EmbeddingService: dimensions is required for remote provider
Error message
EmbeddingService: dimensions is required for remote provider (must be a positive integer)
What it means
The remote EmbeddingService requires config.dimensions to be a positive integer so vectors are stored and compared consistently. Zero, negative, or missing dimensions are rejected at construction time.
Source
Thrown at MemoryCore/src/core/store/embedding.ts:425
private readonly sendDimensions: boolean;
private readonly providerName: string;
private readonly proxyUrl?: string;
private readonly maxInputChars?: number;
private readonly timeoutMs: number;
private readonly logger?: Logger;
constructor(config: OpenAIEmbeddingConfig, logger?: Logger) {
if (!config.apiKey) {
throw new Error("EmbeddingService: apiKey is required for remote provider");
}
if (!config.baseUrl) {
throw new Error("EmbeddingService: baseUrl is required for remote provider");
}
if (!config.model) {
throw new Error("EmbeddingService: model is required for remote provider");
}
if (!config.dimensions || config.dimensions <= 0) {
throw new Error("EmbeddingService: dimensions is required for remote provider (must be a positive integer)");
}
this.baseUrl = config.baseUrl.replace(/\/+$/, "");
this.apiKey = config.apiKey;
this.model = config.model;
this.dims = config.dimensions;
this.sendDimensions = config.sendDimensions ?? true;
this.providerName = config.provider || "openai";
this.proxyUrl = config.proxyUrl?.trim() || undefined;
this.maxInputChars = config.maxInputChars && config.maxInputChars > 0 ? config.maxInputChars : undefined;
this.timeoutMs = config.timeoutMs && config.timeoutMs > 0 ? config.timeoutMs : DEFAULT_API_TIMEOUT_MS;
this.logger = logger;
}
getDimensions(): number {
return this.dims;
}
getProviderInfo(): EmbeddingProviderInfo {View on GitHub (pinned to 3efcd317b8)
Solutions
- Set config.dimensions to a positive integer matching the model's embedding size (e.g. 1536 for text-embedding-3-small)
- Guard the value before construction: if (!dims || dims <= 0) fail early in your own config loading
- If dimensions are unknown, configure them explicitly per the provider docs rather than leaving 0
Example fix
// before
new EmbeddingService({ apiKey: key, baseUrl: url, model: 'text-embedding-3-small', dimensions: 0 })
// after
new EmbeddingService({ apiKey: key, baseUrl: url, model: 'text-embedding-3-small', dimensions: 1536 }) Defensive patterns
Strategy: validation
Validate before calling
const dims = config?.dimensions;
if (!Number.isInteger(dims) || dims <= 0) {
throw new Error(`embedding dimensions must be a positive integer, got ${dims}`);
} Type guard
function hasPositiveDimensions(cfg): cfg is OpenAIEmbeddingConfig & { dimensions: number } {
return typeof cfg?.dimensions === 'number' && Number.isInteger(cfg.dimensions) && cfg.dimensions > 0;
} Try / catch
try {
svc = new EmbeddingService(config, logger);
} catch (e) {
if (String(e.message).includes('dimensions is required')) {
throw new ConfigError(`dimensions must be a positive integer, got: ${config?.dimensions}`);
}
throw e;
} Prevention
- Map each model name to its known dimensionality in a lookup table
- Never leave dimension values at 0 as a placeholder in config files
- Validate the whole config object once at startup
When it happens
Trigger: `new EmbeddingService(config)` where config.dimensions is undefined, 0, negative, or otherwise <= 0, with apiKey/baseUrl/model otherwise valid.
Common situations: Config JSON where dimensions was omitted or left at 0 pending 'auto-detect', computing dimensions from a variable that defaulted to 0, or copying config between models with different dimensionalities.
Related errors
- [skill-worker-pool] concurrency must be positive integer, go
- EmbeddingService: apiKey is required for remote provider
- EmbeddingService: baseUrl is required for remote provider
- EmbeddingService: model is required for remote provider
- llm.provider=proxy 且 useMemorySystemUserKey=false 时必须显式 llm.
AI-assisted analysis of TencentCloud/TencentDB-Agent-Memory@3efcd317b8 (2026-09-01).
Data as JSON: /api/errors/d08fdabb5c06d495.
Report an issue: GitHub.