158 lines
5.6 KiB
Java
158 lines
5.6 KiB
Java
|
|
// 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.");
|
||
|
|
}
|
||
|
|
}
|