zylon-ai/private-gpt · error · ValueError
Vector store for collection {collection} does not support ge
Error message
Vector store for collection {collection} does not support get_nodes What it means
`get_nodes` requires the resolved vector store to expose a `get_nodes` method (an extension beyond llama-index's standard `BasePydanticVectorStore` interface, checked via `hasattr`). Stores that only implement standard query/delete lack it, so retrieval-by-nodes is unsupported and the component raises `ValueError` naming the collection.
Source
Thrown at private_gpt/components/node_store/node_store_component.py:115
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)
if vector_store is None:
raise ValueError(f"Vector store for collection {collection} not found")
if not hasattr(vector_store, "get_nodes"):
raise ValueError(
f"Vector store for collection {collection} does not support get_nodes"
)
if artifacts:
artifact_filters = MetadataFilters(
filters=[
MetadataFilter(key=MetadataKeys.ARTIFACT_ID.value, value=artifact)
for artifact in artifacts
],
condition=FilterCondition.OR,
)
filters = (
MetadataFilters(
filters=[filters, artifact_filters],
condition=FilterCondition.AND,
)
if filters
else artifact_filtersView on GitHub (pinned to 4a030776a3)
Solutions
- Use a vector store implementation that implements `get_nodes` (the project's qdrant-based factory stores do)
- Add a `get_nodes(...)` method to the custom store class delegating to its backend's fetch-by-id/filter API
- Avoid the `get_nodes` code path (node_ids/artifacts retrieval) for backends without support
Example fix
// before
class MyVectorStore(BasePydanticVectorStore): # no get_nodes
...
node_store.get_nodes("col", node_ids=[...]) # ValueError
// after
class MyVectorStore(BasePydanticVectorStore):
def get_nodes(self, node_ids=None, filters=None, limit=None):
return self._backend.fetch(node_ids=node_ids, filters=filters, limit=limit) Defensive patterns
Strategy: type-guard
Validate before calling
store = vector_store_component.vector_store(collection)
if store is not None and not hasattr(store, "get_nodes"):
raise ValueError(f"{type(store).__name__} cannot serve get_nodes; pick another backend") Type guard
def store_supports_get_nodes(store: Any) -> bool:
return hasattr(store, "get_nodes") and callable(store.get_nodes) Try / catch
try:
nodes = node_store.get_nodes(collection, artifacts=[...])
except ValueError as e:
if "does not support get_nodes" in str(e):
raise ConfigurationError("backend lacks node retrieval; switch store") from e
raise Prevention
- Declare a minimal Protocol (get_nodes, delete_nodes) for stores and type-annotate factories against it
- Run a capability matrix test per vector store backend in CI
When it happens
Trigger: Configuring a vector store backend whose implementation lacks the `get_nodes` extension (only some custom/qdrant-derived stores implement it); calling `get_nodes`/artifact filtering paths against such a backend; upgrading a custom store that dropped the method.
Common situations: Switching vectorstore provider (e.g. to a vanilla llama-index store) while code paths call node retrieval; custom vector store wrappers not kept in sync with the project's extended interface.
Related errors
- Vector store for collection {collection} not found
- zpgt.ingest.no_valid_nodes.error
- LLM does not support structured chat.
- group_id must be provided for logical multitenancy
- Hybrid search is not enabled. Please build the query with `e
AI-assisted analysis of zylon-ai/private-gpt@4a030776a3 (2026-08-15).
Data as JSON: /api/errors/51d573521a0bc88b.
Report an issue: GitHub.