zylon-ai/private-gpt · error · ImportError

Qdrant vector store dependencies are not installed. Install

Error message

Qdrant vector store dependencies are not installed. Install with `uv sync --inexact --extra vectorstore-qdrant`.

What it means

ImportError raised by QdrantVectorStoreFactory._build_client when importing qdrant_client_builder fails because the Qdrant optional dependencies ('vectorstore-qdrant' extra) are not installed. It wraps the raw ImportError with a formatted, actionable install message via format_missing_dependency_message.

Source

Thrown at private_gpt/components/vector_store/qdrant_factory.py:28

from private_gpt.utils.dependencies import format_missing_dependency_message

DEFAULT_COLLECTION = "zgptvector"


class QdrantVectorStoreFactory(VectorStoreFactory):
    def __init__(self, settings: Settings, embed_dim: int | None = None) -> None:
        super().__init__(settings)
        self._client: Any | None = None
        self._client_lock = Lock()
        self._embed_dim = embed_dim

    def _build_client(self) -> Any:
        try:
            from private_gpt.components.vector_store.qdrant_client_builder import (
                QdrantClientBuilder,
            )
        except ImportError as e:
            raise ImportError(
                format_missing_dependency_message(
                    "Qdrant vector store",
                    extras="vectorstore-qdrant",
                )
            ) from e

        return QdrantClientBuilder.build_clients(self.settings)

    def _ensure_client(self) -> None:
        if self._client is not None:
            return
        with self._client_lock:
            if self._client is None:
                self._client = self._build_client()

    def warm_up(self) -> None:
        self._ensure_client()

View on GitHub (pinned to 4a030776a3)

Solutions

  1. Install the extra: uv sync --inexact --extra vectorstore-qdrant (or pip install with the matching extra)
  2. Verify qdrant-client imports in the deployed environment afterwards
  3. If Qdrant is not intended, change vectorstore.database to an installed provider

Example fix

# before
uv sync --inexact
# after
uv sync --inexact --extra vectorstore-qdrant
Defensive patterns

Strategy: validation

Validate before calling

def qdrant_deps_available() -> bool:
    try:
        import private_gpt.components.vector_store.qdrant_client_builder  # noqa: F401
        return True
    except ImportError:
        return False

Try / catch

try:
    factory.warm_up()
except ImportError as e:
    if "vectorstore-qdrant" in str(e):
        # install the extra or switch vectorstore.database; do not retry as-is
        raise

Prevention

When it happens

Trigger: Setting vectorstore.database to 'qdrant' (or otherwise triggering client construction) in an environment installed without the vectorstore-qdrant extra; raised lazily on first _ensure_client()/_build_client() call (e.g. warm_up), not at import time.

Common situations: Minimal deployment images that skip optional extras; local dev installs with `uv sync --inexact` dropping extras; adding qdrant settings to an env whose lockfile lacks qdrant-client.

Related errors


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