Skip to main content

Embedding Model

Spring AI provides EmbeddingModel to embed text. EmbeddingModel extends from Model. See Embedding Model for the underlying concept and how to choose a model; this page covers the Spring AI API for calling one.

note

EmbeddingModel is rarely used directly, but used indirectly with Vector Store.

EmbeddingModel​

The model request is EmbeddingRequest. This request contains a list of Strings as the input and an EmbeddingOptions as the options.

EmbeddingRequest
public class EmbeddingRequest implements ModelRequest<List<String>> {
private final List<String> inputs;

@Nullable
private final EmbeddingOptions options;
}

The model response is EmbeddingResponse. This response contains a list of Embeddings as the result.

EmbeddingResponse
public class EmbeddingResponse implements ModelResponse<Embedding> {
private final List<Embedding> embeddings;

private final EmbeddingResponseMetadata metadata;
}

An Embedding contains an array of float as the result.

Embedding
public class Embedding implements ModelResult<float[]> {

private final float[] embedding;

private final Integer index;

private final EmbeddingResultMetadata metadata;

}

The call method of EmbeddingModel sends an EmbeddingRequest to an embedding model and returns an EmbeddingResponse.

EmbeddingModel
public interface EmbeddingModel
extends Model<EmbeddingRequest, EmbeddingResponse> {
@Override
EmbeddingResponse call(EmbeddingRequest request);
}

EmbeddingModel also has some shortcut methods.

  • float[] embed(String text)
  • float[] embed(Document document)
  • List<float[]> embed(List<String> texts)
  • List<float[]> embed(List<Document> documents, EmbeddingOptions options, BatchingStrategy batchingStrategy)
  • EmbeddingResponse embedForResponse(List<String> texts)

The dimensions method of EmbeddingModel returns the number of dimensions of the embedded vectors.

EmbeddingOptions​

EmbeddingOptions represents the options for embedding models.

  • getModel returns the model used for embedding.
  • getDimensions returns the requested dimensions.

EmbeddingOptions is created using EmbeddingOptionsBuilder.

var options = EmbeddingOptionsBuilder.builder()
.withModel("text-embedding-3-large")
.withDimensions(1024)
.build();

BatchingStrategy​

BatchingStrategy is the strategy used for batching multiple documents.

public interface BatchingStrategy {

List<List<Document>> batch(List<Document> documents);
}

TokenCountBatchingStrategy is a built-in implementation of BatchingStrategy. This strategy batches documents based on their token counts, ensuring that each batch does not exceed the calculated maximum input token count.