diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/SimilarMetricParseResponder.java b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/SimilarMetricExecuteResponder.java similarity index 80% rename from chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/SimilarMetricParseResponder.java rename to chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/SimilarMetricExecuteResponder.java index 547fa8c95..e56642982 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/responder/parse/SimilarMetricParseResponder.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/responder/execute/SimilarMetricExecuteResponder.java @@ -1,12 +1,11 @@ -package com.tencent.supersonic.chat.responder.parse; +package com.tencent.supersonic.chat.responder.execute; import com.alibaba.fastjson.JSONObject; -import com.tencent.supersonic.chat.api.pojo.QueryContext; import com.tencent.supersonic.chat.api.pojo.SchemaElement; import com.tencent.supersonic.chat.api.pojo.SchemaElementType; import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo; -import com.tencent.supersonic.chat.api.pojo.response.ParseResp; -import com.tencent.supersonic.chat.persistence.dataobject.ChatParseDO; +import com.tencent.supersonic.chat.api.pojo.request.ExecuteQueryReq; +import com.tencent.supersonic.chat.api.pojo.response.QueryResult; import com.tencent.supersonic.chat.query.QueryManager; import com.tencent.supersonic.common.util.ContextUtils; import com.tencent.supersonic.common.util.embedding.EmbeddingUtils; @@ -15,6 +14,7 @@ import com.tencent.supersonic.common.util.embedding.RetrieveQuery; import com.tencent.supersonic.common.util.embedding.RetrieveQueryResult; import com.tencent.supersonic.semantic.model.domain.listener.MetaEmbeddingListener; import org.springframework.util.CollectionUtils; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -22,15 +22,12 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -public class SimilarMetricParseResponder implements ParseResponder { +public class SimilarMetricExecuteResponder implements ExecuteResponder { @Override - public void fillResponse(ParseResp parseResp, QueryContext queryContext, List chatParseDOS) { - if (CollectionUtils.isEmpty(parseResp.getSelectedParses())) { - return; - } - fillSimilarMetric(parseResp.getSelectedParses().iterator().next()); + public void fillResponse(QueryResult queryResult, SemanticParseInfo semanticParseInfo, ExecuteQueryReq queryReq) { + fillSimilarMetric(queryResult.getChatContext()); } private void fillSimilarMetric(SemanticParseInfo parseInfo) { @@ -38,8 +35,7 @@ public class SimilarMetricParseResponder implements ParseResponder { || CollectionUtils.isEmpty(parseInfo.getMetrics())) { return; } - List metricNames = parseInfo.getMetrics().stream() - .map(SchemaElement::getName).collect(Collectors.toList()); + List metricNames = Collections.singletonList(parseInfo.getMetrics().iterator().next().getName()); Map filterCondition = new HashMap<>(); filterCondition.put("modelId", parseInfo.getModelId().toString()); filterCondition.put("type", SchemaElementType.METRIC.name()); @@ -47,7 +43,7 @@ public class SimilarMetricParseResponder implements ParseResponder { .filterCondition(filterCondition).queryEmbeddings(null).build(); EmbeddingUtils embeddingUtils = ContextUtils.getBean(EmbeddingUtils.class); List retrieveQueryResults = embeddingUtils.retrieveQuery( - MetaEmbeddingListener.COLLECTION_NAME, retrieveQuery, 10); + MetaEmbeddingListener.COLLECTION_NAME, retrieveQuery, 5); if (CollectionUtils.isEmpty(retrieveQueryResults)) { return; } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java index d74f91550..eeebfd760 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/QueryServiceImpl.java @@ -242,10 +242,10 @@ public class QueryServiceImpl implements QueryService { } chatCtx.setQueryText(queryReq.getQueryText()); chatCtx.setUser(queryReq.getUser().getName()); - chatService.updateQuery(queryReq.getQueryId(), queryResult, chatCtx); for (ExecuteResponder executeResponder : executeResponders) { executeResponder.fillResponse(queryResult, parseInfo, queryReq); } + chatService.updateQuery(queryReq.getQueryId(), queryResult, chatCtx); } else { chatService.deleteChatQuery(queryReq.getQueryId()); } diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories index 3eb0ffc0a..f53c2908c 100644 --- a/launchers/standalone/src/main/resources/META-INF/spring.factories +++ b/launchers/standalone/src/main/resources/META-INF/spring.factories @@ -41,8 +41,8 @@ com.tencent.supersonic.chat.api.component.SemanticCorrector=\ com.tencent.supersonic.chat.responder.parse.ParseResponder=\ com.tencent.supersonic.chat.responder.parse.EntityInfoParseResponder, \ - com.tencent.supersonic.chat.responder.parse.ExplainSqlParseResponder, \ - com.tencent.supersonic.chat.responder.parse.SimilarMetricParseResponder + com.tencent.supersonic.chat.responder.parse.ExplainSqlParseResponder com.tencent.supersonic.chat.responder.execute.ExecuteResponder=\ - com.tencent.supersonic.chat.responder.execute.EntityInfoExecuteResponder \ No newline at end of file + com.tencent.supersonic.chat.responder.execute.EntityInfoExecuteResponder, \ + com.tencent.supersonic.chat.responder.execute.SimilarMetricExecuteResponder \ No newline at end of file