weaviate/weaviate · error

found more than one module params: %s which are conflicting

Error message

found more than one module params: %s which are conflicting choose one instead

What it means

validateNearParams rejects queries providing more than one module search param (e.g. nearText plus nearImage). The %s lists the offending param names. Only one module-provided vector source is allowed per query.

Source

Thrown at usecases/traverser/near_params_vector.go:151

	}

	if len(moduleParams) == 1 && nearObject != nil {
		return errors.Errorf("found both 'nearText' and 'nearObject' parameters " +
			"which are conflicting, choose one instead")
	}

	if nearVector != nil && nearObject != nil {
		return errors.Errorf("found both 'nearVector' and 'nearObject' parameters " +
			"which are conflicting, choose one instead")
	}

	if v.modulesProvider != nil {
		if len(moduleParams) > 1 {
			params := make([]string, 0, len(moduleParams))
			for p := range moduleParams {
				params = append(params, fmt.Sprintf("'%s'", p))
			}
			return errors.Errorf("found more than one module params: %s which are conflicting "+
				"choose one instead", strings.Join(params, ", "))
		}

		for name, value := range moduleParams {
			if len(className) == 1 {
				err := v.modulesProvider.ValidateSearchParam(name, value, className[0])
				if err != nil {
					return err
				}
			} else {
				err := v.modulesProvider.CrossClassValidateSearchParam(name, value)
				if err != nil {
					return err
				}
			}
		}
	}

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Keep exactly one module param (e.g. only nearText or only nearImage)
  2. Run separate queries per modality and combine results client-side
  3. If a module supports multi-vector inputs, pass them inside the single param's arguments instead of adding a second param

Example fix

// before
{ Get { Article(nearText: {concepts: ["cat"]}, nearImage: {image: "base64..."}) { title } } }
// after
{ Get { Article(nearImage: {image: "base64..."}) { title } } }
Defensive patterns

Strategy: validation

Validate before calling

if len(moduleParams) > 1 {
	return fmt.Errorf("only one module param allowed, got: %v", keys(moduleParams))
}

Prevention

When it happens

Trigger: A Get/Explore/Aggregate query with two or more module params in the same clause, e.g. nearText{concepts:[...]} nearImage{image:"base64..."} — message reads: found more than one module params: 'nearText', 'nearImage' which are conflicting choose one instead.

Common situations: Multimodal search UIs sending text and image together; generically-built GraphQL resolvers that append every non-nil near param; mixing modules (text2vec + img2vec) in one query.

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/49f47ed530bc1a1f. Report an issue: GitHub.