4 Commits

Author SHA1 Message Date
QJ_wonder
825ec63cb4 Merge 83ba635bab into 00814a3807 2025-05-17 21:33:49 +08:00
QJ_wonder
83ba635bab 修复维度值导入字典时,维度值和度量值为英文名导致字段不匹配的问题
修复维度值导入字典时,维度值和度量值为英文名导致字段不匹配的问题。
维度值导入字典时会遍历调用到SqlQueryParser方法,这时的维度值或度量值为Bizname而非name,新增一个set用于添加Bizname,并在判断中新加入Bizname名的判断,只要两个条件符合一个即可
2025-05-14 18:36:23 +08:00
unknown
1ad6c9ddd7 (fix)(headless) <修复开启多轮对话会使用默认的gpt-4o-mini账号去进行过程检测而不是使用配置好的本地大模型的问题> 2025-05-13 13:55:20 +08:00
unknown
50ba18d5d6 (fix)(headless)修复生成的SQL字段不在数据集内,导致查询异常的问题,由原来的字段数量判断更改为查询字段是否包含维度和度量字段 2025-05-13 13:52:19 +08:00
2 changed files with 8 additions and 3 deletions

View File

@@ -167,7 +167,7 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy<EmbeddingResult>
variable.put("retrievedInfo", JSONObject.toJSONString(results)); variable.put("retrievedInfo", JSONObject.toJSONString(results));
Prompt prompt = PromptTemplate.from(LLM_FILTER_PROMPT).apply(variable); Prompt prompt = PromptTemplate.from(LLM_FILTER_PROMPT).apply(variable);
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(); ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(chatQueryContext.getRequest().getChatAppConfig().get("REWRITE_MULTI_TURN").getChatModelConfig());
String response = chatLanguageModel.generate(prompt.toUserMessage().singleText()); String response = chatLanguageModel.generate(prompt.toUserMessage().singleText());
if (StringUtils.isBlank(response)) { if (StringUtils.isBlank(response)) {

View File

@@ -47,12 +47,17 @@ public class SqlQueryParser implements QueryParser {
SqlQuery sqlQuery = queryStatement.getSqlQuery(); SqlQuery sqlQuery = queryStatement.getSqlQuery();
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql()); List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql()); Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql());
Set<String> ontologyMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
Set<String> ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
queryFields.removeAll(queryAliases); queryFields.removeAll(queryAliases);
Ontology ontology = queryStatement.getOntology(); Ontology ontology = queryStatement.getOntology();
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields); OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
Set<String> queryFieldsSet = new HashSet<>(queryFields);
ontologyQuery.getMetrics().forEach(m -> {ontologyMetricsDimensions.add(m.getName()); ontologyBizNameMetricsDimensions.add(m.getBizName());});
ontologyQuery.getDimensions().forEach(d -> {ontologyMetricsDimensions.add(d.getName()); ontologyBizNameMetricsDimensions.add(d.getBizName());});
// check if there are fields not matched with any metric or dimension // check if there are fields not matched with any metric or dimension
if (queryFields.size() > ontologyQuery.getMetrics().size()
+ ontologyQuery.getDimensions().size()) { if (!(queryFieldsSet.containsAll(ontologyMetricsDimensions)||queryFieldsSet.containsAll(ontologyBizNameMetricsDimensions))) {
List<String> semanticFields = Lists.newArrayList(); List<String> semanticFields = Lists.newArrayList();
ontologyQuery.getMetrics().forEach(m -> semanticFields.add(m.getName())); ontologyQuery.getMetrics().forEach(m -> semanticFields.add(m.getName()));
ontologyQuery.getDimensions().forEach(d -> semanticFields.add(d.getName())); ontologyQuery.getDimensions().forEach(d -> semanticFields.add(d.getName()));