weaviate/weaviate · error

model %s is only available in version 001

Error message

model %s is only available in version 001

What it means

text2vec-openai validates model/version pairs at class-creation time. Once a model is on version 002 or 003 (ada), Weaviate no longer permits falling back to version 001 for that model; the only supported way to use such a model is version 001, and using any other version with a model that only exists in 001 triggers this error. It is a static configuration check before any OpenAI request is made.

Source

Thrown at modules/text2vec-openai/ent/class_settings.go:245

		// no restrictions
		return nil
	}

	if version == "002" {
		// only ada/davinci 002
		if model != "ada" && model != "davinci" {
			return fmt.Errorf("unsupported version %s", version)
		}
	}

	if version == "003" && model != "davinci" {
		// only davinci 003
		return fmt.Errorf("unsupported version %s", version)
	}

	if version != "002" && version != "003" {
		// all other fallback
		return fmt.Errorf("model %s is only available in version 001", model)
	}

	if docType != "text" {
		return fmt.Errorf("ada-002 no longer distinguishes between text/code, use 'text' for all use cases")
	}

	return nil
}

func (cs *classSettings) validateAzureConfig(resourceName, deploymentId, apiVersion string) error {
	if (resourceName == "" && deploymentId != "") || (resourceName != "" && deploymentId == "") {
		return fmt.Errorf("both resourceName and deploymentId must be provided")
	}
	if !basesettings.ValidateSetting(apiVersion, availableApiVersions) {
		return errors.Errorf("wrong Azure OpenAI apiVersion setting, available api versions are: %v", availableApiVersions)
	}
	return nil
}

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Remove the 'version' field (or set it to "001") for models that only exist in version 001.
  2. If you need 002/003, switch the model to one that supports those versions (e.g. text-embedding-ada-002 / davinci).
  3. Update the module/text2vec-openai version if your Weaviate release predates the model you want, since availability is enforced in class_settings.go.

Example fix

// before
"moduleConfig": { "text2vec-openai": { "model": "babbage", "version": "002" } }
// after
"moduleConfig": { "text2vec-openai": { "model": "babbage", "version": "001" } }
Defensive patterns

Strategy: validation

Validate before calling

function check001OnlyModel(model, version) {
  if (["babbage", "curie"].includes(model) && version !== "001") {
    throw new Error(`model ${model} is only available in version 001`);
  }
}

Prevention

When it happens

Trigger: Setting moduleConfig text2vec-openai to a model that only exists as a 001 embedding model while specifying version 002/003 — e.g. {model: "babbage", version: "002"} — or {model: "sage", version: "002"} where only 001 is valid.

Common situations: Upgrading a config template and bumping 'version' globally for all classes while some classes use 001-only models; misunderstanding that version is per-model, not global.

Related errors


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