zylon-ai/private-gpt · error · ValueError
Node store '{index_store}' is not supported. Available: {ava
Error message
Node store '{index_store}' is not supported. Available: {available} What it means
`NodeStoreComponent.index_store(collection)` resolves the configured `settings.node_store.index_store` string against the `_PROVIDERS` registry dict; an unknown value raises `ValueError` listing the supported keys. The placeholders `{index_store}`/`{available}` in the catalog are the f-string fields: the configured provider name and the sorted, comma-joined registry keys (or 'none').
Source
Thrown at private_gpt/components/node_store/node_store_component.py:93
def register_index_store(name: str, provider: IndexStoreProvider) -> None:
_PROVIDERS[name] = provider
@singleton
class NodeStoreComponent:
@inject
def __init__(
self, settings: Settings, vector_store_component: VectorStoreComponent
) -> None:
self._settings = settings
self._vector_store_component = vector_store_component
def index_store(self, collection: str) -> BaseIndexStore:
provider = _PROVIDERS.get(self._settings.node_store.index_store)
if provider is None:
available = ", ".join(sorted(_PROVIDERS)) or "none"
raise ValueError(
f"Node store '{self._settings.node_store.index_store}' is not supported. "
f"Available: {available}"
)
return provider(self._settings, collection)
@property
def max_nodes(self) -> int | None:
return self._settings.data.max_num_nodes or None
def get_nodes(
self,
collection: str,
artifacts: list[str] | None = None,
node_ids: list[str] | None = None,
filters: MetadataFilters | None = None,
limit: int | None = None,
) -> list[BaseNode]:
vector_store = self._vector_store_component.vector_store(collection)View on GitHub (pinned to 4a030776a3)
Solutions
- Read the error's Available list and set `node_store.index_store` to one of those exact values
- Check for typos/casing in settings (providers are matched case-sensitively via dict lookup)
- If a provider you expect is missing, upgrade to the version that ships it or install its extra dependency
Example fix
# before node_store: index_store: postgresql # typo # after node_store: index_store: postgres
Defensive patterns
Strategy: validation
Validate before calling
from private_gpt.components.node_store.node_store_component import _PROVIDERS
if settings.node_store.index_store not in _PROVIDERS:
raise ValueError(
f"index_store must be one of {sorted(_PROVIDERS)}, got {settings.node_store.index_store!r}"
) Type guard
def is_supported_index_store(name: str) -> bool:
from private_gpt.components.node_store.node_store_component import _PROVIDERS
return name in _PROVIDERS Try / catch
try:
node_store.index_store(collection)
except ValueError as e:
if "not supported" in str(e):
raise ConfigurationError(str(e)) from e
raise Prevention
- Validate settings against the provider registry at app startup with a fail-fast schema check
- Add a settings lint test comparing config values to _PROVIDERS keys in CI
When it happens
Trigger: Setting `node_store.index_store` to a typo'd or non-registered value (e.g. 'postgresql' instead of 'postgres', 'Postgres' with wrong casing); referencing a provider added in a newer version while running an older build; registry empty so available prints 'none'.
Common situations: Hand-edited settings.yaml typos; copying config from docs of a different version; renaming of providers across releases; case-sensitivity surprises.
Related errors
- Vector store '{settings.vectorstore.database}' is not suppor
- Default LLM model '{model_id}' could not be initialized: {e}
- Default model '{self._default_model_id}' not found in regist
- No model specified and no models are configured
- RemoteTokenizeTokenizer is not available with the given conf
AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15).
Data as JSON: /api/errors/40df00a668dc144f.
Report an issue: GitHub.