Class OpenAIEmbeddingProvider
- All Implemented Interfaces:
EmbeddingProvider
EmbeddingProvider backed by the OpenAI Embeddings API.
Default model: text-embedding-3-small (1536 dimensions).
Use text-embedding-3-large (3072 dimensions) for higher accuracy
at the cost of increased storage and latency.
embedAll(java.util.List<java.lang.String>) sends one batched request, which is what the API is for;
embed(java.lang.String) is that call with a single element.
Obtain instances via EmbeddingProviderFactory.openAI(apiKey).
-
Constructor Summary
ConstructorsConstructorDescriptionOpenAIEmbeddingProvider(String apiKey) Creates a provider usingtext-embedding-3-small(1536 dimensions).OpenAIEmbeddingProvider(String apiKey, String model, int dimensions) Creates a provider with an explicit model and dimension count. -
Method Summary
Modifier and TypeMethodDescriptionintReturns the dimensionality of the vectors produced by this provider.CompletableFuture<float[]> Generates a dense embedding vector for the given text.CompletableFuture<List<float[]>> Generates embedding vectors for a batch of texts.modelId()Returns the model identifier used by this provider instance.
-
Constructor Details
-
OpenAIEmbeddingProvider
Creates a provider usingtext-embedding-3-small(1536 dimensions).- Parameters:
apiKey- OpenAI API key (non-null, non-blank)
-
OpenAIEmbeddingProvider
Creates a provider with an explicit model and dimension count.- Parameters:
apiKey- OpenAI API key (non-null, non-blank)model- model identifier (e.g."text-embedding-3-large")dimensions- vector dimensionality produced by the model
-
-
Method Details
-
embed
Description copied from interface:EmbeddingProviderGenerates a dense embedding vector for the given text.- Specified by:
embedin interfaceEmbeddingProvider- Parameters:
text- input text (non-null, non-blank)- Returns:
- a
CompletableFuturethat resolves to the embedding vector; the array length equalsEmbeddingProvider.dimensions()
-
embedAll
Description copied from interface:EmbeddingProviderGenerates embedding vectors for a batch of texts.The default implementation delegates to
EmbeddingProvider.embed(String)for each element sequentially. Provider implementations should override this method to use a single batched HTTP request where the API supports it (e.g. OpenAI/v1/embeddingswith an array input).- Specified by:
embedAllin interfaceEmbeddingProvider- Parameters:
texts- list of input texts (non-null, non-empty)- Returns:
- a
CompletableFutureresolving to an ordered list of embedding vectors, one per input text
-
dimensions
public int dimensions()Description copied from interface:EmbeddingProviderReturns the dimensionality of the vectors produced by this provider.All vectors returned by
EmbeddingProvider.embed(java.lang.String)andEmbeddingProvider.embedAll(java.util.List<java.lang.String>)have exactly this many elements. Callers must use this value when allocating vector stores or computing similarity scores.- Specified by:
dimensionsin interfaceEmbeddingProvider- Returns:
- positive integer (e.g. 1536 for
text-embedding-3-small)
-
modelId
Description copied from interface:EmbeddingProviderReturns the model identifier used by this provider instance.The format is provider-specific (e.g.
"text-embedding-3-small"for OpenAI,"nomic-embed-text"for Ollama).- Specified by:
modelIdin interfaceEmbeddingProvider- Returns:
- non-null, non-blank model identifier
-