(improvement)(chat) The vector database supports configuring the dimensions field. (#1535)

This commit is contained in:
lexluo09
2024-08-08 15:14:29 +08:00
committed by GitHub
parent 794a448619
commit 3ca51145e5
2 changed files with 43 additions and 24 deletions

View File

@@ -6,6 +6,7 @@ import com.tencent.supersonic.common.pojo.EmbeddingStoreConfig;
import com.tencent.supersonic.common.pojo.Parameter;
import dev.langchain4j.store.embedding.EmbeddingStoreType;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -26,50 +27,63 @@ public class EmbeddingStoreParameterConfig extends ParameterConfig {
"BaseUrl", "",
"string", "向量库配置", null,
getDependency(EMBEDDING_STORE_PROVIDER.getName(),
Lists.newArrayList(
EmbeddingStoreType.MILVUS.name(),
EmbeddingStoreType.CHROMA.name()
),
ImmutableMap.of(
EmbeddingStoreType.MILVUS.name(), "http://localhost:19530",
EmbeddingStoreType.CHROMA.name(), "http://localhost:8000"
)
));
Lists.newArrayList(
EmbeddingStoreType.MILVUS.name(),
EmbeddingStoreType.CHROMA.name()
),
ImmutableMap.of(
EmbeddingStoreType.MILVUS.name(), "http://localhost:19530",
EmbeddingStoreType.CHROMA.name(), "http://localhost:8000"
)
));
public static final Parameter EMBEDDING_STORE_API_KEY =
new Parameter("s2.embedding.store.api.key", "",
"ApiKey", "",
"string", "向量库配置", null,
getDependency(EMBEDDING_STORE_PROVIDER.getName(),
Lists.newArrayList(
EmbeddingStoreType.MILVUS.name()
),
ImmutableMap.of(
EmbeddingStoreType.MILVUS.name(), "demo"
)
));
Lists.newArrayList(
EmbeddingStoreType.MILVUS.name()
),
ImmutableMap.of(
EmbeddingStoreType.MILVUS.name(), "demo"
)
));
public static final Parameter EMBEDDING_STORE_PERSIST_PATH =
new Parameter("s2.embedding.store.persist.path", "/tmp",
"持久化路径", "",
"string", "向量库配置", null,
getDependency(EMBEDDING_STORE_PROVIDER.getName(),
Lists.newArrayList(
EmbeddingStoreType.IN_MEMORY.name()
),
ImmutableMap.of(
EmbeddingStoreType.IN_MEMORY.name(), "/tmp"
)));
Lists.newArrayList(
EmbeddingStoreType.IN_MEMORY.name()
),
ImmutableMap.of(
EmbeddingStoreType.IN_MEMORY.name(), "/tmp"
)));
public static final Parameter EMBEDDING_STORE_TIMEOUT =
new Parameter("s2.embedding.store.timeout", "60",
"超时时间(秒)", "",
"number", "向量库配置");
public static final Parameter EMBEDDING_STORE_DIMENSION =
new Parameter("s2.embedding.store.dimension", "",
"纬度", "",
"number", "向量库配置", null,
getDependency(EMBEDDING_STORE_PROVIDER.getName(),
Lists.newArrayList(
EmbeddingStoreType.MILVUS.name()
),
ImmutableMap.of(
EmbeddingStoreType.MILVUS.name(), "384"
)
));
@Override
public List<Parameter> getSysParameters() {
return Lists.newArrayList(
EMBEDDING_STORE_PROVIDER, EMBEDDING_STORE_BASE_URL, EMBEDDING_STORE_API_KEY,
EMBEDDING_STORE_PERSIST_PATH, EMBEDDING_STORE_TIMEOUT
EMBEDDING_STORE_PERSIST_PATH, EMBEDDING_STORE_TIMEOUT, EMBEDDING_STORE_DIMENSION
);
}
@@ -79,13 +93,17 @@ public class EmbeddingStoreParameterConfig extends ParameterConfig {
String apiKey = getParameterValue(EMBEDDING_STORE_API_KEY);
String persistPath = getParameterValue(EMBEDDING_STORE_PERSIST_PATH);
String timeOut = getParameterValue(EMBEDDING_STORE_TIMEOUT);
Integer dimension = null;
if (StringUtils.isNumeric(getParameterValue(EMBEDDING_STORE_DIMENSION))) {
dimension = Integer.valueOf(getParameterValue(EMBEDDING_STORE_DIMENSION));
}
return EmbeddingStoreConfig.builder()
.provider(provider)
.baseUrl(baseUrl)
.apiKey(apiKey)
.persistPath(persistPath)
.timeOut(Long.valueOf(timeOut))
.dimension(dimension)
.build();
}
}

View File

@@ -20,4 +20,5 @@ public class EmbeddingStoreConfig implements Serializable {
private String baseUrl;
private String apiKey;
private Long timeOut = 60L;
private Integer dimension;
}