mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 04:27:39 +00:00
(improvement)(chat) It supports successful startup using Docker, local, and other methods. If the Chroma store creation fails, it will be replaced with in-memory (#1301)
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
package dev.langchain4j.chroma.spring;
|
||||
|
||||
import dev.langchain4j.inmemory.spring.InMemoryEmbeddingStoreFactory;
|
||||
import dev.langchain4j.store.embedding.EmbeddingStore;
|
||||
import dev.langchain4j.store.embedding.EmbeddingStoreFactory;
|
||||
import dev.langchain4j.store.embedding.chroma.ChromaEmbeddingStore;
|
||||
import java.util.Objects;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class ChromaEmbeddingStoreFactory implements EmbeddingStoreFactory {
|
||||
|
||||
private Properties properties;
|
||||
@@ -14,11 +18,30 @@ public class ChromaEmbeddingStoreFactory implements EmbeddingStoreFactory {
|
||||
|
||||
@Override
|
||||
public EmbeddingStore create(String collectionName) {
|
||||
EmbeddingStoreProperties embeddingStore = properties.getEmbeddingStore();
|
||||
return ChromaEmbeddingStore.builder()
|
||||
.baseUrl(embeddingStore.getBaseUrl())
|
||||
.collectionName(collectionName)
|
||||
.timeout(embeddingStore.getTimeout())
|
||||
.build();
|
||||
EmbeddingStoreProperties storeProperties = properties.getEmbeddingStore();
|
||||
EmbeddingStore embeddingStore = null;
|
||||
try {
|
||||
embeddingStore = ChromaEmbeddingStore.builder()
|
||||
.baseUrl(storeProperties.getBaseUrl())
|
||||
.collectionName(collectionName)
|
||||
.timeout(storeProperties.getTimeout())
|
||||
.build();
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to create ChromaEmbeddingStore,collectionName:{}"
|
||||
+ ", fallback to the default InMemoryEmbeddingStore method。",
|
||||
collectionName, e.getMessage());
|
||||
}
|
||||
if (Objects.isNull(embeddingStore)) {
|
||||
embeddingStore = createInMemoryEmbeddingStore(collectionName);
|
||||
}
|
||||
return embeddingStore;
|
||||
}
|
||||
|
||||
private EmbeddingStore createInMemoryEmbeddingStore(String collectionName) {
|
||||
dev.langchain4j.inmemory.spring.Properties properties = new dev.langchain4j.inmemory.spring.Properties();
|
||||
dev.langchain4j.inmemory.spring.EmbeddingStoreProperties embeddingStoreProperties =
|
||||
new dev.langchain4j.inmemory.spring.EmbeddingStoreProperties();
|
||||
properties.setEmbeddingStore(embeddingStoreProperties);
|
||||
return new InMemoryEmbeddingStoreFactory(properties).create(collectionName);
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
class EmbeddingStoreProperties {
|
||||
public class EmbeddingStoreProperties {
|
||||
|
||||
private String persistPath;
|
||||
}
|
||||
Reference in New Issue
Block a user