weaviate/weaviate · error
invalid combination of properties
Error message
invalid combination of properties
What it means
Wrapped error from ConfigValidator.Do (modules/text2vec-contextionary/vectorizer/schema_config.go:70). If validateIndexState fails, the error is wrapped as 'invalid combination of properties'. validateIndexState requires that either the class name is vectorized, or at least one indexed property of type text/text[] exists — otherwise no vector position could ever be computed, so the schema is rejected.
Source
Thrown at modules/text2vec-contextionary/vectorizer/schema_config.go:70
err := cv.validateClassName(ctx, class.Class, icheck.VectorizeClassName())
if err != nil {
return fmt.Errorf("invalid class name: %w", err)
}
for _, prop := range class.Properties {
if !icheck.PropertyIndexed(prop.Name) {
continue
}
err = cv.validatePropertyName(ctx, prop.Name,
icheck.VectorizePropertyName(prop.Name))
if err != nil {
return errors.Wrapf(err, "class %q: invalid property name", class.Class)
}
}
if err := cv.validateIndexState(ctx, class, icheck); err != nil {
return errors.Wrap(err, "invalid combination of properties")
}
cv.checkForPossibilityOfDuplicateVectors(ctx, class, icheck)
return nil
}
func (cv *ConfigValidator) validateClassName(ctx context.Context, className string,
vectorizeClass bool,
) error {
// class name
if !vectorizeClass {
// if the user chooses not to vectorize the class, we don't need to check
// if its c11y-valid or not
return nil
}
camelParts := camelcase.Split(className)View on GitHub (pinned to 75aa4b6d11)
Solutions
- Set "vectorizeClassName": true in the module config if the class name is contextionary-valid
- Add at least one property of type text or text[] that is indexed and skipVectorization not set
- Use a different vectorizer suited to non-text data (e.g. multi2vec or img2vec)
- Check the wrapped inner error (property datatype or 'invalid properties...' message) for the exact failing condition
Example fix
// before: no vectorizable input
{"class":"Metrics","moduleConfig":{"text2vec-contextionary":{"vectorizeClassName":false}}}
// after
{"class":"Metrics","moduleConfig":{"text2vec-contextionary":{"vectorizeClassName":true}}}
Defensive patterns
Strategy: validation
Validate before calling
hasText := false
for _, p := range class.Properties {
if len(p.DataType) > 0 && (p.DataType[0] == "text" || p.DataType[0] == "text[]") && p.Indexed() {
hasText = true
}
}
if !hasText && !vectorizeClassName {
return errors.New("need vectorizeClassName:true or at least one indexed text property")
} Try / catch
_, err := client.Schema.ClassCreator().WithClass(class).Do(ctx)
if err != nil && strings.Contains(err.Error(), "invalid combination of properties") {
// enable vectorizeClassName or add an indexed text property, then retry
} Prevention
- Every vectorized class should have at least one indexed text/text[] property
- Use a non-text vectorizer (multi2vec etc.) for numeric/image-only classes
- Validate schemas against the module config in CI before deploying
When it happens
Trigger: Creating a class with vectorizeClassName:false (or the name being skipped) where no property is both indexed and text-like — e.g. all props are int/number/bool, or the only text props have indexFilterable/skipped indexing, or properties lack datatypes.
Common situations: Users vectorizing metadata-only classes (numbers, dates) with text2vec-contextionary; excluding every text property from indexing; forgetting 'vectorizeClassName': true on a class with no text props.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- must contain at least one image field name in imageFields
- imageField values cannot be empty
- apiEndpoint cannot be empty
- model cannot be empty
- either inferenceUrl or passageInferenceUrl together with que
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/50239eb71531e07c.
Report an issue: GitHub.