{"record":{"id":"c0c3d822d3e55071","repo":"weaviate/weaviate","slug":"vectorize-move-to-v","errorCode":null,"errorMessage":"vectorize move to: %v","messagePattern":"vectorize move to: (.+?)","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"usecases/modulecomponents/arguments/nearText/searcher.go","lineNumber":71,"sourceCode":"\treturn s.vectorFromNearTextParam(ctx, params.(*NearTextParams), className, findVectorFn, cfg)\n}\n\nfunc (s *vectorForParams[T]) vectorFromNearTextParam(ctx context.Context,\n\tparams *NearTextParams, className string, findVectorFn modulecapabilities.FindVectorFn[T],\n\tcfg moduletools.ClassConfig,\n) (T, error) {\n\ttenant := cfg.Tenant()\n\tvector, err := s.vectorizer.Texts(ctx, params.Values, cfg)\n\tif err != nil {\n\t\treturn nil, errors.Errorf(\"vectorize keywords: %v\", err)\n\t}\n\n\tmoveTo := params.MoveTo\n\tif moveTo.Force > 0 && (len(moveTo.Values) > 0 || len(moveTo.Objects) > 0) {\n\t\tmoveToVector, err := s.vectorFromValuesAndObjects(ctx, moveTo.Values,\n\t\t\tmoveTo.Objects, className, findVectorFn, cfg, tenant)\n\t\tif err != nil {\n\t\t\treturn nil, errors.Errorf(\"vectorize move to: %v\", err)\n\t\t}\n\n\t\tafterMoveTo, err := s.movements.MoveTo(vector, moveToVector, moveTo.Force)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvector = afterMoveTo\n\t}\n\n\tmoveAway := params.MoveAwayFrom\n\tif moveAway.Force > 0 && (len(moveAway.Values) > 0 || len(moveAway.Objects) > 0) {\n\t\tmoveAwayVector, err := s.vectorFromValuesAndObjects(ctx, moveAway.Values,\n\t\t\tmoveAway.Objects, className, findVectorFn, cfg, tenant)\n\t\tif err != nil {\n\t\t\treturn nil, errors.Errorf(\"vectorize move away from: %v\", err)\n\t\t}\n\n\t\tafterMoveFrom, err := s.movements.MoveAwayFrom(vector, moveAwayVector, moveAway.Force)","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/usecases/modulecomponents/arguments/nearText/searcher.go#L53-L89","documentation":"Raised in vectorFromNearTextParam when vectorizing the moveTo target fails: either the moveTo concepts could not be embedded by the module vectorizer, or (inside vectorFromValuesAndObjects) an object-referenced vector could not be fetched via findVectorFn. The underlying cause is wrapped with the 'vectorize move to: %v' prefix.","triggerScenarios":"A nearText query with `moveTo: { force: >0, concepts: [...] }` where Texts() fails on the move-to concepts, or `moveTo: { force: >0, objects: [{ id/beacon }] }` where findVectorFn fails — object does not exist, wrong className, cross-ref beacon unparseable, or tenant mismatch in multi-tenancy.","commonSituations":"moveTo objects referencing deleted or non-existent UUIDs; beacon strings malformed (wrong format for weaviate://... beacons); multi-tenant collections where the object lives in another tenant; the move-to concept strings hitting a vectorizer API error (auth/rate-limit).","solutions":["Inspect the wrapped inner error to distinguish vectorizer failure vs. object lookup failure","If using moveTo objects, verify the UUID/beacon exists in the same class (and same tenant)","Fix the beacon format (must be a valid weaviate cross-ref beacon) or use id directly","If using moveTo concepts, check vectorizer health/credentials as with the main concepts","Retry transient vectorizer failures with backoff"],"exampleFix":"// before\nmoveTo: { force: 0.5, objects: [{ beacon: \"weaviate://wrong-host/Article/uuid\" }] }\n\n// after\nmoveTo: { force: 0.5, objects: [{ id: \"00000000-0000-0000-0000-000000000001\" }] }","handlingStrategy":"validation","validationCode":"import uuid\nfor obj in move_to.get('objects', []):\n    if 'id' in obj:\n        uuid.UUID(obj['id'])  # raises on malformed id\n    if 'beacon' in obj and not obj['beacon'].startswith('weaviate://'):\n        raise ValueError('invalid beacon format')","typeGuard":"function isValidMoveTarget(m: { force?: number; concepts?: string[]; objects?: { id?: string; beacon?: string }[] }): boolean {\n  const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n  return (m.objects ?? []).every(o => (o.id && UUID.test(o.id)) || !!o.beacon);\n}","tryCatchPattern":"try:\n    res = client.query.get('Article').with_near_text({'concepts': c, 'moveTo': {'force': 0.5, 'objects': [{'id': ref_id}]}}).do()\nexcept weaviate.exceptions.UnexpectedStatusCodeException as e:\n    if 'vectorize move to' in str(e):\n        # verify referenced object exists in this class/tenant, then retry\n        logger.warning('moveTo vectorization failed: %s', e)\n    else:\n        raise","preventionTips":["Verify moveTo object references exist (and belong to the active tenant) before searching","Use id rather than hand-built beacons when possible; generate beacons via client helpers","Validate concept strings for moveTo the same way as main concepts","Handle transient vectorizer failures with retry/backoff"],"tags":["vectorization","weaviate","near-text","moveto","cross-reference"],"backgroundTag":"vectorization-failed","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"}