(improvement)(chat) Support embedding store configuration. (#1363)

This commit is contained in:
lexluo09
2024-07-07 00:30:19 +08:00
committed by GitHub
parent 3f460429e6
commit 4d7bfe07aa
37 changed files with 185 additions and 119 deletions

View File

@@ -0,0 +1,26 @@
package dev.langchain4j.store.embedding;
import com.tencent.supersonic.common.config.EmbeddingStoreConfig;
import com.tencent.supersonic.common.util.ContextUtils;
import dev.langchain4j.chroma.spring.ChromaEmbeddingStoreFactory;
import dev.langchain4j.inmemory.spring.InMemoryEmbeddingStoreFactory;
import dev.langchain4j.milvus.spring.MilvusEmbeddingStoreFactory;
import org.apache.commons.lang3.StringUtils;
public class EmbeddingStoreFactoryProvider {
public static EmbeddingStoreFactory getFactory(EmbeddingStoreConfig storeConfig) {
if (storeConfig == null || StringUtils.isBlank(storeConfig.getProvider())) {
return ContextUtils.getBean(EmbeddingStoreFactory.class);
}
if (EmbeddingStoreType.CHROMA.name().equalsIgnoreCase(storeConfig.getProvider())) {
return new ChromaEmbeddingStoreFactory(storeConfig);
}
if (EmbeddingStoreType.MILVUS.name().equalsIgnoreCase(storeConfig.getProvider())) {
return new MilvusEmbeddingStoreFactory(storeConfig);
}
if (EmbeddingStoreType.IN_MEMORY.name().equalsIgnoreCase(storeConfig.getProvider())) {
return new InMemoryEmbeddingStoreFactory(storeConfig);
}
throw new RuntimeException("Unsupported EmbeddingStore provider: " + storeConfig.getProvider());
}
}

View File

@@ -0,0 +1,7 @@
package dev.langchain4j.store.embedding;
public enum EmbeddingStoreType {
IN_MEMORY,
MILVUS,
CHROMA
}