Files
fil/packages/java/dev/kreuzberg/EmbeddingConfig.java

158 lines
5.6 KiB
Java
Raw Permalink Normal View History

2026-06-01 23:40:55 +02:00
// This file is auto-generated by alef — DO NOT EDIT.
// alef:hash:4e15143f4af1ae8bafbdb1506ef057da924484c66a19483966333558ad437e75
// To regenerate: alef generate
// To verify freshness: alef verify --exit-code
// Issues & docs: https://github.com/kreuzberg-dev/alef
package dev.kreuzberg;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import org.jspecify.annotations.Nullable;
/**
* Embedding configuration for text chunks.
*
* Configures embedding generation using ONNX models via the vendored embedding engine.
* Requires the {@code embeddings} feature to be enabled.
*/
@JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonDeserialize(builder = EmbeddingConfig.Builder.class)
public record EmbeddingConfig(
/**
* The embedding model to use (defaults to "balanced" preset if not specified)
*/
@Nullable @JsonProperty("model") EmbeddingModelType model,
/**
* Whether to normalize embedding vectors (recommended for cosine similarity)
*/
@Nullable @JsonProperty("normalize") Boolean normalize,
/**
* Batch size for embedding generation
*/
@Nullable @JsonProperty("batch_size") Long batchSize,
/**
* Show model download progress
*/
@Nullable @JsonProperty("show_download_progress") Boolean showDownloadProgress,
/**
* Custom cache directory for model files
*
* Defaults to {@code ~/.cache/kreuzberg/embeddings/} if not specified.
* Allows full customization of model download location.
*/
@JsonProperty("cache_dir") java.nio.file.@Nullable Path cacheDir,
/**
* Hardware acceleration for the embedding ONNX model.
*
* When set, controls which execution provider (CPU, CUDA, CoreML, TensorRT)
* is used for inference. Defaults to {@code None} (auto-select per platform).
*/
@Nullable @JsonProperty("acceleration") AccelerationConfig acceleration,
/**
* Maximum wall-clock duration (in seconds) for a single {@code embed()} call when
* using EmbeddingModelType.Plugin.
*
* Applies only to the in-process plugin path protects against hung
* host-language backends (e.g. a Python callback deadlocked on the GIL,
* a model stuck on CUDA OOM retries, etc.). On timeout, the dispatcher
* returns {@code Plugin} instead of blocking forever.
*
* {@code None} disables the timeout. The default (60 seconds) is conservative
* for common in-process inference; increase for large batches on slow
* hardware.
*/
@Nullable @JsonProperty("max_embed_duration_secs") Long maxEmbedDurationSecs
) {
public static Builder builder() {
return new Builder();
}
public EmbeddingConfig{
if (batchSize == null) batchSize = 32L;
}
// CPD-OFF
@JsonPOJOBuilder(withPrefix = "with", buildMethodName = "build")
public static final class Builder {
@Nullable private EmbeddingModelType model = null;
private Boolean normalize = null;
@JsonProperty("batch_size")
private Long batchSize = null;
@JsonProperty("show_download_progress")
private Boolean showDownloadProgress = null;
@JsonProperty("cache_dir")
private java.nio.file.Path cacheDir = null;
@Nullable private AccelerationConfig acceleration = null;
@JsonProperty("max_embed_duration_secs")
private Long maxEmbedDurationSecs = null;
/** Sets the model field. */
@JsonProperty("model")
public Builder withModel(final @Nullable EmbeddingModelType value) {
this.model = value;
return this;
}
/** Sets the normalize field. */
@JsonProperty("normalize")
public Builder withNormalize(final @Nullable Boolean value) {
this.normalize = value;
return this;
}
/** Sets the batchSize field. */
@JsonProperty("batch_size")
public Builder withBatchSize(final @Nullable Long value) {
this.batchSize = value;
return this;
}
/** Sets the showDownloadProgress field. */
@JsonProperty("show_download_progress")
public Builder withShowDownloadProgress(final @Nullable Boolean value) {
this.showDownloadProgress = value;
return this;
}
/** Sets the cacheDir field. */
@JsonProperty("cache_dir")
public Builder withCacheDir(final java.nio.file.@Nullable Path value) {
this.cacheDir = value;
return this;
}
/** Sets the acceleration field. */
@JsonProperty("acceleration")
public Builder withAcceleration(final @Nullable AccelerationConfig value) {
this.acceleration = value;
return this;
}
/** Sets the maxEmbedDurationSecs field. */
@JsonProperty("max_embed_duration_secs")
public Builder withMaxEmbedDurationSecs(final @Nullable Long value) {
this.maxEmbedDurationSecs = value;
return this;
}
/** Builds the EmbeddingConfig instance. */
public EmbeddingConfig build() {
return new EmbeddingConfig(
model,
normalize,
batchSize,
showDownloadProgress,
cacheDir,
acceleration,
maxEmbedDurationSecs
);
}
}
// CPD-ON
public static EmbeddingConfig defaultInstance() {
throw new UnsupportedOperationException("defaultInstance is not yet bridged via JNI; use the Builder instead.");
}
}