(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

@@ -1,6 +1,7 @@
package dev.langchain4j.inmemory.spring;
import com.tencent.supersonic.common.config.EmbeddingConfig;
import com.tencent.supersonic.common.config.EmbeddingStoreConfig;
import com.tencent.supersonic.common.util.ContextUtils;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.store.embedding.BaseEmbeddingStoreFactory;
@@ -9,6 +10,7 @@ import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -23,11 +25,22 @@ public class InMemoryEmbeddingStoreFactory extends BaseEmbeddingStoreFactory {
public static final String PERSISTENT_FILE_PRE = "InMemory.";
private Properties properties;
public InMemoryEmbeddingStoreFactory(EmbeddingStoreConfig storeConfig) {
this(createPropertiesFromConfig(storeConfig));
}
public InMemoryEmbeddingStoreFactory(Properties properties) {
this.properties = properties;
}
private static Properties createPropertiesFromConfig(EmbeddingStoreConfig storeConfig) {
Properties properties = new Properties();
EmbeddingStoreProperties embeddingStore = new EmbeddingStoreProperties();
BeanUtils.copyProperties(storeConfig, embeddingStore);
properties.setEmbeddingStore(embeddingStore);
return properties;
}
@Override
public synchronized EmbeddingStore createEmbeddingStore(String collectionName) {
InMemoryEmbeddingStore<TextSegment> embeddingStore = reloadFromPersistFile(collectionName);