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
- Remove the 'version' field (or set it to "001") for models that only exist in version 001.
- If you need 002/003, switch the model to one that supports those versions (e.g. text-embedding-ada-002 / davinci).
- 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
- Never bump 'version' globally across classes using different models
- Map model -> allowed versions explicitly in tooling
- Dry-run class creation against a test Weaviate instance before production schema changes
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
- 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/9d223e28841e6ec2.
Report an issue: GitHub.