microsoft/graphrag · error · ValueError
ModelConfig.type '{strategy}' is not registered in the Compl
Error message
ModelConfig.type '{strategy}' is not registered in the CompletionFactory. Registered strategies: {', '.join(embedding_factory.keys())} What it means
create_embedding dispatches on ModelConfig.type against the registered embedding factory; an unregistered type hits the catch-all case and raises with the list of registered strategies. Note the message text mentions CompletionFactory even though this is the embedding factory (cosmetic bug in the message).
Source
Thrown at packages/graphrag-llm/graphrag_llm/embedding/embedding_factory.py:106
from graphrag_llm.embedding.lite_llm_embedding import (
LiteLLMEmbedding,
)
register_embedding(
embedding_type=LLMProviderType.LiteLLM,
embedding_initializer=LiteLLMEmbedding,
scope="singleton",
)
case LLMProviderType.MockLLM:
from graphrag_llm.embedding.mock_llm_embedding import MockLLMEmbedding
register_embedding(
embedding_type=LLMProviderType.MockLLM,
embedding_initializer=MockLLMEmbedding,
)
case _:
msg = f"ModelConfig.type '{strategy}' is not registered in the CompletionFactory. Registered strategies: {', '.join(embedding_factory.keys())}"
raise ValueError(msg)
tokenizer = tokenizer or create_tokenizer(TokenizerConfig(model_id=model_id))
rate_limiter: RateLimiter | None = None
if model_config.rate_limit:
from graphrag_llm.rate_limit.rate_limit_factory import create_rate_limiter
rate_limiter = create_rate_limiter(rate_limit_config=model_config.rate_limit)
retrier: Retry | None = None
if model_config.retry:
from graphrag_llm.retry.retry_factory import create_retry
retrier = create_retry(retry_config=model_config.retry)
metrics_store: MetricsStore = NoopMetricsStore()
metrics_processor: MetricsProcessor | None = None
if model_config.metrics:View on GitHub (pinned to f40e9a26ce)
Solutions
- Check the error's 'Registered strategies' list and set model_config.type to one of those values (e.g. LLMProviderType.LiteLLM or the mock type for tests)
- If you have a custom embedding, register it first with register_embedding(embedding_type=<your type>, embedding_initializer=YourClass) before calling create_embedding
- If you meant to create a chat completion client, call create_completion instead of create_embedding
Example fix
# before create_embedding(model_config=ModelConfig(type=LLMProviderType.OpenAI, ...)) # after create_embedding(model_config=ModelConfig(type=LLMProviderType.LiteLLM, model="text-embedding-3-small", ...))
Defensive patterns
Strategy: try-catch
Validate before calling
from graphrag_llm.embedding.embedding_factory import embedding_factory
# (or parse the registered-strategies list from the error)
if model_config.type not in KNOWN_EMBEDDING_TYPES: # e.g. {LLMProviderType.LiteLLM, LLMProviderType.MockLLM}
raise ValueError(f"{model_config.type} has no embedding backend") Type guard
def is_valid_embedding_type(t: LLMProviderType) -> bool:
return t in {LLMProviderType.LiteLLM, LLMProviderType.MockLLM} Try / catch
try:
embedder = create_embedding(model_config=cfg)
except ValueError as e:
if "is not registered in the" in str(e):
cfg.type = LLMProviderType.LiteLLM
embedder = create_embedding(model_config=cfg)
else:
raise Prevention
- Keep a set of valid embedding types in your config layer and assert before factory calls
- Register custom embeddings once at import time in a bootstrap module
- Don't reuse completion ModelConfig objects for embedding calls
When it happens
Trigger: Calling create_embedding(model_config) where model_config.type is not one of the registered embedding types (e.g. a completion-only provider type, a typo, or a new provider not registered via register_embedding).
Common situations: Passing a completion ModelConfig to create_embedding; upgrading graphrag-llm where a provider key/enum changed; custom embedding registered under a different LLMProviderType than the config uses.
Related errors
- MetricsConfig.processor '{strategy}' is not registered in th
- ModelConfig.mock_responses must be a non-empty list of embed
- MetricsConfig.store '{strategy}' is not registered in the Me
- MetricsConfig.writer '{strategy}' is not registered in the M
- RateLimitConfig.type '{strategy}' is not registered in the R
AI-assisted analysis of microsoft/graphrag@f40e9a26ce (2026-08-27).
Data as JSON: /api/errors/e1824be4ebcb0cf2.
Report an issue: GitHub.