Mintplex-Labs/anything-llm · error

${errors[0]}

Error message

${errors[0]}

What it means

Surfaced when Document.addDocuments returns a non-empty failedToEmbed array after the collector already processed the text (POST /browser-extension/embed-content). This is the vector-store write path: the first per-file error from errors is returned. Typical root causes are embedder/vector-dimension mismatches (workspace embedder changed after vectors existed), an invalid or out-of-quota embedder API key, or a vector DB (local LanceDB folder or external provider) that is unwritable or unreachable.

Source

Thrown at server/endpoints/browserExtension.js:115

        const Collector = new CollectorApi();
        const { success, reason, documents } = await Collector.processRawText(
          textContent,
          metadata
        );

        if (!success) {
          response.status(500).json({ success: false, error: reason });
          return;
        }

        const { failedToEmbed = [], errors = [] } = await Document.addDocuments(
          workspace,
          [documents[0].location],
          user?.id
        );

        if (failedToEmbed.length > 0) {
          response.status(500).json({ success: false, error: errors[0] });
          return;
        }

        await Telemetry.sendTelemetry("browser_extension_embed_content");
        response.status(200).json({ success: true });
      } catch (error) {
        console.error(error);
        response.status(500).json({ error: "Failed to embed content" });
      }
    }
  );

  app.post(
    "/browser-extension/upload-content",
    [validBrowserExtensionApiKey],
    async (request, response) => {
      try {
        const { textContent, metadata } = reqBody(request);

View on GitHub (pinned to 3aec848f28)

Solutions

  1. Read errors[0] - it is the raw embedder/vector-DB error (dimension mismatch text, 401, ECONNREFUSED) and names the failing component.
  2. In Admin -> Embedder Preferences, confirm provider, key, and model still match what the workspace was created with.
  3. If you intentionally changed embedders, clear the workspace's embedded documents (or embed into a fresh workspace) so index dimensions match the new embedder.
  4. Verify the vector DB location is writable (local) or the provider is reachable (external).
Defensive patterns

Strategy: validation

Validate before calling

const embedder = await getSystemPreferences(); // admin API
if (!embedder?.EmbeddingEngine && !isDefaultOk) throw new Error('No embedder configured');
await testEmbedderConnection(); // admin 'test embedder' endpoint before bulk embedding

Try / catch

try { await embedContent(apiKey, payload); }
catch (e) {
  if (e.status === 500 && e.body?.success === false) {
    // errors[0] is the raw embedder error - dimension/auth text means config, not retry
    throw new Error(`Embedding backend rejected the doc: ${e.body.error}`);
  }
  throw e;
}

Prevention

When it happens

Trigger: Workspace embedder switched (e.g. default -> OpenAI) so new vectors have a different dimension than the index expects; embedder provider key invalid/expired (401 surfaced in errors[0]); vector DB storage path read-only or corrupted; Ollama/local embedder endpoint down.

Common situations: Changing Embedder Preferences after documents were already embedded; provider outage mid-batch; container storage volume permissions changed.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18). Data as JSON: /api/errors/8810384762ce1a28. Report an issue: GitHub.