(improvement)(chat) Support integrating embeddingStore into system settings. (#1405)

This commit is contained in:
lexluo09
2024-07-14 21:50:12 +08:00
committed by GitHub
parent 4eb6193699
commit d5c78d87e7
9 changed files with 41 additions and 28 deletions

View File

@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
@Service("EmbeddingModelConfig")
@Service("EmbeddingModelParameterConfig")
@Slf4j
public class EmbeddingModelParameterConfig extends ParameterConfig {

View File

@@ -3,6 +3,7 @@ package com.tencent.supersonic.common.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@@ -11,6 +12,7 @@ import java.io.Serializable;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class EmbeddingStoreConfig implements Serializable {
private static final long serialVersionUID = 1L;
private String provider;

View File

@@ -14,6 +14,7 @@ import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingSearchResult;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.EmbeddingStoreFactory;
import dev.langchain4j.store.embedding.EmbeddingStoreFactoryProvider;
import dev.langchain4j.store.embedding.Retrieval;
import dev.langchain4j.store.embedding.RetrieveQuery;
import dev.langchain4j.store.embedding.RetrieveQueryResult;
@@ -40,10 +41,6 @@ import java.util.stream.Collectors;
@Service
@Slf4j
public class EmbeddingServiceImpl implements EmbeddingService {
@Autowired
private EmbeddingStoreFactory embeddingStoreFactory;
@Autowired
private EmbeddingModelParameterConfig embeddingModelParameterConfig;
@@ -54,6 +51,7 @@ public class EmbeddingServiceImpl implements EmbeddingService {
@Override
public void addQuery(String collectionName, List<TextSegment> queries) {
EmbeddingStoreFactory embeddingStoreFactory = EmbeddingStoreFactoryProvider.getFactory();
EmbeddingStore embeddingStore = embeddingStoreFactory.create(collectionName);
for (TextSegment query : queries) {
@@ -102,6 +100,7 @@ public class EmbeddingServiceImpl implements EmbeddingService {
@Override
public void deleteQuery(String collectionName, List<TextSegment> queries) {
//Not supported yet in Milvus and Chroma
EmbeddingStoreFactory embeddingStoreFactory = EmbeddingStoreFactoryProvider.getFactory();
EmbeddingStore embeddingStore = embeddingStoreFactory.create(collectionName);
try {
if (embeddingStore instanceof InMemoryEmbeddingStore) {
@@ -122,7 +121,7 @@ public class EmbeddingServiceImpl implements EmbeddingService {
@Override
public List<RetrieveQueryResult> retrieveQuery(String collectionName, RetrieveQuery retrieveQuery, int num) {
List<RetrieveQueryResult> results = new ArrayList<>();
EmbeddingStoreFactory embeddingStoreFactory = EmbeddingStoreFactoryProvider.getFactory();
EmbeddingStore embeddingStore = embeddingStoreFactory.create(collectionName);
List<String> queryTextsList = retrieveQuery.getQueryTextsList();
Map<String, String> filterCondition = retrieveQuery.getFilterCondition();