{"record":{"id":"db76e4e19cfb0d98","repo":"weaviate/weaviate","slug":"vectorize-thermal-v","errorCode":null,"errorMessage":"vectorize thermal: %v","messagePattern":"vectorize thermal: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"usecases/modulecomponents/arguments/nearDepth/searcher.go","lineNumber":34,"sourceCode":"\n\t\"github.com/pkg/errors\"\n\t\"github.com/weaviate/weaviate/entities/dto\"\n\t\"github.com/weaviate/weaviate/entities/modulecapabilities\"\n\t\"github.com/weaviate/weaviate/entities/moduletools\"\n)\n\ntype Searcher[T dto.Embedding] struct {\n\tvectorForParams modulecapabilities.VectorForParams[T]\n}\n\nfunc NewSearcher[T dto.Embedding](vectorizer bindVectorizer[T]) *Searcher[T] {\n\treturn &Searcher[T]{func(ctx context.Context, params any, className string,\n\t\tfindVectorFn modulecapabilities.FindVectorFn[T],\n\t\tcfg moduletools.ClassConfig,\n\t) (T, error) {\n\t\tvector, err := vectorizer.VectorizeDepth(ctx, params.(*NearDepthParams).Depth, cfg)\n\t\tif err != nil {\n\t\t\treturn nil, errors.Errorf(\"vectorize thermal: %v\", err)\n\t\t}\n\t\treturn vector, nil\n\t}}\n}\n\ntype bindVectorizer[T dto.Embedding] interface {\n\tVectorizeDepth(ctx context.Context, thermal string, cfg moduletools.ClassConfig) (T, error)\n}\n\nfunc (s *Searcher[T]) VectorSearches() map[string]modulecapabilities.VectorForParams[T] {\n\tvectorSearches := map[string]modulecapabilities.VectorForParams[T]{}\n\tvectorSearches[\"nearDepth\"] = s.vectorForParams\n\treturn vectorSearches\n}\n","sourceCodeStart":16,"sourceCodeEnd":49,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/usecases/modulecomponents/arguments/nearDepth/searcher.go#L16-L49","documentation":"The nearDepth argument's searcher (searcher.go:34) invokes the depth (thermal-image) vectorizer's VectorizeDepth with the user-supplied Depth parameter. If the underlying inference service fails (multi2vec-clip/thermal module backend error), it is converted via errors.Errorf to \"vectorize thermal: %v\". The module name is historical ('thermal' images) though the argument is nearDepth.","triggerScenarios":"GraphQL query using nearDepth(depth: X) on a class vectorized by a depth-image module, when the vectorization call fails: inference container down/unreachable, malformed Depth param (empty/non-number), model failing on the input, or timeout calling the module service.","commonSituations":"The multi2vec-clip (or depth-specific) inference container not deployed/scaled in docker-compose; module service OOM or crashed on a bad image; network policy blocking Weaviate→module traffic; passing depth as a string instead of a number.","solutions":["Ensure the depth/clip inference module container is running and reachable (check `docker compose ps` and Weaviate's module URL env vars like CLIP_INFERENCE_API)","Retry with a valid numeric depth value matching the module's expected parameter","Check the inference service logs for the underlying model error reported after 'vectorize thermal:'","If the service is overloaded, scale it or increase timeouts; verify network connectivity between Weaviate and the module service"],"exampleFix":"// GraphQL before (fails when inference service is down or param malformed)\n{ Get { ThermalImage(limit: 5, nearDepth: { depth: \"surface\" }) { image } } }\n// after (valid numeric depth, service reachable)\n{ Get { ThermalImage(limit: 5, nearDepth: { depth: 2.5 }) { image } } }","handlingStrategy":"fallback","validationCode":"// validate the nearDepth input and module availability before querying\nif typeof depth !== 'number' || isNaN(depth) || depth < 0 {\n  throw new Error('nearDepth.depth must be a non-negative number');\n}\nconst modules = await weaviate.modules.list();\nif (!modules.includes('multi2vec-clip')) {\n  throw new Error('depth/thermal vectorizer module not enabled on this instance');\n}","typeGuard":"function isValidDepthParams(p) {\n  return p != null && typeof p.depth === 'number' && isFinite(p.depth) && p.depth >= 0;\n}","tryCatchPattern":"try {\n  const res = await client.graphql.get().withNearDepth({ depth: 2.5 }).do();\n} catch (e) {\n  if (String(e).includes('vectorize thermal')) {\n    // inference service failed: check module container health, then retry\n  }\n}","preventionTips":["Deploy and monitor the depth/clip inference container alongside Weaviate","Pass depth as a numeric value, never a string","Watch the nested cause after 'vectorize thermal:' — it names the actual inference error","Verify module URL env vars (e.g. CLIP_INFERENCE_API) point to reachable services"],"tags":["weaviate","graphql","vectorization","module","inference-service"],"backgroundTag":"vectorizer-service-unavailable","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}