mem0ai/mem0 · error · Error
${label} dimension mismatch. Expected ${this.dimension}, got
Error message
${label} dimension mismatch. Expected ${this.dimension}, got ${vector.length} What it means
The Cassandra store stores fixed-width vectors in CQL, so every vector written or queried must have exactly this.dimension components (the embeddingDimensions from config). assertVectorDimension() is called on inserts and queries and throws with the expected vs actual length.
Source
Thrown at mem0-ts/src/oss/src/vector_stores/cassandra.ts:589
}
if (
!value.every(
(entry: SearchFilters) => !this.filterVector(vector, entry),
)
) {
return false;
}
} else if (!this.matchFieldCondition(vector.payload, key, value)) {
return false;
}
}
return true;
}
private assertVectorDimension(vector: number[], label: string): void {
if (vector.length !== this.dimension) {
throw new Error(
`${label} dimension mismatch. Expected ${this.dimension}, got ${vector.length}`,
);
}
}
private assertBatchDimensions(vectors: number[][], label: string): void {
for (const vector of vectors) {
this.assertVectorDimension(vector, label);
}
}
private async scanRows(
query: string,
onRow: (row: any) => Promise<void>,
fetchSize: number,
): Promise<void> {
let pageState: string | undefined;
View on GitHub (pinned to 001c235229)
Solutions
- Align embeddingDimensions in the vector store config with the embedder's actual output dimension
- If the embedder changed, use a new collection/table with the correct dimension — existing rows cannot be resized
- Verify with a one-off: embed a test string and check vector.length before configuring the store
Example fix
// before
new Cassandra({ collectionName: 'mem', embeddingDimensions: 1536 });
// embedder: OpenAI text-embedding-3-large (3072 dims)
// after
new Cassandra({ collectionName: 'mem', embeddingDimensions: 3072 }); Defensive patterns
Strategy: validation
Validate before calling
const dim = await embedder.embed('test').then((v) => v.length);
if (dim !== storeConfig.embeddingDimensions) {
throw new Error(`embeddingDimensions=${storeConfig.embeddingDimensions} but embedder outputs ${dim}`);
} Try / catch
try { await store.add(vectors, payloads); } catch (e) { if (e instanceof Error && /dimension mismatch/.test(e.message)) { /* reconfigure collection */ } throw e; } Prevention
- Derive embeddingDimensions from the embedder, never hardcode it twice
- When changing embedding models, create a new collection and migrate
When it happens
Trigger: Configuring the store with embeddingDimensions: 1536 but searching with a 3072-dim OpenAI text-embedding-3-large vector; or adding memories whose embedder differs from the one used at store creation; batch inserts where one vector has a different length.
Common situations: Switching embedding models after memories already exist; different default dimensions between the LLM/embedding config and the vector store config; mixing embedders across environments (dev uses a small local model, prod uses OpenAI).
Related errors
- When embeddings are enabled, all payloads must contain a 'da
- Unknown embedder provider: ${providerId}
- AWS Bedrock requires both awsAccessKeyId and awsSecretAccess
- Azure OpenAI requires both API key and endpoint
- Unsupported FastEmbed model "${config.model}". Supported mod
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/a307cdaa79a5a655.
Report an issue: GitHub.