{"record":{"id":"e7cfe3faf8fa9717","repo":"weaviate/weaviate","slug":"get-vector-input-from-modules-provider-is-target","errorCode":null,"errorMessage":"get vector input from modules provider: is target vector multi vector: %w","messagePattern":"get vector input from modules provider: is target vector multi vector: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"usecases/traverser/hybrid/searcher.go","lineNumber":290,"sourceCode":"\t\t\ttargetVector := getTargetVector(targetVectors)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvector, err := vectorFromModuleInput(ctx, class, query, targetVector, modules)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn vector, nil\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"no vector or modules provided for hybrid search\")\n\t\t}\n\t}\n}\n\nfunc vectorFromModuleInput(ctx context.Context, class, input, targetVector string, modules modulesProvider) (models.Vector, error) {\n\tisMultiVector, err := modules.IsTargetVectorMultiVector(class, targetVector)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get vector input from modules provider: is target vector multi vector: %w\", err)\n\t}\n\tif isMultiVector {\n\t\tvector, err := modules.MultiVectorFromInput(ctx, class, input, targetVector)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"get multi vector input from modules provider: %w\", err)\n\t\t}\n\t\treturn vector, nil\n\t}\n\tvector, err := modules.VectorFromInput(ctx, class, input, targetVector)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"get vector input from modules provider: %w\", err)\n\t}\n\treturn vector, nil\n}\n\nfunc getTargetVector(targetVectors []string) string {\n\tif len(targetVectors) == 1 {\n\t\treturn targetVectors[0]","sourceCodeStart":272,"sourceCodeEnd":308,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/usecases/traverser/hybrid/searcher.go#L272-L308","documentation":"When generating the query vector from a module, vectorFromModuleInput first asks whether the target vector is a multi-vector (multiple vectors per object, e.g. ColBERT-style). This error wraps a failure of that IsTargetVectorMultiVector lookup against the modules provider — typically a schema/module resolution failure, not a vectorization failure.","triggerScenarios":"Hybrid search relying on module vectorization where the target-vector name does not resolve against the class schema, or the modules provider fails to answer the multi-vector query (module not initialized, schema inconsistent).","commonSituations":"Named-vector configuration referencing a target vector that does not exist on the class; module disabled after being referenced in config; schema migration leaving stale named-vector definitions.","solutions":["Check the wrapped error for the module/schema failure detail.","Confirm the target vector name exists in the class's named-vector configuration.","Verify the responsible vectorizer module is enabled and initialized (server logs, ENABLE_MODULES).","Fix or remove stale named-vector entries in the collection schema."],"exampleFix":"// before\n\"vectorConfig\": { \"myvec\": { \"vectorizer\": { \"none\": {} } } }\n// query references targetVector: \"othervec\"\n// after: query with targetVector: \"myvec\" or add \"othervec\" to vectorConfig","handlingStrategy":"validation","validationCode":"const schema = await client.schema.classGetter().withClassName(className).do();\nconst namedVectors = Object.keys(schema.vectorConfig ?? {});\nif (targetVector && !namedVectors.includes(targetVector)) {\n  throw new Error(`target vector '${targetVector}' not in [${namedVectors}]`);\n}","typeGuard":"const hasTargetVector = (cls, name) => !cls?.vectorConfig || Object.prototype.hasOwnProperty.call(cls.vectorConfig, name);","tryCatchPattern":"try {\n  return await hybridQuery();\n} catch (e) {\n  if (String(e).includes(\"is target vector multi vector\")) {\n    // retry with default target vector\n    return await hybridQuery({ targetVector: undefined });\n  }\n  throw e;\n}","preventionTips":["Validate target-vector names against the class schema before querying.","Keep named-vector configuration and module set in sync.","Clean up stale named vectors after schema migrations."],"tags":["hybrid-search","named-vectors","modules","schema"],"backgroundTag":"unknown-target-vector","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"}