weaviate/weaviate · error
unknown type %T in Explore..className resolver
Error message
unknown type %T in Explore..className resolver
What it means
The Explore GraphQL object's className field resolver type-asserts its source to search.Result. If the GraphQL executor hands it any other type (a wiring bug in how the resolver is registered or an unexpected source object), it returns this error instead of panicking. End users cannot normally trigger it — it indicates an internal invariant violation in the Explore resolver setup.
Source
Thrown at adapters/handlers/graphql/local/explore/concepts.go:70
if modulesProvider != nil {
for name, argument := range modulesProvider.ExploreArguments(schema) {
field.Args[name] = argument
}
}
return field
}
func exploreObject() *graphql.Object {
getLocalExploreFields := graphql.Fields{
"className": &graphql.Field{
Name: "ExploreClassName",
Description: descriptions.ClassName,
Type: graphql.String,
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
vsr, ok := p.Source.(search.Result)
if !ok {
return nil, fmt.Errorf("unknown type %T in Explore..className resolver", p.Source)
}
return vsr.ClassName, nil
},
},
"beacon": &graphql.Field{
Name: "ExploreBeacon",
Description: descriptions.Beacon,
Type: graphql.String,
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
vsr, ok := p.Source.(search.Result)
if !ok {
return nil, fmt.Errorf("unknown type %T in Explore..className resolver", p.Source)
}
return vsr.Beacon, nil
},View on GitHub (pinned to 75aa4b6d11)
Solutions
- Upgrade Weaviate to the latest patch release — this indicates an internal resolver/source mismatch bug
- Check any installed custom modules or patches that touch the Explore/nearestObjects pipeline and remove or update them
- Report the exact query and version to Weaviate maintainers with the full error including the %T type name
Defensive patterns
Strategy: try-catch
Try / catch
try {
const res = await client.graphql.explore().withNearText(nearText).do();
} catch (e) {
if (e.message.includes('unknown type') && e.message.includes('className resolver')) {
// internal invariant violation: report version + query to maintainers
}
throw e;
} Prevention
- Run unpatched, supported Weaviate releases
- Keep custom modules compatible with the installed core version
- Pin and test module/core version combinations before upgrading production
When it happens
Trigger: Querying the Explore { className } field when the resolver's p.Source is not a search.Result — e.g. after internal refactors, custom module patches, or a bug where Explore results are wrapped or converted into a different type before resolution.
Common situations: Running patched/custom Weaviate builds or modules that alter the Explore result pipeline; version upgrades where internal search.Result shapes changed; plugin code that replaces the Explore root resolver.
Related errors
- expected source to be a map, but was %T
- expected source to contain a usable Resolver, but was %#v
- failed to extract nearVector params: %w
- failed to extract nearObject params: %w
- expected a *models.GeoCoordinates, but got: %T
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/196de229cbe85bf8.
Report an issue: GitHub.