mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
(improvement)(chat) Add support for milvus metastore in spring way (#1200)
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package dev.langchain4j.milvus.spring;
|
||||
|
||||
import io.milvus.common.clientenum.ConsistencyLevelEnum;
|
||||
import io.milvus.param.IndexType;
|
||||
import io.milvus.param.MetricType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
class EmbeddingStoreProperties {
|
||||
|
||||
private String host;
|
||||
private Integer port;
|
||||
private String collectionName;
|
||||
private Integer dimension;
|
||||
private IndexType indexType;
|
||||
private MetricType metricType;
|
||||
private String uri;
|
||||
private String token;
|
||||
private String username;
|
||||
private String password;
|
||||
private ConsistencyLevelEnum consistencyLevel;
|
||||
private Boolean retrieveEmbeddingsOnSearch;
|
||||
private String databaseName;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.langchain4j.milvus.spring;
|
||||
|
||||
import static dev.langchain4j.milvus.spring.Properties.PREFIX;
|
||||
|
||||
import dev.langchain4j.store.embedding.EmbeddingStoreFactory;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(Properties.class)
|
||||
public class MilvusAutoConfig {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(PREFIX + ".embedding-store.base-url")
|
||||
EmbeddingStoreFactory milvusChatModel(Properties properties) {
|
||||
return new MilvusEmbeddingStoreFactory(properties);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package dev.langchain4j.milvus.spring;
|
||||
|
||||
import dev.langchain4j.store.embedding.EmbeddingStore;
|
||||
import dev.langchain4j.store.embedding.EmbeddingStoreFactory;
|
||||
import dev.langchain4j.store.embedding.milvus.MilvusEmbeddingStore;
|
||||
|
||||
public class MilvusEmbeddingStoreFactory implements EmbeddingStoreFactory {
|
||||
private Properties properties;
|
||||
|
||||
public MilvusEmbeddingStoreFactory(Properties properties) {
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EmbeddingStore create(String collectionName) {
|
||||
EmbeddingStoreProperties embeddingStore = properties.getEmbeddingStore();
|
||||
return MilvusEmbeddingStore.builder()
|
||||
.host(embeddingStore.getHost())
|
||||
.port(embeddingStore.getPort())
|
||||
.collectionName(collectionName)
|
||||
.dimension(embeddingStore.getDimension())
|
||||
.indexType(embeddingStore.getIndexType())
|
||||
.metricType(embeddingStore.getMetricType())
|
||||
.uri(embeddingStore.getUri())
|
||||
.token(embeddingStore.getToken())
|
||||
.username(embeddingStore.getUsername())
|
||||
.password(embeddingStore.getPassword())
|
||||
.consistencyLevel(embeddingStore.getConsistencyLevel())
|
||||
.retrieveEmbeddingsOnSearch(embeddingStore.getRetrieveEmbeddingsOnSearch())
|
||||
.databaseName(embeddingStore.getDatabaseName())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.langchain4j.milvus.spring;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@ConfigurationProperties(prefix = Properties.PREFIX)
|
||||
public class Properties {
|
||||
|
||||
static final String PREFIX = "langchain4j.milvus";
|
||||
|
||||
@NestedConfigurationProperty
|
||||
EmbeddingStoreProperties embeddingStore;
|
||||
}
|
||||
Reference in New Issue
Block a user