Commit d91f5549 authored by alex yao's avatar alex yao

feat:Agent应用-知识库高级配置

parent 7d2bfad0
......@@ -11,6 +11,7 @@ public class BizKnowledgeInfoConvert {
BizKnowledgeInfoEntity entity = new BizKnowledgeInfoEntity();
entity.setId(model.getId());
entity.setKnowledgeName(model.getKnowledgeName());
entity.setKnowledgeType(model.getKnowledgeType());
entity.setMemberId(model.getMemberId());
entity.setKdIds(model.getKdIds());
entity.setTrainStatus(model.getTrainStatus());
......@@ -28,6 +29,7 @@ public class BizKnowledgeInfoConvert {
public static BizKnowledgeInfoModel entityToModel(BizKnowledgeInfoEntity entity) {
BizKnowledgeInfoModel model = new BizKnowledgeInfoModel();
model.setId(entity.getId());
model.setKnowledgeType(entity.getKnowledgeType());
model.setKnowledgeName(entity.getKnowledgeName());
model.setMemberId(entity.getMemberId());
model.setKdIds(entity.getKdIds());
......@@ -47,6 +49,7 @@ public class BizKnowledgeInfoConvert {
BizKnowledgeInfoDto dto = new BizKnowledgeInfoDto();
dto.setId(entity.getId());
dto.setKnowledgeName(entity.getKnowledgeName());
dto.setKnowledgeType(entity.getKnowledgeType());
dto.setMemberId(entity.getMemberId());
dto.setIsOpen(entity.getIsOpen());
dto.setKdIds(entity.getKdIds());
......@@ -59,6 +62,7 @@ public class BizKnowledgeInfoConvert {
public static BizKnowledgeInfoEntity dtoToEntity(BizKnowledgeInfoDto dto) {
BizKnowledgeInfoEntity entity = new BizKnowledgeInfoEntity();
entity.setId(dto.getId());
entity.setKnowledgeType(dto.getKnowledgeType());
entity.setKnowledgeName(dto.getKnowledgeName());
entity.setMemberId(dto.getMemberId());
entity.setKdIds(dto.getKdIds());
......
package cn.com.poc.knowledge.dto;
import javax.persistence.Column;
public class BizKnowledgeInfoDto {
/**
......@@ -32,6 +30,21 @@ public class BizKnowledgeInfoDto {
this.knowledgeName = knowledgeName;
}
/**
* knowledge_type
* 知识库类型 Base-基础 QA-问答
*/
private String knowledgeType;
public String getKnowledgeType() {
return this.knowledgeType;
}
public void setKnowledgeType(String knowledgeType) {
this.knowledgeType = knowledgeType;
}
/**
* member_id
* 用户ID
......
......@@ -28,7 +28,22 @@ public class BizKnowledgeInfoEntity {
public void setKnowledgeName(java.lang.String knowledgeName){
this.knowledgeName = knowledgeName;
}
/** member_id
/**
* knowledge_type
* 知识库类型 QA-问答 Base-基础
*/
private String knowledgeType;
public String getKnowledgeType() {
return knowledgeType;
}
public void setKnowledgeType(String knowledgeType) {
this.knowledgeType = knowledgeType;
}
/** member_id
*用户ID
*/
private java.lang.String memberId;
......
......@@ -63,6 +63,21 @@ public class BizKnowledgeInfoModel extends BaseModelClass implements Serializabl
super.addValidField("knowledgeName");
}
/**
* knowledge_type
* 知识库类型 QA-问答 Base-基础
*/
private String knowledgeType;
@Column(name = "knowledge_type", length = 5)
public String getKnowledgeType() {
return this.knowledgeType;
}
public void setKnowledgeType(String knowledgeType) {
this.knowledgeType = knowledgeType;
super.addValidField("knowledgeType");
}
/**
* member_id
......
select
id,
knowledge_name,
knowledge_type,
member_id,
kd_ids,
train_status,
......@@ -18,4 +19,5 @@ where
<< and member_id = :memberId>>
<< and LOCATE(:query ,knowledge_name) >>
<< and train_status = :trainStatus>>
<< and knowledge_type = :knowledgeType>>
order by MODIFIED_TIME
\ No newline at end of file
......@@ -40,5 +40,14 @@ public class KnowledgeInfosQueryCondition implements Serializable{
public void setTrainStatus(java.lang.String trainStatus){
this.trainStatus = trainStatus;
}
private java.lang.String knowledgeType;
public String getKnowledgeType() {
return knowledgeType;
}
public void setKnowledgeType(String knowledgeType) {
this.knowledgeType = knowledgeType;
}
}
\ No newline at end of file
......@@ -44,6 +44,22 @@ public class KnowledgeInfosQueryItem extends BaseItemClass implements Serializab
this.knowledgeName = knowledgeName;
}
/**
* knowledge_type
* knowledge_type
*/
private java.lang.String knowledgeType;
@Column(name = "knowledge_type")
public String getKnowledgeType() {
return knowledgeType;
}
public void setKnowledgeType(String knowledgeType) {
this.knowledgeType = knowledgeType;
}
/**
* member_id
* member_id
......
......@@ -260,12 +260,14 @@ public class KnowledgeRestImpl implements KnowledgeRest {
@Override
public BizKnowledgeInfoDto createKnowledge(BizKnowledgeInfoDto dto) throws Exception {
Assert.notNull(dto.getKnowledgeName(), I18nUtils.message("assert/knowledge.name.null"));
if (StringUtils.isBlank(dto.getKnowledgeType())) {
dto.setKnowledgeType(KnowledgeConstant.KnowledgeType.BASE);
}
UserBaseEntity userBaseEntity = BlContext.getCurrentUserNotException();
// checkEquity(userBaseEntity);
BizKnowledgeInfoEntity bizKnowledgeInfoEntity = new BizKnowledgeInfoEntity();
bizKnowledgeInfoEntity.setKnowledgeName(dto.getKnowledgeName());
bizKnowledgeInfoEntity.setMemberId(userBaseEntity.getUserId().toString());
bizKnowledgeInfoEntity.setKnowledgeType(dto.getKnowledgeType());
bizKnowledgeInfoEntity.setTrainStatus(KnowledgeConstant.TrainStatus.UNOPENED);
bizKnowledgeInfoEntity.setKnowledgeDesc(dto.getDesc());
BizKnowledgeInfoEntity entity = bizKnowledgeInfoService.save(bizKnowledgeInfoEntity);
......
package cn.com.poc.thirdparty.resource.demand.ai.aggregate;
import cn.com.poc.thirdparty.resource.demand.ai.constants.KnowledgeSearchTypeEnum;
import cn.com.poc.thirdparty.resource.demand.ai.entity.knowledge.GetKnowledgeChunkInfoResult;
import cn.com.poc.thirdparty.resource.demand.ai.entity.knowledge.SegmentationConfigRequest;
import cn.com.yict.framemax.data.model.PagingInfo;
......@@ -45,12 +46,13 @@ public interface DemandKnowledgeService {
/**
* 知识库查询
*
* @param query 查询文本
* @param knowledgeIds 知识库id
* @param topK 返回个数
* @param query 查询文本
* @param knowledgeIds 知识库id
* @param topK 返回个数
* @param searchTypeEnum 查询类型
* @return 查询结果
*/
List<String> searchKnowledge(String query, List<String> knowledgeIds, Integer topK);
List<String> searchKnowledge(String query, List<String> knowledgeIds, Integer topK, KnowledgeSearchTypeEnum searchTypeEnum);
/**
* 获取知识库分片
......
package cn.com.poc.thirdparty.resource.demand.ai.aggregate.impl;
import cn.com.poc.thirdparty.resource.demand.ai.constants.KnowledgeSearchTypeEnum;
import cn.com.poc.thirdparty.resource.demand.dgTools.DgtoolsAbstractHttpClient;
import cn.com.poc.thirdparty.resource.demand.ai.route.DgtoolsApiRoute;
import cn.com.poc.thirdparty.resource.demand.dgTools.result.AbstractResult;
import cn.com.poc.thirdparty.resource.demand.ai.aggregate.DemandKnowledgeService;
import cn.com.poc.thirdparty.resource.demand.ai.entity.knowledge.*;
import cn.com.poc.thirdparty.resource.demand.member.service.DemandAuthService;
import cn.com.yict.framemax.core.config.Config;
import cn.com.yict.framemax.core.i18n.I18nMessageException;
import cn.com.yict.framemax.data.model.PagingInfo;
import cn.hutool.core.lang.Assert;
......@@ -77,7 +79,7 @@ public class DemandKnowledgeServiceImpl implements DemandKnowledgeService {
}
@Override
public List<String> searchKnowledge(String query, List<String> knowledgeIds, Integer topK) {
public List<String> searchKnowledge(String query, List<String> knowledgeIds, Integer topK, KnowledgeSearchTypeEnum searchTypeEnum) {
Assert.notBlank(query);
if (CollectionUtils.isEmpty(knowledgeIds)) {
return new ArrayList<String>();
......@@ -89,6 +91,10 @@ public class DemandKnowledgeServiceImpl implements DemandKnowledgeService {
searchKnowledgeRequest.setQuery(query);
searchKnowledgeRequest.setKnowLedgeIds(knowledgeIds);
searchKnowledgeRequest.setTopK(topK);
VectorSearchConfig vectorSearchConfig = new VectorSearchConfig();
vectorSearchConfig.setSearchType(searchTypeEnum);
vectorSearchConfig.setApiKey(Config.get("large-model.apikey"));
searchKnowledgeRequest.setVectorSearchConfig(vectorSearchConfig);
SearchKnowledgeResult searchKnowledgeResult = dgToolsAbstractHttpClient.doRequest(DgtoolsApiRoute.DgtoolsAI.SEARCH_KNOWLEDGE, searchKnowledgeRequest, getHeaders());
if (null == searchKnowledgeResult) {
throw new I18nMessageException("exception/query.knowledge.base.exception");
......
......@@ -12,6 +12,8 @@ public class SearchKnowledgeRequest extends AbstractRequest<SearchKnowledgeResul
private List<String> knowLedgeIds;
private Integer topK;
private VectorSearchConfig vectorSearchConfig;
public String getQuery() {
return query;
}
......@@ -36,6 +38,14 @@ public class SearchKnowledgeRequest extends AbstractRequest<SearchKnowledgeResul
this.topK = topK;
}
public VectorSearchConfig getVectorSearchConfig() {
return vectorSearchConfig;
}
public void setVectorSearchConfig(VectorSearchConfig vectorSearchConfig) {
this.vectorSearchConfig = vectorSearchConfig;
}
@Override
public String getMethod() throws Exception {
return null;
......
package cn.com.poc.thirdparty.resource.demand.ai.entity.knowledge;
import cn.com.poc.thirdparty.resource.demand.ai.constants.KnowledgeSearchTypeEnum;
/**
* @author alex.yao
* @date 2025/2/18
*/
public class VectorSearchConfig {
/**
* apiKey
*/
private String apiKey;
/**
* 语义查询,关键字查询,混合查询
*/
private KnowledgeSearchTypeEnum searchType;
public String getApiKey() {
return apiKey;
}
public void setApiKey(String apiKey) {
this.apiKey = apiKey;
}
public KnowledgeSearchTypeEnum getSearchType() {
return searchType;
}
public void setSearchType(KnowledgeSearchTypeEnum searchType) {
this.searchType = searchType;
}
}
package cn.com.poc.knowledge;
import cn.com.poc.knowledge.aggregate.KnowledgeService;
import cn.com.yict.framemax.core.spring.SingleContextInitializer;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import javax.annotation.Resource;
/**
* @author alex.yao
* @date 2025/2/6
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(initializers = SingleContextInitializer.class)
@WebAppConfiguration
public class KnowledgeServiceTest {
@Resource
private KnowledgeService knowledgeService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test_delDocument() {
knowledgeService.delDocument(138, 1071);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment