package at.procon.dip.embedding.provider;

import at.procon.dip.embedding.model.EmbeddingModelDescriptor;
import at.procon.dip.embedding.model.EmbeddingProviderResult;
import at.procon.dip.embedding.model.EmbeddingRequest;
import at.procon.dip.embedding.model.ResolvedEmbeddingProviderConfig;

public interface EmbeddingProvider {

    String providerType();

    boolean supports(EmbeddingModelDescriptor model, ResolvedEmbeddingProviderConfig providerConfig);

    EmbeddingProviderResult embedDocuments(
            ResolvedEmbeddingProviderConfig providerConfig,
            EmbeddingModelDescriptor model,
            EmbeddingRequest request
    );

    EmbeddingProviderResult embedQuery(
            ResolvedEmbeddingProviderConfig providerConfig,
            EmbeddingModelDescriptor model,
            EmbeddingRequest request
    );
}
