[improvement][project] global refactor , code format , support llm , support fuzzy detect ,support query filter and so on.

This commit is contained in:
lexluo
2023-07-08 15:00:03 +08:00
parent 5ffd617431
commit 404163f391
329 changed files with 21050 additions and 5036 deletions

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.chat.api.service;
package com.tencent.supersonic.chat.api.component;
import com.tencent.supersonic.chat.api.request.QueryContextReq;

View File

@@ -1,8 +1,9 @@
package com.tencent.supersonic.chat.api.service;
package com.tencent.supersonic.chat.api.component;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.semantic.api.core.response.DomainSchemaResp;
import com.tencent.supersonic.semantic.api.core.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.semantic.api.query.request.QuerySqlReq;
import com.tencent.supersonic.semantic.api.query.request.QueryStructReq;
import java.util.List;
@@ -23,6 +24,8 @@ public interface SemanticLayer {
QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user);
QueryResultWithSchemaResp queryBySql(QuerySqlReq querySqlReq, User user);
DomainSchemaResp getDomainSchemaInfo(Long domain);
List<DomainSchemaResp> getDomainSchemaInfo(List<Long> ids);

View File

@@ -1,4 +1,4 @@
package com.tencent.supersonic.chat.api.service;
package com.tencent.supersonic.chat.api.component;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
@@ -13,5 +13,5 @@ import com.tencent.supersonic.chat.api.request.QueryContextReq;
*/
public interface SemanticParser {
boolean parse(QueryContextReq queryContext, ChatContext chatCtx);
void parse(QueryContextReq queryContext, ChatContext chatContext);
}

View File

@@ -0,0 +1,18 @@
package com.tencent.supersonic.chat.api.component;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
import com.tencent.supersonic.chat.api.response.QueryResultResp;
/**
* This class defines the contract for a semantic query that executes specific type of
* query based on the results of semantic parsing.
*/
public interface SemanticQuery {
String getQueryMode();
QueryResultResp execute(User user);
SemanticParseInfo getParseInfo();
}

View File

@@ -0,0 +1,16 @@
package com.tencent.supersonic.chat.api.pojo;
import lombok.Data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Data
public class QueryFilter {
private List<Filter> filters = new ArrayList<>();
private Map<String, Object> params = new HashMap<>();
}

View File

@@ -3,8 +3,10 @@ package com.tencent.supersonic.chat.api.pojo;
import lombok.Data;
@Data
public class SchemaElementCount {
public class QueryMatchInfo {
SchemaElementType elementType;
String detectWord;
private Integer count = 0;
private double maxSimilarity;
}

View File

@@ -1,10 +1,16 @@
package com.tencent.supersonic.chat.api.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SchemaElementMatch {
SchemaElementType elementType;
@@ -18,7 +24,4 @@ public class SchemaElementMatch {
String word;
Long frequency;
public SchemaElementMatch() {
}
}

View File

@@ -21,12 +21,12 @@ public class SchemaMapInfo {
return domainElementMatches;
}
public void setMatchedElements(Integer domain, List<SchemaElementMatch> elementMatches) {
domainElementMatches.put(domain, elementMatches);
}
public void setDomainElementMatches(
Map<Integer, List<SchemaElementMatch>> domainElementMatches) {
this.domainElementMatches = domainElementMatches;
}
public void setMatchedElements(Integer domain, List<SchemaElementMatch> elementMatches) {
domainElementMatches.put(domain, elementMatches);
}
}

View File

@@ -5,6 +5,7 @@ import com.tencent.supersonic.common.enums.AggregateTypeEnum;
import com.tencent.supersonic.common.pojo.DateConf;
import com.tencent.supersonic.common.pojo.Order;
import com.tencent.supersonic.common.pojo.SchemaItem;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -27,4 +28,7 @@ public class SemanticParseInfo {
private DateConf dateInfo;
private Long limit;
private Boolean nativeQuery = false;
private Double bonus = 0d;
private List<SchemaElementMatch> elementMatches = new ArrayList<>();
private Object info;
}

View File

@@ -1,11 +1,14 @@
package com.tencent.supersonic.chat.api.request;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.chat.api.component.SemanticQuery;
import com.tencent.supersonic.chat.api.pojo.QueryFilter;
import com.tencent.supersonic.chat.api.pojo.SchemaMapInfo;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class QueryContextReq {
@@ -13,7 +16,8 @@ public class QueryContextReq {
private Integer chatId;
private Integer domainId = 0;
private User user;
private SemanticParseInfo parseInfo = new SemanticParseInfo();
private QueryFilter queryFilter;
private List<SemanticQuery> candidateQueries = new ArrayList<>();
private SchemaMapInfo mapInfo = new SchemaMapInfo();
private boolean saveAnswer = true;
}

View File

@@ -11,13 +11,13 @@ import lombok.Data;
@Data
public class QueryResultResp {
public EntityInfo entityInfo;
private Long queryId;
private String queryMode;
private String querySql;
private int queryState;
private List<QueryColumn> queryColumns;
private QueryAuthorization queryAuthorization;
public EntityInfo entityInfo;
private SemanticParseInfo chatContext;
private Object response;
private List<Map<String, Object>> queryResults;

View File

@@ -1,29 +0,0 @@
package com.tencent.supersonic.chat.api.service;
import com.tencent.supersonic.chat.api.pojo.ChatContext;
import com.tencent.supersonic.chat.api.pojo.SchemaElementCount;
import com.tencent.supersonic.chat.api.pojo.SchemaElementMatch;
import com.tencent.supersonic.chat.api.pojo.SemanticParseInfo;
import com.tencent.supersonic.chat.api.request.QueryContextReq;
import com.tencent.supersonic.chat.api.response.QueryResultResp;
import java.io.Serializable;
import java.util.List;
/**
* This interface defines the contract for a semantic query that executes specific type of
* query based on the results of semantic parsing.
*/
public interface SemanticQuery extends Serializable {
String getQueryMode();
QueryResultResp execute(QueryContextReq queryCtx, ChatContext chatCtx) throws Exception;
SchemaElementCount match(List<SchemaElementMatch> elementMatches, QueryContextReq queryCtx);
void updateContext(QueryResultResp queryResponse, ChatContext chatCtx, QueryContextReq queryCtx);
SemanticParseInfo getContext(ChatContext chatCtx, QueryContextReq queryCtx);
}