{"record":{"id":"1ea8f0c3c63909c4","repo":"mastra-ai/mastra","slug":"retrieval-vector-true-requires-a-vector-st","errorCode":null,"errorMessage":"`retrieval: { vector: true }` requires a vector store. Pass a `vector` option to your Memory instance.","messagePattern":"`retrieval: (.+?)` requires a vector store\\. Pass a `vector` option to your Memory instance\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/memory/src/index.ts","lineNumber":504,"sourceCode":"\n    const mergedConfig = this.getMergedThreadConfig({\n      workingMemory: config.options?.workingMemory || {\n        // these defaults are now set inside @mastra/core/memory in getMergedThreadConfig.\n        // In a future release we can remove it from this block - for now if we remove it\n        // and someone bumps @mastra/memory without bumping @mastra/core the defaults wouldn't exist yet\n        enabled: false,\n        template: this.defaultWorkingMemoryTemplate,\n      },\n      observationalMemory: config.options?.observationalMemory as ObservationalMemoryOptions | boolean | undefined,\n    });\n    this.assertWorkingMemoryStateSignalsCompatibility(mergedConfig);\n    this.threadConfig = mergedConfig;\n\n    // Validate retrieval vector config at construction time\n    const omConfig = normalizeObservationalMemoryConfig(mergedConfig.observationalMemory);\n    if (omConfig?.retrieval && typeof omConfig.retrieval === 'object' && omConfig.retrieval.vector) {\n      if (!this.vector) {\n        throw new Error(\n          '`retrieval: { vector: true }` requires a vector store. Pass a `vector` option to your Memory instance.',\n        );\n      }\n      if (!this.embedder) {\n        throw new Error(\n          '`retrieval: { vector: true }` requires an embedder. Pass an `embedder` option to your Memory instance.',\n        );\n      }\n    }\n    if (omConfig?.experimental_subconscious) {\n      if (!this.vector) {\n        throw new Error('Subconscious semantic knowledge requires a vector store. Pass a `vector` option to Memory.');\n      }\n      if (!this.embedder) {\n        throw new Error('Subconscious semantic knowledge requires an embedder. Pass an `embedder` option to Memory.');\n      }\n    }\n  }","sourceCodeStart":486,"sourceCodeEnd":522,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/memory/src/index.ts#L486-L522","documentation":"Observational memory's retrieval can be configured with `retrieval: { vector: true }`, which performs semantic retrieval against a vector store. The Memory constructor validates this at construction time and throws immediately if no `vector` store was provided to the Memory instance, failing fast instead of at query time.","triggerScenarios":"Creating `new Memory({ ..., options: { observationalMemory: { retrieval: { vector: true } } } })` without a `vector` option (e.g. LibSQLStore/PGVector) in the Memory constructor options.","commonSituations":"Enabling vector retrieval after initially building Memory without a vector store; copying an example config but omitting the vector option; environment where vector storage is disabled or not yet provisioned.","solutions":["Pass a `vector` option (e.g. `new LibSQLVector(...)` or `new PGVector(...)`) to the Memory constructor","Set `retrieval.vector: false` (or omit retrieval) if semantic vector retrieval is not needed","Ensure the vector store dependency is installed and its connection config is valid"],"exampleFix":"// before\nnew Memory({ options: { observationalMemory: { retrieval: { vector: true } } } })\n// after\nnew Memory({ vector: new LibSQLVector({ connectionUrl: process.env.DB_URL }), options: { observationalMemory: { retrieval: { vector: true } } } })","handlingStrategy":"validation","validationCode":"if (memoryOptions.options?.observationalMemory?.retrieval?.vector && !memoryOptions.vector) {\n  throw new Error('retrieval.vector=true requires a vector option on Memory');\n}","typeGuard":null,"tryCatchPattern":"try {\n  const memory = new Memory(opts);\n} catch (err) {\n  if (err instanceof Error && err.message.includes('requires a vector store')) {\n    // construct a vector store and rebuild Memory\n  } else throw err;\n}","preventionTips":["Treat retrieval.vector=true as implying vector+embedder requirements; set them together","Build Memory configs from a factory that enforces the pairing","Enable vector retrieval only in environments with a provisioned vector store","Fail fast in CI by constructing Memory with production-equivalent config"],"tags":["configuration","vector-store","observational-memory","validation"],"backgroundTag":"missing-vector-store","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T08:17:16.595Z"}