{"record":{"id":"9e14ed4ddb99e719","repo":"mastra-ai/mastra","slug":"embedder-returned-no-usable-embedding-for-the-dime","errorCode":null,"errorMessage":"Embedder returned no usable embedding for the dimension probe.","messagePattern":"Embedder returned no usable embedding for the dimension probe\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/core/src/memory/memory.ts","lineNumber":308,"sourceCode":"   */\n  private _embeddingDimensionPromise?: Promise<number | undefined>;\n\n  /**\n   * Probe the embedder to determine its actual output dimension.\n   * The result is cached so subsequent calls are free.\n   */\n  protected async getEmbeddingDimension(): Promise<number | undefined> {\n    if (!this.embedder) return undefined;\n    if (!this._embeddingDimensionPromise) {\n      this._embeddingDimensionPromise = (async () => {\n        try {\n          const result = await this.embedder!.doEmbed({\n            values: ['a'],\n            ...(this.embedderOptions || {}),\n          } as any);\n          const dimension = result.embeddings[0]?.length;\n          if (!dimension) {\n            throw new Error('Embedder returned no usable embedding for the dimension probe.');\n          }\n          return dimension;\n        } catch (e) {\n          throw new MastraError(\n            {\n              id: 'MASTRA_MEMORY_GET_EMBEDDING_DIMENSION_FAILED',\n              domain: ErrorDomain.MASTRA_VECTOR,\n              category: 'THIRD_PARTY',\n              text:\n                `Failed to determine the embedder's output dimension. Semantic recall cannot safely select a ` +\n                `vector index until the embedder returns a usable embedding. Check that the embedder is reachable ` +\n                `and correctly configured.`,\n            },\n            e,\n          );\n        }\n      })();\n    }","sourceCodeStart":290,"sourceCodeEnd":326,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/core/src/memory/memory.ts#L290-L326","documentation":"Memory probes the embedder's output dimension by embedding the single string 'a' via doEmbed and reading embeddings[0].length. This plain Error is thrown when the probe result is empty, undefined, or zero-length, meaning no usable vector came back. It is then caught and wrapped as MASTRA_MEMORY_GET_EMBEDDING_DIMENSION_FAILED (error 1423).","triggerScenarios":"Calling getEmbeddingDimension/embeddingDimension when the embedder's doEmbed returns embeddings[0] undefined or an empty array — e.g. a mock/stub embedder returning { embeddings: [] }, or a provider returning an unexpected response shape.","commonSituations":"Fake embedders in tests that return empty embeddings; provider API changes where the response nests vectors differently; embedders configured with options that filter or limit output; broken API keys causing silently empty responses from unusual providers.","solutions":["Inspect the embedder's doEmbed response shape and return embeddings: [[number, ...]] with at least one vector.","Log the raw doEmbed result to confirm the provider returned a vector and fix the response mapping.","Pass a supported, tested embedder implementation (FastEmbed or an AI SDK embedding model) rather than a custom stub."],"exampleFix":"// before (stub embedder)\ndoEmbed: async () => ({ embeddings: [] });\n\n// after\ndoEmbed: async ({ values }) => ({ embeddings: [new Array(1536).fill(0)] });","handlingStrategy":"type-guard","validationCode":"const res = await embedder.doEmbed({ values: ['a'] });\nif (!Array.isArray(res.embeddings) || !res.embeddings[0]?.length) {\n  throw new Error('Embedder returned empty embeddings; fix provider response mapping');\n}","typeGuard":"function hasUsableEmbedding(r) {\n  return !!r && Array.isArray(r.embeddings) && Array.isArray(r.embeddings[0]) && r.embeddings[0].length > 0;\n}","tryCatchPattern":null,"preventionTips":["Validate embedder stubs in tests return embeddings: [[...]] with realistic length.","Log raw doEmbed responses when integrating a new provider.","Use tested embedder implementations rather than ad-hoc wrappers."],"tags":["memory","embedder","dimension-probe","empty-response"],"backgroundTag":"empty-embedder-response","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}