{"record":{"id":"c7fa99cc8a859358","repo":"run-llama/llama_index","slug":"component-component-is-not-a-supported-data-sink","errorCode":null,"errorMessage":"Component {component} is not a supported data sink component.","messagePattern":"Component (.+?) is not a supported data sink component\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/ingestion/data_sinks.py","lineNumber":34,"sourceCode":"\n    name: str = Field(\n        description=\"Unique and human-readable name for the type of data sink\"\n    )\n    component_type: Type[BasePydanticVectorStore] = Field(\n        description=\"Type of component that implements the data sink\"\n    )\n\n\nclass ConfigurableComponent(Enum):\n    @classmethod\n    def from_component(\n        cls, component: BasePydanticVectorStore\n    ) -> \"ConfigurableComponent\":\n        component_class = type(component)\n        for component_type in cls:\n            if component_type.value.component_type == component_class:\n                return component_type\n        raise ValueError(\n            f\"Component {component} is not a supported data sink component.\"\n        )\n\n    def build_configured_data_sink(\n        self, component: BasePydanticVectorStore\n    ) -> \"ConfiguredDataSink\":\n        component_type = self.value.component_type\n        if not isinstance(component, component_type):\n            raise ValueError(\n                f\"The enum value {self} is not compatible with component of \"\n                f\"type {type(component)}\"\n            )\n        return ConfiguredDataSink[component_type](  # type: ignore\n            component=component, name=self.value.name\n        )\n\n\ndef build_configurable_data_sink_enum() -> ConfigurableComponent:","sourceCodeStart":16,"sourceCodeEnd":52,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/ingestion/data_sinks.py#L16-L52","documentation":"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.","triggerScenarios":"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.","commonSituations":"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).","solutions":["Install the integration package for the vector store you are using, e.g. pip install llama-index-vector-stores-chroma, then rebuild the enum.","Pass the exact vector store class the enum member was built with (a subclass will not match because from_component compares type(component) with ==).","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.","Register/extend the enum via build_configurable_data_sink_enum() with your custom store's ComponentConfig if you need first-class support."],"exampleFix":"# before: chroma integration not installed -> ValueError\nfrom llama_index.core.ingestion.data_sinks import ConfigurableComponent\nsink = ConfigurableComponent.from_component(my_store)  # raises\n\n# after: install integration and pass the exact registered class\n# pip install llama-index-vector-stores-chroma\nfrom llama_index.vector_stores.chroma import ChromaVectorStore\nsink = ConfigurableComponent.from_component(ChromaVectorStore(chroma_collection=col))","handlingStrategy":"type-guard","validationCode":"from llama_index.core.ingestion.data_sinks import ConfigurableComponent\n\ndef is_supported_data_sink(store) -> bool:\n    return any(\n        m.value.component_type == type(store)\n        for m in ConfigurableComponent\n    )","typeGuard":"def is_supported_data_sink(store: BasePydanticVectorStore) -> bool:\n    return any(m.value.component_type == type(store) for m in ConfigurableComponent)","tryCatchPattern":"try:\n    member = ConfigurableComponent.from_component(store)\nexcept ValueError as e:\n    raise ConfigurationError(f'Vector store {type(store).__name__} not available; install its integration') from e","preventionTips":["Install every vector-store integration your workflows reference before building the enum","Never pass subclasses where the exact registered class is expected","Add a startup check that validates all configured stores against the enum"],"tags":["ingestion","vector-store","workflow","configuration"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}