weaviate/weaviate · error

get vector input from modules provider: %w

Error message

get vector input from modules provider: %w

What it means

For standard (single-vector) targets, vectorFromModuleInput calls modules.VectorFromInput to vectorize the query text. This error wraps that module call's failure — the most common module-side failure in hybrid search when no explicit vector was supplied.

Source

Thrown at usecases/traverser/hybrid/searcher.go:301

		}
	}
}

func vectorFromModuleInput(ctx context.Context, class, input, targetVector string, modules modulesProvider) (models.Vector, error) {
	isMultiVector, err := modules.IsTargetVectorMultiVector(class, targetVector)
	if err != nil {
		return nil, fmt.Errorf("get vector input from modules provider: is target vector multi vector: %w", err)
	}
	if isMultiVector {
		vector, err := modules.MultiVectorFromInput(ctx, class, input, targetVector)
		if err != nil {
			return nil, fmt.Errorf("get multi vector input from modules provider: %w", err)
		}
		return vector, nil
	}
	vector, err := modules.VectorFromInput(ctx, class, input, targetVector)
	if err != nil {
		return nil, fmt.Errorf("get vector input from modules provider: %w", err)
	}
	return vector, nil
}

func getTargetVector(targetVectors []string) string {
	if len(targetVectors) == 1 {
		return targetVectors[0]
	}
	return ""
}

func performFusion(fusionAlgorithm int, weights []float64, resultSets [][]*search.Result, names []string) ([]search.Result, error) {
	switch fusionAlgorithm {
	case common_filters.HybridRankedFusion:
		fused := FusionRanked(weights, resultSets, names)
		return toSearchResults(fused), nil
	case common_filters.HybridRelativeScoreFusion:
		fused := FusionRelativeScore(weights, resultSets, names, true)

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Read the wrapped root error in logs to see which vectorizer failed and why.
  2. Supply the API key header (e.g. X-OpenAI-Api-Key) or fix module credentials in collection config.
  3. Confirm the vectorizer module is enabled server-side and the collection's vectorizer matches an available module.
  4. Provide an explicit query vector to bypass module vectorization, or retry after provider rate limits clear.

Example fix

// before
const res = await weaviate.graphql.hybrid("q", 0.5) // no key configured
// after
const client = weaviate.client({ ...config, headers: { "X-OpenAI-Api-Key": process.env.OPENAI_API_KEY } })
Defensive patterns

Strategy: retry

Validate before calling

if (!query || typeof query !== "string") {
  throw new Error("hybrid query text must be a non-empty string before module vectorization");
}
if (!providerApiKey) throw new Error("vectorizer API key missing");

Try / catch

try {
  return await hybridQuery();
} catch (e) {
  if (String(e).includes("get vector input from modules provider")) {
    await sleep(retryDelay); // handle provider rate limits/transient outages
    return await hybridQuery();
  }
  throw e;
}

Prevention

When it happens

Trigger: Hybrid search with alpha > 0 (dense leg needed) and no explicit vector, where the configured vectorizer module fails to convert the query string: bad/missing API key, provider HTTP error, rate limit, or empty query text rejected by the module.

Common situations: text2vec-openai/cohere/huggingface keys expired or absent; module not in ENABLE_MODULES; provider outage or quota exhaustion; empty-string hybrid queries.

Related errors


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