[improvement][chat]Modify core workflow of NL2SQLParser, always invoking rule-based parsers first.#1729

This commit is contained in:
jerryjzhang
2024-10-29 13:07:02 +08:00
parent b01751afdb
commit 400b9f86f0
9 changed files with 96 additions and 52 deletions

View File

@@ -22,7 +22,7 @@ public class QueryNLReq extends SemanticQueryReq {
private User user;
private QueryFilters queryFilters;
private boolean saveAnswer = true;
private Text2SQLType text2SQLType = Text2SQLType.RULE_AND_LLM;
private Text2SQLType text2SQLType = Text2SQLType.LLM_OR_RULE;
private MapModeEnum mapModeEnum = MapModeEnum.STRICT;
private QueryDataType queryDataType = QueryDataType.ALL;
private Map<String, ChatApp> chatAppConfig;

View File

@@ -60,15 +60,12 @@ public class QueryReqBuilder {
queryStructReq.setGroups(parseInfo.getDimensions().stream().map(SchemaElement::getBizName)
.collect(Collectors.toList()));
queryStructReq.setLimit(parseInfo.getLimit());
// only one metric is queried at once
Set<SchemaElement> metrics = parseInfo.getMetrics();
if (!CollectionUtils.isEmpty(metrics)) {
SchemaElement metricElement = parseInfo.getMetrics().iterator().next();
Set<Order> order =
getOrder(parseInfo.getOrders(), parseInfo.getAggType(), metricElement);
queryStructReq
.setAggregators(getAggregatorByMetric(parseInfo.getAggType(), metricElement));
queryStructReq.setOrders(new ArrayList<>(order));
for (SchemaElement metricElement : parseInfo.getMetrics()) {
queryStructReq.getAggregators()
.addAll(getAggregatorByMetric(parseInfo.getAggType(), metricElement));
queryStructReq.setOrders(new ArrayList<>(
getOrder(parseInfo.getOrders(), parseInfo.getAggType(), metricElement)));
}
deletionDuplicated(queryStructReq);