Mintplex-Labs/anything-llm · error · Error

Lemonade Failed to embed: [${error.type}]: ${error.message}

Error message

Lemonade Failed to embed: [${error.type}]: ${error.message}

What it means

Thrown inside the embedChunks loop when a batch resolves with an error (either a result.error payload or a rejected promise). The message is formatted 'Lemonade Failed to embed: [<type>]: <message>' where type defaults to 'failed_to_embed' (or the HTTP status) and message defaults to the upstream error text. The loop logs the message then throws on the first failing batch.

Source

Thrown at server/utils/EmbeddingEngines/lemonade/index.js:81

              });
              return;
            }
            resolve({ data: result?.data, error: null });
          })
          .catch((e) => {
            e.type =
              e?.response?.data?.error?.code ||
              e?.response?.status ||
              "failed_to_embed";
            e.message = e?.response?.data?.error?.message || e.message;
            resolve({ data: [], error: e });
          });
      });

      if (error) {
        const errorMsg = `Lemonade Failed to embed: [${error.type}]: ${error.message}`;
        this.log(errorMsg);
        throw new Error(errorMsg);
      }
      allResults.push(...(data || []));
      reportEmbeddingProgress(
        Math.min(allResults.length, textChunks.length),
        textChunks.length
      );
    }

    return allResults.length > 0 &&
      allResults.every((embd) => embd.hasOwnProperty("embedding"))
      ? allResults.map((embd) => embd.embedding)
      : null;
  }
}

module.exports = {
  LemonadeEmbedder,
};

View on GitHub (pinned to 526360e320)

Solutions

  1. Read [<type>]: <message>: 'failed_to_embed' with a status -> inspect the Lemonade server logs; 'model not found' -> fix EMBEDDING_MODEL_PREF / load the model; auth errors -> set LEMONADE_LLM_API_KEY.
  2. Confirm the Lemonade server is up at the parsed endpoint and the model is loaded (hit its /v1/models equivalent).
  3. Reduce maxConcurrentChunks (default 50) and chunk size to fit local hardware limits.
  4. Restart the Lemonade server and retry once it is healthy; partial vectors are not returned.

Example fix

// before
if (error) {
  const errorMsg = `Lemonade Failed to embed: [${error.type}]: ${error.message}`;
  this.log(errorMsg);
  throw new Error(errorMsg);
}

// after (collect per-batch failures, continue best-effort)
if (error) {
  this.log(`Lemonade batch failed: [${error.type}]: ${error.message}`);
  failedBatches.push(chunk);
  continue;
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-flight: confirm Lemonade exposes the embedding model before bulk
const { OpenAI } = require('openai');
const { parseLemonadeServerEndpoint } = require('../../AiProviders/lemonade');
const client = new OpenAI({ baseURL: parseLemonadeServerEndpoint(process.env.EMBEDDING_BASE_PATH, 'openai'), apiKey: process.env.LEMONADE_LLM_API_KEY || null });
const list = await client.models.list();
if (!list.body.some((m) => m.id === process.env.EMBEDDING_MODEL_PREF)) {
  throw new Error(`Lemonade does not expose model ${process.env.EMBEDDING_MODEL_PREF}`);
}

Try / catch

try {
  await embedder.embedChunks(chunks);
} catch (e) {
  const msg = e.message;
  if (/model.*not|404|not.found/i.test(msg)) loadModel();
  else if (/unauthorized|401/i.test(msg)) setApiKey();
  else if (/econnrefused|timeout|socket/i.test(msg)) waitForServer();
  else throw e;
}

Prevention

When it happens

Trigger: EMBEDDING_MODEL_PREF names a model not loaded in the Lemonade server; the Lemonade server is down/unreachable mid-run; LEMONADE_LLM_API_KEY required but unset/invalid; chunks exceed the model's capacity; the server returns a non-2xx with an error body.

Common situations: Local Lemonade server restarted without reloading the embedding model; wrong model id; resource limits on the GPU causing failures on large batches; auth enabled on the server but key unset.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13). Data as JSON: /api/errors/641f4b1f225e646d. Report an issue: GitHub.