diff --git a/README.md b/README.md
index 4d5f8c1ec..2187599d6 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ The high-level architecture and main process flow is as follows:
- **Semantic Corrector:** checks validity of extracted semantic information and performs correction and optimization if needed.
-- **Semantic Layer:** performs execution according to extracted semantic information. It generates SQL queries and executes them against physical data models.
+- **Semantic Interpreter:** performs execution according to extracted semantic information. It generates SQL statements and executes them against physical data models.
- **Chat Plugin:** extends functionality with third-party tools. The LLM is going to select the most suitable one, given all configured plugins with function description and sample questions.
diff --git a/README_CN.md b/README_CN.md
index 79e6196b5..21b4821ff 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -38,7 +38,7 @@
- **语义修正器(Semantic Corrector):** 检查语义信息的合法性,对不合法的信息做修正和优化处理。
-- **语义翻译器(Semantic Layer):** 根据语义信息生成物理SQL执行查询。
+- **语义解释器(Semantic Interpreter):** 根据语义信息生成物理SQL执行查询。
- **问答插件(Chat Plugin):** 通过第三方工具扩展功能。给定所有配置的插件及其功能描述和示例问题,大语言模型将选择最合适的插件。
diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticInterpreter.java
similarity index 98%
rename from chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java
rename to chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticInterpreter.java
index a6be0a0ab..7e7caaf13 100644
--- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticLayer.java
+++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/component/SemanticInterpreter.java
@@ -31,7 +31,7 @@ import java.util.List;
* as proxy to a remote semantic service.
*
*/
-public interface SemanticLayer {
+public interface SemanticInterpreter {
QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user);
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/interpret/MetricInterpretParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/interpret/MetricInterpretParser.java
index 8965bcda2..b006ab2e1 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/interpret/MetricInterpretParser.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/interpret/MetricInterpretParser.java
@@ -5,7 +5,7 @@ import com.google.common.collect.Sets;
import com.tencent.supersonic.chat.agent.Agent;
import com.tencent.supersonic.chat.agent.tool.AgentToolType;
import com.tencent.supersonic.chat.agent.tool.MetricInterpretTool;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.component.SemanticParser;
import com.tencent.supersonic.chat.api.pojo.QueryContext;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
@@ -82,8 +82,8 @@ public class MetricInterpretParser implements SemanticParser {
}
public Set getMetrics(List metricIds, Long modelId) {
- SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
- ModelSchema modelSchema = semanticLayer.getModelSchema(modelId, true);
+ SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
+ ModelSchema modelSchema = semanticInterpreter.getModelSchema(modelId, true);
Set metrics = modelSchema.getMetrics();
return metrics.stream().filter(schemaElement -> metricIds.contains(schemaElement.getId()))
.collect(Collectors.toSet());
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java
index 58764882a..64f13c624 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/dsl/DslQuery.java
@@ -1,7 +1,7 @@
package com.tencent.supersonic.chat.query.llm.dsl;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.response.EntityInfo;
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
import com.tencent.supersonic.chat.api.pojo.response.QueryState;
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Component;
public class DslQuery extends PluginSemanticQuery {
public static final String QUERY_MODE = "DSL";
- protected SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ protected SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
public DslQuery() {
QueryManager.register(this);
@@ -49,7 +49,7 @@ public class DslQuery extends PluginSemanticQuery {
long startTime = System.currentTimeMillis();
QueryDslReq queryDslReq = getQueryDslReq(llmResp);
- QueryResultWithSchemaResp queryResp = semanticLayer.queryByDsl(queryDslReq, user);
+ QueryResultWithSchemaResp queryResp = semanticInterpreter.queryByDsl(queryDslReq, user);
log.info("queryByDsl cost:{},querySql:{}", System.currentTimeMillis() - startTime, llmResp.getSqlOutput());
@@ -92,7 +92,7 @@ public class DslQuery extends PluginSemanticQuery {
.queryTypeEnum(QueryTypeEnum.SQL)
.queryReq(getQueryDslReq(getLlmResp()))
.build();
- return semanticLayer.explain(explainSqlReq, user);
+ return semanticInterpreter.explain(explainSqlReq, user);
} catch (Exception e) {
log.error("explain error explainSqlReq:{}", explainSqlReq, e);
}
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/interpret/MetricInterpretQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/interpret/MetricInterpretQuery.java
index 1fa090eb8..831344496 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/interpret/MetricInterpretQuery.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/llm/interpret/MetricInterpretQuery.java
@@ -3,7 +3,7 @@ package com.tencent.supersonic.chat.query.llm.interpret;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch;
import com.tencent.supersonic.chat.api.pojo.SchemaElementType;
@@ -54,8 +54,8 @@ public class MetricInterpretQuery extends PluginSemanticQuery {
QueryStructReq queryStructReq = QueryReqBuilder.buildStructReq(parseInfo);
fillAggregator(queryStructReq, parseInfo.getMetrics());
queryStructReq.setNativeQuery(true);
- SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
- QueryResultWithSchemaResp queryResultWithSchemaResp = semanticLayer.queryByStruct(queryStructReq, user);
+ SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
+ QueryResultWithSchemaResp queryResultWithSchemaResp = semanticInterpreter.queryByStruct(queryStructReq, user);
String text = generateTableText(queryResultWithSchemaResp);
Map properties = parseInfo.getProperties();
Map replacedMap = new HashMap<>();
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java
index 4b5a8ac74..a85822a85 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/query/rule/RuleSemanticQuery.java
@@ -2,7 +2,7 @@
package com.tencent.supersonic.chat.query.rule;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.component.SemanticQuery;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
@@ -45,7 +45,7 @@ public abstract class RuleSemanticQuery implements SemanticQuery, Serializable {
protected SemanticParseInfo parseInfo = new SemanticParseInfo();
protected QueryMatcher queryMatcher = new QueryMatcher();
- protected SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ protected SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
public RuleSemanticQuery() {
QueryManager.register(this);
@@ -196,7 +196,7 @@ public abstract class RuleSemanticQuery implements SemanticQuery, Serializable {
}
QueryResult queryResult = new QueryResult();
- QueryResultWithSchemaResp queryResp = semanticLayer.queryByStruct(convertQueryStruct(), user);
+ QueryResultWithSchemaResp queryResp = semanticInterpreter.queryByStruct(convertQueryStruct(), user);
if (queryResp != null) {
queryResult.setQueryAuthorization(queryResp.getQueryAuthorization());
@@ -227,7 +227,7 @@ public abstract class RuleSemanticQuery implements SemanticQuery, Serializable {
.queryTypeEnum(QueryTypeEnum.STRUCT)
.queryReq(convertQueryStruct())
.build();
- return semanticLayer.explain(explainSqlReq, user);
+ return semanticInterpreter.explain(explainSqlReq, user);
} catch (Exception e) {
log.error("explain error explainSqlReq:{}", explainSqlReq, e);
}
@@ -246,7 +246,7 @@ public abstract class RuleSemanticQuery implements SemanticQuery, Serializable {
QueryResult queryResult = new QueryResult();
QueryMultiStructReq queryMultiStructReq = convertQueryMultiStruct();
- QueryResultWithSchemaResp queryResp = semanticLayer.queryByMultiStruct(queryMultiStructReq, user);
+ QueryResultWithSchemaResp queryResp = semanticInterpreter.queryByMultiStruct(queryMultiStructReq, user);
if (queryResp != null) {
queryResult.setQueryAuthorization(queryResp.getQueryAuthorization());
}
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java
index d8521e73a..d10497e7c 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/rest/ChatConfigController.java
@@ -3,7 +3,7 @@ package com.tencent.supersonic.chat.rest;
import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigBaseReq;
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigEditReqReq;
import com.tencent.supersonic.chat.api.pojo.request.ChatConfigFilter;
@@ -41,7 +41,7 @@ public class ChatConfigController {
private ConfigService configService;
- private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ private SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
@PostMapping
@@ -85,35 +85,35 @@ public class ChatConfigController {
HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
- return semanticLayer.getModelList(AuthType.ADMIN, domainId, user);
+ return semanticInterpreter.getModelList(AuthType.ADMIN, domainId, user);
}
@GetMapping("/modelList")
public List getModelList(HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
- return semanticLayer.getModelList(AuthType.ADMIN, null, user);
+ return semanticInterpreter.getModelList(AuthType.ADMIN, null, user);
}
@GetMapping("/domainList")
public List getDomainList(HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
- return semanticLayer.getDomainList(user);
+ return semanticInterpreter.getDomainList(user);
}
@GetMapping("/modelList/view")
public List getModelListVisible(HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
- return semanticLayer.getModelList(AuthType.VISIBLE, null, user);
+ return semanticInterpreter.getModelList(AuthType.VISIBLE, null, user);
}
@PostMapping("/dimension/page")
public PageInfo getDimension(@RequestBody PageDimensionReq pageDimensionReq,
HttpServletRequest request,
HttpServletResponse response) {
- return semanticLayer.getDimensionPage(pageDimensionReq);
+ return semanticInterpreter.getDimensionPage(pageDimensionReq);
}
@PostMapping("/metric/page")
@@ -121,7 +121,7 @@ public class ChatConfigController {
HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
- return semanticLayer.getMetricPage(pageMetricReq, user);
+ return semanticInterpreter.getMetricPage(pageMetricReq, user);
}
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java
index 31ea5e864..e903a4f57 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/SemanticService.java
@@ -12,7 +12,7 @@ import static com.tencent.supersonic.common.pojo.Constants.TIME_FORMAT;
import static com.tencent.supersonic.common.pojo.Constants.WEEK;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
@@ -78,7 +78,7 @@ public class SemanticService {
@Autowired
private AggregatorConfig aggregatorConfig;
- private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ private SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
public ModelSchema getModelSchema(Long id) {
ModelSchema modelSchema = schemaService.getModelSchema(id);
@@ -227,7 +227,7 @@ public class SemanticService {
QueryResultWithSchemaResp queryResultWithColumns = null;
try {
- queryResultWithColumns = semanticLayer.queryByStruct(QueryReqBuilder.buildStructReq(semanticParseInfo),
+ queryResultWithColumns = semanticInterpreter.queryByStruct(QueryReqBuilder.buildStructReq(semanticParseInfo),
user);
} catch (Exception e) {
log.warn("setMainModel queryByStruct error, e:", e);
@@ -393,7 +393,7 @@ public class SemanticService {
queryStructReq.setGroups(new ArrayList<>(Arrays.asList(dateField)));
queryStructReq.setDateInfo(getRatioDateConf(aggOperatorEnum, semanticParseInfo, results));
- QueryResultWithSchemaResp queryResp = semanticLayer.queryByStruct(queryStructReq, user);
+ QueryResultWithSchemaResp queryResp = semanticInterpreter.queryByStruct(queryStructReq, user);
if (Objects.nonNull(queryResp) && !CollectionUtils.isEmpty(queryResp.getResultList())) {
Map result = queryResp.getResultList().get(0);
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ConfigServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ConfigServiceImpl.java
index a97d3a404..b3d6a8460 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ConfigServiceImpl.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/ConfigServiceImpl.java
@@ -2,7 +2,7 @@ package com.tencent.supersonic.chat.service.impl;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.request.ItemVisibility;
@@ -63,7 +63,7 @@ public class ConfigServiceImpl implements ConfigService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
- private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ private SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
public ConfigServiceImpl(ChatConfigRepository chatConfigRepository,
@@ -353,7 +353,7 @@ public class ConfigServiceImpl implements ConfigService {
@Override
public List getAllChatRichConfig() {
List chatConfigRichInfoList = new ArrayList<>();
- List modelSchemas = semanticLayer.getModelSchema();
+ List modelSchemas = semanticInterpreter.getModelSchema();
modelSchemas.stream().forEach(modelSchema -> {
ChatConfigRichResp chatConfigRichInfo = getConfigRichInfo(modelSchema.getModel().getId());
if (Objects.nonNull(chatConfigRichInfo)) {
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/PluginServiceImpl.java b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/PluginServiceImpl.java
index 601cc8e67..49add3b0d 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/PluginServiceImpl.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/service/impl/PluginServiceImpl.java
@@ -2,7 +2,7 @@ package com.tencent.supersonic.chat.service.impl;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.request.PluginQueryReq;
import com.tencent.supersonic.chat.persistence.dataobject.PluginDO;
import com.tencent.supersonic.chat.persistence.dataobject.PluginDOExample;
@@ -152,8 +152,8 @@ public class PluginServiceImpl implements PluginService {
}
private List authCheck(List plugins, User user) {
- SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
- List modelIdAuthorized = semanticLayer.getModelList(AuthType.ADMIN, null, user).stream()
+ SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
+ List modelIdAuthorized = semanticInterpreter.getModelList(AuthType.ADMIN, null, user).stream()
.map(ModelResp::getId).collect(Collectors.toList());
plugins = plugins.stream().filter(plugin -> {
if (CollectionUtils.isEmpty(plugin.getModelList()) || plugin.isContainsAllModel()) {
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 975aeedd8..a4c12d733 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
@@ -4,7 +4,7 @@ package com.tencent.supersonic.chat.service.impl;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.chat.api.component.SchemaMapper;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.component.SemanticQuery;
import com.tencent.supersonic.chat.api.component.SemanticParser;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
@@ -407,8 +407,8 @@ public class QueryServiceImpl implements QueryService {
dimensionFilters.add(dimensionFilter);
queryStructReq.setDimensionFilters(dimensionFilters);
}
- SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
- QueryResultWithSchemaResp queryResultWithSchemaResp = semanticLayer.queryByStruct(queryStructReq, user);
+ SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
+ QueryResultWithSchemaResp queryResultWithSchemaResp = semanticInterpreter.queryByStruct(queryStructReq, user);
Set dimensionValues = new HashSet<>();
queryResultWithSchemaResp.getResultList().removeIf(o -> {
if (dimensionValues.contains(o.get(dimensionValueReq.getBizName()))) {
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java
index 1277356fc..3e2ea2a95 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/ComponentFactory.java
@@ -1,7 +1,7 @@
package com.tencent.supersonic.chat.utils;
import com.tencent.supersonic.chat.api.component.SchemaMapper;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.component.SemanticParser;
import com.tencent.supersonic.chat.api.component.SemanticCorrector;
@@ -20,7 +20,7 @@ public class ComponentFactory {
private static List semanticParsers = new ArrayList<>();
private static List dslCorrections = new ArrayList<>();
- private static SemanticLayer semanticLayer;
+ private static SemanticInterpreter semanticInterpreter;
private static QuerySelector querySelector;
private static ModelResolver modelResolver;
public static List getSchemaMappers() {
@@ -36,15 +36,15 @@ public class ComponentFactory {
}
- public static SemanticLayer getSemanticLayer() {
- if (Objects.isNull(semanticLayer)) {
- semanticLayer = init(SemanticLayer.class);
+ public static SemanticInterpreter getSemanticLayer() {
+ if (Objects.isNull(semanticInterpreter)) {
+ semanticInterpreter = init(SemanticInterpreter.class);
}
- return semanticLayer;
+ return semanticInterpreter;
}
- public static void setSemanticLayer(SemanticLayer layer) {
- semanticLayer = layer;
+ public static void setSemanticLayer(SemanticInterpreter layer) {
+ semanticInterpreter = layer;
}
public static QuerySelector getQuerySelector() {
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictMetaHelper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictMetaHelper.java
index b685d25ff..124143c8f 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictMetaHelper.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictMetaHelper.java
@@ -4,7 +4,7 @@ import static com.tencent.supersonic.common.pojo.Constants.DAY;
import static com.tencent.supersonic.common.pojo.Constants.UNDERLINE;
import com.github.pagehelper.PageInfo;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.request.KnowledgeAdvancedConfig;
@@ -44,7 +44,7 @@ public class DictMetaHelper {
private String internalMetricNameSuffix;
@Value("${model.internal.day.number:2}")
private Integer internalMetricDays;
- private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ private SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
public List generateDimValueInfo(DimValue2DictCommand dimValue2DictCommend) {
List dimValueDOList = new ArrayList<>();
@@ -56,7 +56,7 @@ public class DictMetaHelper {
dimValueDOList = generateDimValueInfoByModel(modelIds);
break;
case OFFLINE_FULL:
- List modelSchemaDescList = semanticLayer.getModelSchema();
+ List modelSchemaDescList = semanticInterpreter.getModelSchema();
if (CollectionUtils.isEmpty(modelSchemaDescList)) {
break;
}
@@ -87,7 +87,7 @@ public class DictMetaHelper {
return dimValueDOList;
}
- List modelSchemaDescList = semanticLayer.getModelSchema();
+ List modelSchemaDescList = semanticInterpreter.getModelSchema();
if (CollectionUtils.isEmpty(modelSchemaDescList)) {
return dimValueDOList;
}
@@ -116,7 +116,7 @@ public class DictMetaHelper {
private List generateDimValueInfoByModel(Set modelIds) {
List dimValueDOList = new ArrayList<>();
- List modelSchemaDescList = semanticLayer.getModelSchema(new ArrayList<>(modelIds));
+ List modelSchemaDescList = semanticInterpreter.getModelSchema(new ArrayList<>(modelIds));
if (CollectionUtils.isEmpty(modelSchemaDescList)) {
return dimValueDOList;
}
@@ -222,7 +222,7 @@ public class DictMetaHelper {
private String queryDataSourceByDimId(Long id) {
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
pageDimensionCmd.setId(id.toString());
- PageInfo dimensionPage = semanticLayer.getDimensionPage(pageDimensionCmd);
+ PageInfo dimensionPage = semanticInterpreter.getDimensionPage(pageDimensionCmd);
if (Objects.nonNull(dimensionPage) && !CollectionUtils.isEmpty(dimensionPage.getList())) {
List list = dimensionPage.getList();
return list.get(0).getDatasourceBizName();
diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java
index 35102e1c0..494f472fd 100644
--- a/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java
+++ b/chat/core/src/main/java/com/tencent/supersonic/chat/utils/DictQueryHelper.java
@@ -1,7 +1,7 @@
package com.tencent.supersonic.chat.utils;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.config.DefaultMetric;
import com.tencent.supersonic.chat.config.Dim4Dict;
import com.tencent.supersonic.common.pojo.QueryColumn;
@@ -40,7 +40,7 @@ import static com.tencent.supersonic.common.pojo.Constants.UNDERLINE_DOUBLE;
public class DictQueryHelper {
private static final Long MAX_FREQUENCY = 99999999L;
- private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ private SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
@Value("${dimension.multi.value.split:#}")
private String dimMultiValueSplit;
@Value("${dimension.value.show:50}")
@@ -55,7 +55,7 @@ public class DictQueryHelper {
List data = new ArrayList<>();
QueryStructReq queryStructCmd = generateQueryStructCmd(modelId, defaultMetricDesc, dim4Dict);
try {
- QueryResultWithSchemaResp queryResultWithColumns = semanticLayer.queryByStruct(queryStructCmd, user);
+ QueryResultWithSchemaResp queryResultWithColumns = semanticInterpreter.queryByStruct(queryStructCmd, user);
log.info("fetchDimValueSingle sql:{}", queryResultWithColumns.getSql());
String nature = String.format("_%d_%d", modelId, dim4Dict.getDimId());
String dimNameRewrite = rewriteDimName(queryResultWithColumns.getColumns(), dim4Dict.getBizName());
diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java
index 12509c81b..aa06d458e 100644
--- a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java
+++ b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/ContextTest.java
@@ -3,7 +3,7 @@ package com.tencent.supersonic.chat.test.context;
import com.tencent.supersonic.chat.persistence.repository.impl.ChatContextRepositoryImpl;
import com.tencent.supersonic.chat.utils.ComponentFactory;
import com.tencent.supersonic.chat.persistence.mapper.ChatContextMapper;
-import com.tencent.supersonic.knowledge.semantic.RemoteSemanticLayer;
+import com.tencent.supersonic.knowledge.semantic.RemoteSemanticInterpreter;
import com.tencent.supersonic.chat.test.ChatBizLauncher;
import com.tencent.supersonic.semantic.model.domain.DimensionService;
import com.tencent.supersonic.semantic.model.domain.ModelService;
@@ -24,7 +24,7 @@ import org.springframework.web.client.RestTemplate;
@MockBean(ModelService.class)
@MockBean(ChatContextMapper.class)
@MockBean(RestTemplate.class)
-@MockBean(RemoteSemanticLayer.class)
+@MockBean(RemoteSemanticInterpreter.class)
@MockBean(ComponentFactory.class)
//@MybatisTest
//@AutoConfigureMybatis
diff --git a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/MockBeansConfiguration.java b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/MockBeansConfiguration.java
index 39c24e53b..76e85d1c2 100644
--- a/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/MockBeansConfiguration.java
+++ b/chat/core/src/test/java/com/tencent/supersonic/chat/test/context/MockBeansConfiguration.java
@@ -4,8 +4,8 @@ import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.when;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
import com.tencent.supersonic.chat.api.pojo.response.ChatConfigResp;
import com.tencent.supersonic.chat.config.DefaultMetric;
import com.tencent.supersonic.chat.config.DefaultMetricInfo;
@@ -41,8 +41,8 @@ public class MockBeansConfiguration {
when(chatService.getOrCreateContext(1)).thenReturn(context);
}
- public static void buildHttpSemanticServiceImpl(SemanticLayer httpSemanticLayer, List dimensionDescs,
- List metricDescs) {
+ public static void buildHttpSemanticServiceImpl(SemanticInterpreter httpSemanticInterpreter, List dimensionDescs,
+ List metricDescs) {
DefaultMetric defaultMetricDesc = new DefaultMetric();
defaultMetricDesc.setUnit(3);
defaultMetricDesc.setPeriod(Constants.DAY);
diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticInterpreter.java
similarity index 93%
rename from chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java
rename to chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticInterpreter.java
index 479a5c5cc..08e6f0291 100644
--- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticLayer.java
+++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/BaseSemanticInterpreter.java
@@ -2,7 +2,7 @@ package com.tencent.supersonic.knowledge.semantic;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp;
import java.util.ArrayList;
@@ -14,7 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
@Slf4j
-public abstract class BaseSemanticLayer implements SemanticLayer {
+public abstract class BaseSemanticInterpreter implements SemanticInterpreter {
protected final Cache> modelSchemaCache =
CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build();
diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticInterpreter.java
similarity index 98%
rename from chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java
rename to chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticInterpreter.java
index 6cff20149..00b0a5e42 100644
--- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticLayer.java
+++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/LocalSemanticInterpreter.java
@@ -29,7 +29,7 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@Slf4j
-public class LocalSemanticLayer extends BaseSemanticLayer {
+public class LocalSemanticInterpreter extends BaseSemanticInterpreter {
private SchemaService schemaService;
private DimensionService dimensionService;
diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticInterpreter.java
similarity index 99%
rename from chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java
rename to chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticInterpreter.java
index c18479162..9a28cffe6 100644
--- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticLayer.java
+++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/semantic/RemoteSemanticInterpreter.java
@@ -52,7 +52,7 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
@Slf4j
-public class RemoteSemanticLayer extends BaseSemanticLayer {
+public class RemoteSemanticInterpreter extends BaseSemanticInterpreter {
private S2ThreadContext s2ThreadContext;
diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java
index 6bc575e62..56b74e3d6 100644
--- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java
+++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/SchemaService.java
@@ -3,7 +3,7 @@ package com.tencent.supersonic.knowledge.service;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.ModelSchema;
import com.tencent.supersonic.chat.api.pojo.SemanticSchema;
import com.tencent.supersonic.knowledge.utils.ComponentFactory;
@@ -19,7 +19,7 @@ public class SchemaService {
public static final String ALL_CACHE = "all";
private static final Integer META_CACHE_TIME = 2;
- private SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
+ private SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
private LoadingCache cache = CacheBuilder.newBuilder()
.expireAfterWrite(META_CACHE_TIME, TimeUnit.MINUTES)
@@ -28,13 +28,13 @@ public class SchemaService {
@Override
public SemanticSchema load(String key) {
log.info("load getDomainSchemaInfo cache [{}]", key);
- return new SemanticSchema(semanticLayer.getModelSchema());
+ return new SemanticSchema(semanticInterpreter.getModelSchema());
}
}
);
public ModelSchema getModelSchema(Long id) {
- return semanticLayer.getModelSchema(id, true);
+ return semanticInterpreter.getModelSchema(id, true);
}
public SemanticSchema getSemanticSchema() {
diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java
index 1aaece555..b904c1a20 100644
--- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java
+++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/service/WordService.java
@@ -1,6 +1,6 @@
package com.tencent.supersonic.knowledge.service;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import com.tencent.supersonic.chat.api.pojo.SchemaElement;
import com.tencent.supersonic.chat.api.pojo.SemanticSchema;
import com.tencent.supersonic.knowledge.dictionary.DictWord;
@@ -22,8 +22,8 @@ public class WordService {
private List preDictWords = new ArrayList<>();
public List getAllDictWords() {
- SemanticLayer semanticLayer = ComponentFactory.getSemanticLayer();
- SemanticSchema semanticSchema = new SemanticSchema(semanticLayer.getModelSchema());
+ SemanticInterpreter semanticInterpreter = ComponentFactory.getSemanticLayer();
+ SemanticSchema semanticSchema = new SemanticSchema(semanticInterpreter.getModelSchema());
List words = new ArrayList<>();
diff --git a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java
index 532f58203..8b0a88183 100644
--- a/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java
+++ b/chat/knowledge/src/main/java/com/tencent/supersonic/knowledge/utils/ComponentFactory.java
@@ -1,6 +1,6 @@
package com.tencent.supersonic.knowledge.utils;
-import com.tencent.supersonic.chat.api.component.SemanticLayer;
+import com.tencent.supersonic.chat.api.component.SemanticInterpreter;
import org.springframework.core.io.support.SpringFactoriesLoader;
import java.util.List;
@@ -8,17 +8,17 @@ import java.util.Objects;
public class ComponentFactory {
- private static SemanticLayer semanticLayer;
+ private static SemanticInterpreter semanticInterpreter;
- public static SemanticLayer getSemanticLayer() {
- if (Objects.isNull(semanticLayer)) {
- semanticLayer = init(SemanticLayer.class);
+ public static SemanticInterpreter getSemanticLayer() {
+ if (Objects.isNull(semanticInterpreter)) {
+ semanticInterpreter = init(SemanticInterpreter.class);
}
- return semanticLayer;
+ return semanticInterpreter;
}
- public static void setSemanticLayer(SemanticLayer layer) {
- semanticLayer = layer;
+ public static void setSemanticLayer(SemanticInterpreter layer) {
+ semanticInterpreter = layer;
}
private static List init(Class factoryType, List list) {
diff --git a/docs/images/supersonic_components.png b/docs/images/supersonic_components.png
index 07ebe188d..8ba377267 100644
Binary files a/docs/images/supersonic_components.png and b/docs/images/supersonic_components.png differ
diff --git a/launchers/chat/src/main/resources/META-INF/spring.factories b/launchers/chat/src/main/resources/META-INF/spring.factories
index dba424313..30aa701fc 100644
--- a/launchers/chat/src/main/resources/META-INF/spring.factories
+++ b/launchers/chat/src/main/resources/META-INF/spring.factories
@@ -14,8 +14,8 @@ com.tencent.supersonic.chat.api.component.SemanticParser=\
com.tencent.supersonic.chat.parser.plugin.function.FunctionBasedParser
-com.tencent.supersonic.chat.api.component.SemanticLayer=\
- com.tencent.supersonic.knowledge.semantic.RemoteSemanticLayer
+com.tencent.supersonic.chat.api.component.SemanticInterpreter=\
+ com.tencent.supersonic.knowledge.semantic.RemoteSemanticInterpreter
com.tencent.supersonic.chat.query.QuerySelector=\
com.tencent.supersonic.chat.query.HeuristicQuerySelector
diff --git a/launchers/standalone/src/main/resources/META-INF/spring.factories b/launchers/standalone/src/main/resources/META-INF/spring.factories
index c9f1ddf99..1054e36b0 100644
--- a/launchers/standalone/src/main/resources/META-INF/spring.factories
+++ b/launchers/standalone/src/main/resources/META-INF/spring.factories
@@ -15,8 +15,8 @@ com.tencent.supersonic.chat.api.component.SemanticParser=\
com.tencent.supersonic.chat.parser.plugin.function.FunctionBasedParser
-com.tencent.supersonic.chat.api.component.SemanticLayer=\
- com.tencent.supersonic.knowledge.semantic.LocalSemanticLayer
+com.tencent.supersonic.chat.api.component.SemanticInterpreter=\
+ com.tencent.supersonic.knowledge.semantic.LocalSemanticInterpreter
com.tencent.supersonic.chat.query.QuerySelector=\
com.tencent.supersonic.chat.query.HeuristicQuerySelector
diff --git a/launchers/standalone/src/test/resources/META-INF/spring.factories b/launchers/standalone/src/test/resources/META-INF/spring.factories
index 953675827..abd0aaf93 100644
--- a/launchers/standalone/src/test/resources/META-INF/spring.factories
+++ b/launchers/standalone/src/test/resources/META-INF/spring.factories
@@ -13,8 +13,8 @@ com.tencent.supersonic.chat.api.component.SemanticParser=\
com.tencent.supersonic.chat.api.component.QueryProcessor=\
com.tencent.supersonic.chat.application.processor.SemanticQueryProcessor
-com.tencent.supersonic.chat.api.component.SemanticLayer=\
- com.tencent.supersonic.knowledge.semantic.LocalSemanticLayer
+com.tencent.supersonic.chat.api.component.SemanticInterpreter=\
+ com.tencent.supersonic.knowledge.semantic.LocalSemanticInterpreter
com.tencent.supersonic.chat.query.QuerySelector=\
com.tencent.supersonic.chat.query.HeuristicQuerySelector