zylon-ai/private-gpt · error · ValueError

Vector store '{settings.vectorstore.database}' is not suppor

Error message

Vector store '{settings.vectorstore.database}' is not supported. Available: {available}

What it means

ValueError raised by VectorStoreComponent.__init__ when settings.vectorstore.database is not a key in the provider map ({'qdrant': QdrantVectorStoreFactory, **_PROVIDERS}). The message lists the sorted set of supported provider names, so it doubles as a discovery aid.

Source

Thrown at private_gpt/components/vector_store/vector_store_component.py:48

    _factory: VectorStoreFactory
    _embedding_component: EmbeddingComponent

    @inject
    def __init__(
        self,
        settings: Settings,
        embedding_component: EmbeddingComponent,
    ) -> None:
        from private_gpt.components.vector_store.qdrant_factory import (
            QdrantVectorStoreFactory,
        )

        self._settings = settings
        all_providers = {"qdrant": QdrantVectorStoreFactory, **_PROVIDERS}
        provider = all_providers.get(settings.vectorstore.database)
        if provider is None:
            available = ", ".join(sorted(all_providers)) or "none"
            raise ValueError(
                f"Vector store '{settings.vectorstore.database}' is not supported. "
                f"Available: {available}"
            )

        embed_dim: int = settings.vectorstore.embed_dim
        embed_models = embedding_component.embed_models
        if len(embed_models) > 1:
            logger.warning(
                "Multiple embedding models are configured, "
                "but VectorStoreComponent only supports one. "
                "Using the first one found: %s",
                next(iter(embed_models)),
            )

        if embed_models:
            first_embed_model = next(iter(embed_models.values()))
            embed_dim = first_embed_model.embed_dim or embed_dim

View on GitHub (pinned to 4a030776a3)

Solutions

  1. Set vectorstore.database to one of the names listed in the error message (exact case, e.g. 'qdrant')
  2. If a non-default provider is wanted, install/enable the component that registers it into _PROVIDERS before startup
  3. Print sorted({**_PROVIDERS}) or check the error message output to confirm available names

Example fix

# before (settings)
vectorstore:
  database: Qdrant  # wrong case
# after
vectorstore:
  database: qdrant
Defensive patterns

Strategy: validation

Validate before calling

from private_gpt.components.vector_store.vector_store_component import _PROVIDERS

_ALLOWED = {"qdrant", *_PROVIDERS}
assert settings.vectorstore.database in _ALLOWED, (
    f"vectorstore.database must be one of {sorted(_ALLOWED)}"
)

Try / catch

try:
    component = VectorStoreComponent(settings, embedding_component)
except ValueError as e:
    if "is not supported" in str(e):
        # read the Available list from the message, fix the setting, restart
        raise

Prevention

When it happens

Trigger: Setting vectorstore.database to a misspelled or unregistered value (e.g. 'Qdrant', 'chroma' when no chroma plugin registered, 'postgres'); raising happens at component construction (startup), making it fail-fast.

Common situations: Typos and case mismatches in settings/env vars (VECTORSTORE_DATABASE=qdrant vs 'Qdrant'); docs referencing a provider that requires an extra plugin registering into _PROVIDERS; version upgrades removing a provider.

Related errors


AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15). Data as JSON: /api/errors/8880863578277b63. Report an issue: GitHub.