run-llama/llama_index · error · ValueError

Component {component} is not a supported data sink component

Error message

Component {component} is not a supported data sink component.

What it means

Thrown by ConfigurableComponent.from_component() in the ingestion data-sink module when the vector store instance you passed is not one of the enum's registered component types. The enum is built dynamically by build_configurable_data_sink_enum(), which only includes vector stores whose integration packages are importable at runtime. It exists to stop you from configuring a workflow data sink with an unsupported store.

Source

Thrown at llama-index-core/llama_index/core/ingestion/data_sinks.py:34

    name: str = Field(
        description="Unique and human-readable name for the type of data sink"
    )
    component_type: Type[BasePydanticVectorStore] = Field(
        description="Type of component that implements the data sink"
    )


class ConfigurableComponent(Enum):
    @classmethod
    def from_component(
        cls, component: BasePydanticVectorStore
    ) -> "ConfigurableComponent":
        component_class = type(component)
        for component_type in cls:
            if component_type.value.component_type == component_class:
                return component_type
        raise ValueError(
            f"Component {component} is not a supported data sink component."
        )

    def build_configured_data_sink(
        self, component: BasePydanticVectorStore
    ) -> "ConfiguredDataSink":
        component_type = self.value.component_type
        if not isinstance(component, component_type):
            raise ValueError(
                f"The enum value {self} is not compatible with component of "
                f"type {type(component)}"
            )
        return ConfiguredDataSink[component_type](  # type: ignore
            component=component, name=self.value.name
        )


def build_configurable_data_sink_enum() -> ConfigurableComponent:

View on GitHub (pinned to afd0fef371)

Solutions

  1. Install the integration package for the vector store you are using, e.g. pip install llama-index-vector-stores-chroma, then rebuild the enum.
  2. Pass the exact vector store class the enum member was built with (a subclass will not match because from_component compares type(component) with ==).
  3. If you do not need workflow serialization, use the vector store directly (e.g. VectorStoreIndex with storage_context) instead of wrapping it as a ConfiguredDataSink.
  4. Register/extend the enum via build_configurable_data_sink_enum() with your custom store's ComponentConfig if you need first-class support.

Example fix

# before: chroma integration not installed -> ValueError
from llama_index.core.ingestion.data_sinks import ConfigurableComponent
sink = ConfigurableComponent.from_component(my_store)  # raises

# after: install integration and pass the exact registered class
# pip install llama-index-vector-stores-chroma
from llama_index.vector_stores.chroma import ChromaVectorStore
sink = ConfigurableComponent.from_component(ChromaVectorStore(chroma_collection=col))
Defensive patterns

Strategy: type-guard

Validate before calling

from llama_index.core.ingestion.data_sinks import ConfigurableComponent

def is_supported_data_sink(store) -> bool:
    return any(
        m.value.component_type == type(store)
        for m in ConfigurableComponent
    )

Type guard

def is_supported_data_sink(store: BasePydanticVectorStore) -> bool:
    return any(m.value.component_type == type(store) for m in ConfigurableComponent)

Try / catch

try:
    member = ConfigurableComponent.from_component(store)
except ValueError as e:
    raise ConfigurationError(f'Vector store {type(store).__name__} not available; install its integration') from e

Prevention

When it happens

Trigger: Calling ConfigurableComponent.from_component(my_vector_store) where type(my_vector_store) is not the exact class referenced by any enum member's .value.component_type. This happens when the store's integration (e.g. llama-index-vector-stores-qdrant) is not installed, when you pass a subclass instead of the exact registered class, or when you pass a custom/homegrown vector store.

Common situations: Building a llama-index workflow data sink in an environment where vector-store integrations were partially installed; upgrading llama-index to the workflow-style configurable components while old custom vector stores are still in use; passing a wrapped or subclassed store (type() comparison is exact, so subclasses do not match).

Related errors


AI-assisted analysis of run-llama/llama_index@afd0fef371 (2026-08-15). Data as JSON: /api/errors/c7fa99cc8a859358. Report an issue: GitHub.