You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.2 KiB
Java

package at.procon.dip.embedding.service;
import at.procon.dip.embedding.model.EmbeddingProviderResult;
import at.procon.dip.embedding.model.EmbeddingUseCase;
import at.procon.dip.embedding.registry.EmbeddingModelRegistry;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class DefaultQueryEmbeddingService implements QueryEmbeddingService {
private final EmbeddingExecutionService executionService;
private final EmbeddingModelRegistry modelRegistry;
@Override
public float[] embedQuery(String queryText) {
return embedQuery(queryText, modelRegistry.getRequiredDefaultQueryModelKey());
}
@Override
public float[] embedQuery(String queryText, String modelKey) {
EmbeddingProviderResult result = executionService.embedTexts(
modelKey,
EmbeddingUseCase.QUERY,
List.of(queryText)
);
if (result.vectors() == null || result.vectors().isEmpty()) {
throw new IllegalStateException("Embedding provider returned no query vector for model " + modelKey);
}
return result.vectors().getFirst();
}
}