weaviate/weaviate · error

vectorize move to: %v

Error message

vectorize move to: %v

What it means

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.

Source

Thrown at usecases/modulecomponents/arguments/nearText/searcher.go:71

	return s.vectorFromNearTextParam(ctx, params.(*NearTextParams), className, findVectorFn, cfg)
}

func (s *vectorForParams[T]) vectorFromNearTextParam(ctx context.Context,
	params *NearTextParams, className string, findVectorFn modulecapabilities.FindVectorFn[T],
	cfg moduletools.ClassConfig,
) (T, error) {
	tenant := cfg.Tenant()
	vector, err := s.vectorizer.Texts(ctx, params.Values, cfg)
	if err != nil {
		return nil, errors.Errorf("vectorize keywords: %v", err)
	}

	moveTo := params.MoveTo
	if moveTo.Force > 0 && (len(moveTo.Values) > 0 || len(moveTo.Objects) > 0) {
		moveToVector, err := s.vectorFromValuesAndObjects(ctx, moveTo.Values,
			moveTo.Objects, className, findVectorFn, cfg, tenant)
		if err != nil {
			return nil, errors.Errorf("vectorize move to: %v", err)
		}

		afterMoveTo, err := s.movements.MoveTo(vector, moveToVector, moveTo.Force)
		if err != nil {
			return nil, err
		}
		vector = afterMoveTo
	}

	moveAway := params.MoveAwayFrom
	if moveAway.Force > 0 && (len(moveAway.Values) > 0 || len(moveAway.Objects) > 0) {
		moveAwayVector, err := s.vectorFromValuesAndObjects(ctx, moveAway.Values,
			moveAway.Objects, className, findVectorFn, cfg, tenant)
		if err != nil {
			return nil, errors.Errorf("vectorize move away from: %v", err)
		}

		afterMoveFrom, err := s.movements.MoveAwayFrom(vector, moveAwayVector, moveAway.Force)

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Inspect the wrapped inner error to distinguish vectorizer failure vs. object lookup failure
  2. If using moveTo objects, verify the UUID/beacon exists in the same class (and same tenant)
  3. Fix the beacon format (must be a valid weaviate cross-ref beacon) or use id directly
  4. If using moveTo concepts, check vectorizer health/credentials as with the main concepts
  5. Retry transient vectorizer failures with backoff

Example fix

// before
moveTo: { force: 0.5, objects: [{ beacon: "weaviate://wrong-host/Article/uuid" }] }

// after
moveTo: { force: 0.5, objects: [{ id: "00000000-0000-0000-0000-000000000001" }] }
Defensive patterns

Strategy: validation

Validate before calling

import uuid
for obj in move_to.get('objects', []):
    if 'id' in obj:
        uuid.UUID(obj['id'])  # raises on malformed id
    if 'beacon' in obj and not obj['beacon'].startswith('weaviate://'):
        raise ValueError('invalid beacon format')

Type guard

function isValidMoveTarget(m: { force?: number; concepts?: string[]; objects?: { id?: string; beacon?: string }[] }): boolean {
  const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
  return (m.objects ?? []).every(o => (o.id && UUID.test(o.id)) || !!o.beacon);
}

Try / catch

try:
    res = client.query.get('Article').with_near_text({'concepts': c, 'moveTo': {'force': 0.5, 'objects': [{'id': ref_id}]}}).do()
except weaviate.exceptions.UnexpectedStatusCodeException as e:
    if 'vectorize move to' in str(e):
        # verify referenced object exists in this class/tenant, then retry
        logger.warning('moveTo vectorization failed: %s', e)
    else:
        raise

Prevention

When it happens

Trigger: 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.

Common situations: 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).

Related errors


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/c0c3d822d3e55071. Report an issue: GitHub.