From a0b4fb33c1dadd935c0344b2dd3335be3fa40f97 Mon Sep 17 00:00:00 2001 From: LXW <1264174498@qq.com> Date: Fri, 13 Oct 2023 19:53:22 +0800 Subject: [PATCH] (improvement)(chat) solved query recall add embedding url check (#217) Co-authored-by: jolunoluo --- .../supersonic/chat/service/impl/ChatServiceImpl.java | 3 +++ .../tencent/supersonic/chat/utils/SolvedQueryManager.java | 7 +++++++ .../infrastructure/repository/DimensionRepositoryImpl.java | 5 +++++ .../infrastructure/repository/MetricRepositoryImpl.java | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java index ec531fa79..b911cb81c 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ChatServiceImpl.java @@ -203,6 +203,9 @@ public class ChatServiceImpl implements ChatService { public List getSolvedQuery(String queryText, Integer agentId) { //1. recall solved query by queryText List solvedQueryRecallResps = solvedQueryManager.recallSolvedQuery(queryText, agentId); + if (CollectionUtils.isEmpty(solvedQueryRecallResps)) { + return Lists.newArrayList(); + } List queryIds = solvedQueryRecallResps.stream() .map(SolvedQueryRecallResp::getQueryId).collect(Collectors.toList()); PageQueryInfoReq pageQueryInfoReq = new PageQueryInfoReq(); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/SolvedQueryManager.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/SolvedQueryManager.java index 2b5df8cfc..decdaeb80 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/SolvedQueryManager.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/SolvedQueryManager.java @@ -10,6 +10,7 @@ import com.tencent.supersonic.chat.parser.plugin.embedding.EmbeddingResp; import com.tencent.supersonic.chat.parser.plugin.embedding.RecallRetrieval; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; @@ -39,6 +40,9 @@ public class SolvedQueryManager { } public void saveSolvedQuery(SolvedQueryReq solvedQueryReq) { + if (StringUtils.isBlank(embeddingConfig.getUrl())) { + return; + } String queryText = solvedQueryReq.getQueryText(); try { String uniqueId = generateUniqueId(solvedQueryReq.getQueryId(), solvedQueryReq.getParseId()); @@ -57,6 +61,9 @@ public class SolvedQueryManager { } public List recallSolvedQuery(String queryText, Integer agentId) { + if (StringUtils.isBlank(embeddingConfig.getUrl())) { + return Lists.newArrayList(); + } List solvedQueryRecallResps = Lists.newArrayList(); try { String url = embeddingConfig.getUrl() + embeddingConfig.getSolvedQueryRecallPath() + "?n_results=" diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java index 23c04eaef..b1e6ed393 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/DimensionRepositoryImpl.java @@ -1,5 +1,6 @@ package com.tencent.supersonic.semantic.model.infrastructure.repository; +import com.clickhouse.client.internal.apache.commons.compress.utils.Lists; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDO; import com.tencent.supersonic.semantic.model.domain.dataobject.DimensionDOExample; import com.tencent.supersonic.semantic.model.domain.repository.DimensionRepository; @@ -7,6 +8,7 @@ import com.tencent.supersonic.semantic.model.domain.pojo.DimensionFilter; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DimensionDOCustomMapper; import com.tencent.supersonic.semantic.model.infrastructure.mapper.DimensionDOMapper; import java.util.List; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; @@ -56,6 +58,9 @@ public class DimensionRepositoryImpl implements DimensionRepository { @Override public List getDimensionListOfmodelIds(List modelIds) { + if (CollectionUtils.isEmpty(modelIds)) { + return Lists.newArrayList(); + } DimensionDOExample dimensionDOExample = new DimensionDOExample(); dimensionDOExample.createCriteria().andModelIdIn(modelIds); return dimensionDOMapper.selectByExampleWithBLOBs(dimensionDOExample); diff --git a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java index 9f23e542d..0fbd9a894 100644 --- a/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java +++ b/semantic/model/src/main/java/com/tencent/supersonic/semantic/model/infrastructure/repository/MetricRepositoryImpl.java @@ -1,6 +1,7 @@ package com.tencent.supersonic.semantic.model.infrastructure.repository; +import com.clickhouse.client.internal.apache.commons.compress.utils.Lists; import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO; import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDOExample; import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter; @@ -8,6 +9,7 @@ import com.tencent.supersonic.semantic.model.domain.repository.MetricRepository; import com.tencent.supersonic.semantic.model.infrastructure.mapper.MetricDOCustomMapper; import com.tencent.supersonic.semantic.model.infrastructure.mapper.MetricDOMapper; import java.util.List; +import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Component; @@ -50,6 +52,9 @@ public class MetricRepositoryImpl implements MetricRepository { @Override public List getMetricList(List modelIds) { + if (CollectionUtils.isEmpty(modelIds)) { + return Lists.newArrayList(); + } MetricDOExample metricDOExample = new MetricDOExample(); metricDOExample.createCriteria().andModelIdIn(modelIds); return metricDOMapper.selectByExampleWithBLOBs(metricDOExample);