Skip to content

Commit

Permalink
Merge pull request #792 from jmartisk/issue-786
Browse files Browse the repository at this point in the history
Fix embedding model handling with Easy RAG
  • Loading branch information
geoand authored Jul 30, 2024
2 parents e95125e + 3f58994 commit 2c6456d
Show file tree
Hide file tree
Showing 10 changed files with 23 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,12 @@ public void handleProviders(BeanDiscoveryFinishedBuildItem beanDiscoveryFinished
}
// If the Easy RAG extension requested to automatically generate an embedding model...
if (requestEmbeddingModels.isEmpty() && autoCreateEmbeddingModelBuildItem.isPresent()) {
// in case multiple embedding model providers are available,
// the user has to specify `quarkus.langchain4j.embedding-model.provider` to choose one
Optional<String> userSelectedProvider = buildConfig.defaultConfig().embeddingModel().provider();
String provider = selectEmbeddingModelProvider(inProcessEmbeddingBuildItems, embeddingCandidateItems,
beanDiscoveryFinished.beanStream().withBeanType(EmbeddingModel.class),
Optional.empty(), "EmbeddingModel", "embedding-model");
userSelectedProvider, "EmbeddingModel", "embedding-model");
selectedEmbeddingProducer
.produce(new SelectedEmbeddingModelCandidateBuildItem(provider, NamedConfigUtil.DEFAULT_NAME));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import java.util.regex.Pattern;

import jakarta.inject.Inject;
import jakarta.enterprise.inject.Default;
import jakarta.enterprise.inject.spi.CDI;
import jakarta.enterprise.util.TypeLiteral;

import dev.langchain4j.data.document.Metadata;
import dev.langchain4j.data.segment.TextSegment;
Expand All @@ -14,12 +16,18 @@

public class EmbeddingStoreJsonRPCService {

@Inject
EmbeddingStore<TextSegment> embeddingStore;

@Inject
EmbeddingModel embeddingModel;

public EmbeddingStoreJsonRPCService() {
// if there are more models/stores, try to choose the default
embeddingModel = CDI.current().select(EmbeddingModel.class, new Default.Literal()).get();
TypeLiteral<EmbeddingStore<TextSegment>> embeddingStoreType = new TypeLiteral<EmbeddingStore<TextSegment>>() {
};
embeddingStore = CDI.current().select(embeddingStoreType, new Default.Literal()).get();
}

private static final Pattern COMMA_OR_NEWLINE = Pattern.compile(",|\\r?\\n");

public String add(String id, String text, String metadata) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.defaultBean()
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.supplier(recorder.chromaStoreSupplier(config))
.done());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.addInjectionPoint(ClassType.create(DotName.createSimple(RemoteCacheManager.class)),
infinispanClientQualifier)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.defaultBean()
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.supplier(recorder.milvusStoreSupplier(config))
.done());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.defaultBean()
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.addInjectionPoint(ClassType.create(DotName.createSimple(Driver.class)))
.createWith(recorder.embeddingStoreFunction(config))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.createWith(recorder.embeddingStoreFunction(config, buildTimeConfig.datasource().orElse(null)))
.addInjectionPoint(ClassType.create(DotName.createSimple(AgroalDataSource.class)), datasourceQualifier)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.defaultBean()
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.supplier(recorder.pineconeStoreSupplier(config))
.done());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.defaultBean()
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.supplier(recorder.qdrantStoreSupplier(config))
.done());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public void createBean(
ParameterizedType.create(EmbeddingStore.class, ClassType.create(TextSegment.class)))
.setRuntimeInit()
.defaultBean()
.unremovable()
.scope(ApplicationScoped.class)
.addInjectionPoint(ClassType.create(DotName.createSimple(ReactiveRedisDataSource.class)),
redisClientQualifier)
Expand Down

0 comments on commit 2c6456d

Please sign in to comment.