{"record":{"id":"a307cdaa79a5a655","repo":"mem0ai/mem0","slug":"label-dimension-mismatch-expected-this-dimen","errorCode":null,"errorMessage":"${label} dimension mismatch. Expected ${this.dimension}, got ${vector.length}","messagePattern":"(.+?) dimension mismatch\\. Expected (.+?), got (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"mem0-ts/src/oss/src/vector_stores/cassandra.ts","lineNumber":589,"sourceCode":"        }\n        if (\n          !value.every(\n            (entry: SearchFilters) => !this.filterVector(vector, entry),\n          )\n        ) {\n          return false;\n        }\n      } else if (!this.matchFieldCondition(vector.payload, key, value)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  private assertVectorDimension(vector: number[], label: string): void {\n    if (vector.length !== this.dimension) {\n      throw new Error(\n        `${label} dimension mismatch. Expected ${this.dimension}, got ${vector.length}`,\n      );\n    }\n  }\n\n  private assertBatchDimensions(vectors: number[][], label: string): void {\n    for (const vector of vectors) {\n      this.assertVectorDimension(vector, label);\n    }\n  }\n\n  private async scanRows(\n    query: string,\n    onRow: (row: any) => Promise<void>,\n    fetchSize: number,\n  ): Promise<void> {\n    let pageState: string | undefined;\n","sourceCodeStart":571,"sourceCodeEnd":607,"githubUrl":"https://github.com/mem0ai/mem0/blob/001c235229be8795e3834520467bd0d661ed8f34/mem0-ts/src/oss/src/vector_stores/cassandra.ts#L571-L607","documentation":"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.","triggerScenarios":"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.","commonSituations":"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).","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"],"exampleFix":"// before\nnew Cassandra({ collectionName: 'mem', embeddingDimensions: 1536 });\n// embedder: OpenAI text-embedding-3-large (3072 dims)\n\n// after\nnew Cassandra({ collectionName: 'mem', embeddingDimensions: 3072 });","handlingStrategy":"validation","validationCode":"const dim = await embedder.embed('test').then((v) => v.length);\nif (dim !== storeConfig.embeddingDimensions) {\n  throw new Error(`embeddingDimensions=${storeConfig.embeddingDimensions} but embedder outputs ${dim}`);\n}","typeGuard":null,"tryCatchPattern":"try { await store.add(vectors, payloads); } catch (e) { if (e instanceof Error && /dimension mismatch/.test(e.message)) { /* reconfigure collection */ } throw e; }","preventionTips":["Derive embeddingDimensions from the embedder, never hardcode it twice","When changing embedding models, create a new collection and migrate"],"tags":["cassandra","embeddings","validation","vector-store"],"backgroundTag":null,"analyzedSha":"001c235229be8795e3834520467bd0d661ed8f34","analyzedAt":"2026-08-15T01:55:42.685Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}