langgenius/dify · error · ValueError

Vector store {vector_type} is not supported.

Error message

Vector store {vector_type} is not supported.

What it means

ValueError raised in the create-dataset-index migration when vector_type does not match upper_collection_vector_types, is not QDRANT, and does not match lower_collection_vector_types. The migration only supports a known set of vector backends; anything else is rejected before computing a collection name.

Source

Thrown at api/commands/vector.py:229

                    collection_name = Dataset.gen_collection_name_by_id(dataset_id)
                elif vector_type == VectorType.QDRANT:
                    if dataset.collection_binding_id:
                        dataset_collection_binding = db.session.execute(
                            select(DatasetCollectionBinding).where(
                                DatasetCollectionBinding.id == dataset.collection_binding_id
                            )
                        ).scalar_one_or_none()
                        if dataset_collection_binding:
                            collection_name = dataset_collection_binding.collection_name
                        else:
                            raise ValueError("Dataset Collection Binding not found")
                    else:
                        collection_name = Dataset.gen_collection_name_by_id(dataset_id)

                elif vector_type in lower_collection_vector_types:
                    collection_name = Dataset.gen_collection_name_by_id(dataset_id).lower()
                else:
                    raise ValueError(f"Vector store {vector_type} is not supported.")

                index_struct_dict = {"type": vector_type, "vector_store": {"class_prefix": collection_name}}
                dataset.index_struct = json.dumps(index_struct_dict)
                with Session(db.engine) as session:
                    vector = Vector(dataset, session=session)
                click.echo(f"Migrating dataset {dataset.id}.")

                try:
                    vector.delete()
                    click.echo(
                        click.style(f"Deleted vector index {collection_name} for dataset {dataset.id}.", fg="green")
                    )
                except Exception as e:
                    click.echo(
                        click.style(
                            f"Failed to delete vector index {collection_name} for dataset {dataset.id}.", fg="red"
                        )
                    )

View on GitHub (pinned to ef8544b173)

Solutions

  1. Check VectorType enum values and the upper/lower collection type sets to confirm supported backends.
  2. Pass a supported vector type (e.g. one of the configured upper/lower types or qdrant).
  3. If a new backend should be supported, add it to the appropriate collection-type set with its naming convention.
  4. Print upper_collection_vector_types and lower_collection_vector_types at startup to verify contents.

Example fix

# before
flask create-dataset-index --vector-type weaviate  # not in any set -> raises

# after - use a supported type, or extend the set
flask create-dataset-index --vector-type qdrant
# or in code: upper_collection_vector_types.add(VectorType.WEAVIATE)
Defensive patterns

Strategy: validation

Validate before calling

def is_supported_vector_type(vector_type: str) -> bool:
    return (
        vector_type in upper_collection_vector_types
        or vector_type == VectorType.QDRANT
        or vector_type in lower_collection_vector_types
    )

Type guard

def is_supported_vector_type(vector_type: str) -> bool:
    return (
        vector_type in upper_collection_vector_types
        or vector_type == VectorType.QDRANT
        or vector_type in lower_collection_vector_types
    )

Try / catch

try:
    migrate_dataset_vector(dataset, vector_type)
except ValueError as exc:
    if "not supported" in str(exc):
        click.echo(f"Unsupported vector type: {vector_type}", err=True)
        raise click.Abort()
    raise

Prevention

When it happens

Trigger: Triggered when the --vector-type option (or configured vector type) passed to the command is not in the union of upper_collection_vector_types, VectorType.QDRANT, or lower_collection_vector_types.

Common situations: A new vector store type was added to VectorType but not to the migration's collection-type sets, or the operator passed an unsupported/typo'd vector type flag.

Related errors


AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12). Data as JSON: /api/errors/69bfd4c65822ae03. Report an issue: GitHub.