mem0ai/mem0 · error · Error

Unsupported reranker provider: ${provider}

Error message

Unsupported reranker provider: ${provider}

What it means

Thrown by RerankerFactory.create when the reranker provider does not match a supported case (cohere, zero_entropy, sentence_transformer, huggingface, llm_reranker). It fires during construction of the reranker pipeline when the reranker.provider config string is unrecognized.

Source

Thrown at mem0-ts/src/oss/src/utils/factory.ts:240

      case "zero_entropy":
        return new ZeroEntropyReranker(config);
      case "sentence_transformer":
        return new CrossEncoderReranker(
          config,
          "Xenova/ms-marco-MiniLM-L-6-v2",
        );
      case "huggingface":
        return new CrossEncoderReranker(
          config,
          "Xenova/bge-reranker-base",
          512,
        );
      case "llm_reranker": {
        const llm = RerankerFactory.buildLLMRerankerLLM(config);
        return new LLMReranker(config, llm);
      }
      default:
        throw new Error(`Unsupported reranker provider: ${provider}`);
    }
  }

  private static buildLLMRerankerLLM(config: RerankerConfig): LLM {
    const nested = config.llm;
    let llmProvider: string;
    let llmConfig: LLMConfig;

    if (nested) {
      llmProvider = nested.provider || config.provider || "openai";
      llmConfig = { ...(nested.config || {}) };
      if (llmConfig.model === undefined) {
        llmConfig.model = config.model ?? "gpt-5-mini";
      }
      if (llmConfig.temperature === undefined) {
        llmConfig.temperature = config.temperature ?? 0.0;
      }
      if (llmConfig.maxTokens === undefined) {

View on GitHub (pinned to 001c235229)

Solutions

  1. Use one of the exact reranker provider ids in RerankerFactory.create (cohere, zero_entropy, sentence_transformer, huggingface, llm_reranker).
  2. For local cross-encoder reranking use 'huggingface' or 'sentence_transformer', not the class name.
  3. For LLM-based reranking use 'llm_reranker' and supply the nested llm config.

Example fix

// before
reranker: { provider: 'cross-encoder', config: {} }
// after
reranker: { provider: 'huggingface', config: {} }
Defensive patterns

Strategy: validation

Validate before calling

const RERANKERS = ['cohere','zero_entropy','sentence_transformer','huggingface','llm_reranker'];
function assertReranker(provider: string) {
  if (!RERANKERS.includes(provider.toLowerCase())) throw new Error(`Unsupported reranker '${provider}'`);
}

Type guard

const isKnownReranker = (p: string): boolean => RERANKERS.includes(p.toLowerCase());

Try / catch

try { new Memory(cfg) } catch (e) { if (e instanceof Error && /Unsupported reranker provider/.test(e.message)) { cfg.reranker = undefined; return new Memory(cfg); } throw e; }

Prevention

When it happens

Trigger: new Memory({ reranker: { provider: 'cross-encoder', config: {...} } }) (implementation class name instead of provider id), or reranker: { provider: 'hf' } instead of 'huggingface'.

Common situations: Reranker names differ from the Python SDK or from the underlying library names; enabling reranking for the first time by guessing the provider identifier; stale docs after a provider rename.

Related errors


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/ba7cdedb518c7c73. Report an issue: GitHub.