spring-projects/spring-ai · warning

No embeddings returned for request: + request

Error message

No embeddings returned for request: + request

What it means

Warning logged by MistralAiEmbeddingModel.call() when the embeddings HTTP response body is null — no EmbeddingList was returned by mistralAiApi.embeddings(). The model returns an empty EmbeddingResponse (no embeddings, no usage metadata) instead of throwing.

Solutions

  1. Verify the configured embedding model name is valid for your Mistral account.
  2. Check API key validity and rate-limit/quota status.
  3. Inspect raw HTTP traffic with a client interceptor to confirm what the endpoint returned.
  4. Handle empty EmbeddingResponse.getResults() defensively before building vectors.

Example fix

// before
EmbeddingResponse er = embeddingModel.call(new EmbeddingRequest(texts, opts));
float[] v = er.getResults().get(0).getOutput();
// after
if (er.getResults().isEmpty()) throw new IllegalStateException("No embeddings returned for " + texts.size() + " inputs");
Defensive patterns

Strategy: validation

Validate before calling

Assert.hasText(embeddingModelName, "Mistral embedding model must be configured"); // e.g. 'mistral-embed'

Type guard

static boolean hasEmbeddings(EmbeddingResponse r) { return r != null && r.getResults() != null && !r.getResults().isEmpty(); }

Try / catch

EmbeddingResponse er = embeddingModel.call(req);
if (!hasEmbeddings(er)) throw new IllegalStateException("Mistral returned no embeddings; check model name and API key");

Prevention

When it happens

Trigger: mistralAiApi.embeddings(apiRequest) succeeds through the retry template but embeddingResponseEntity.getBody() == null — empty body from the Mistral embeddings endpoint or deserialization failure yielding null.

Common situations: Embedding model name (e.g. 'mistral-embed') misspelled or unavailable on the account; API key/quota problems; proxy or gateway returning empty bodies; Mistral API schema changes after version upgrades.

Related errors


AI-assisted analysis of spring-projects/spring-ai@98a7beda4f (2026-09-11). Data as JSON: /api/errors/17a8fbc7890dc9cb. Report an issue: GitHub.

Appendix: source

Thrown at models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingModel.java:131

		var apiRequest = createRequest(embeddingRequest);

		var observationContext = EmbeddingModelObservationContext.builder()
			.embeddingRequest(embeddingRequest)
			.provider(MistralAiApi.PROVIDER_NAME)
			.build();

		return EmbeddingModelObservationDocumentation.EMBEDDING_MODEL_OPERATION
			.observation(this.observationConvention, DEFAULT_OBSERVATION_CONVENTION, () -> observationContext,
					this.observationRegistry)
			.observe(() -> {
				var embeddingResponseEntity = RetryUtils.execute(this.retryTemplate,
						() -> this.mistralAiApi.embeddings(apiRequest));
				MistralAiApi.EmbeddingList<MistralAiApi.Embedding> apiEmbeddingResponse = embeddingResponseEntity
					.getBody();

				if (apiEmbeddingResponse == null) {
					if (logger.isWarnEnabled()) {
						logger.warn("No embeddings returned for request: " + request);
					}
					return new EmbeddingResponse(List.of());
				}

				var metadata = new EmbeddingResponseMetadata(apiEmbeddingResponse.model(),
						getDefaultUsage(apiEmbeddingResponse.usage()));

				var embeddings = apiEmbeddingResponse.data()
					.stream()
					.map(e -> new Embedding(e.embedding(), e.index()))
					.toList();

				var embeddingResponse = new EmbeddingResponse(embeddings, metadata);

				observationContext.setResponse(embeddingResponse);

				return embeddingResponse;
			});

View on GitHub (pinned to 98a7beda4f)