From 8924870a053f0b882ada86421c062cbdb9cff093 Mon Sep 17 00:00:00 2001 From: shikeying <shikeying@163.com> Date: 星期三, 08 五月 2024 13:49:06 +0800 Subject: [PATCH] 去掉加密配置文件 --- deploy-jar-template/src/main/java/com/iplatform/api/MilvusChatApi.java | 103 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 96 insertions(+), 7 deletions(-) diff --git a/deploy-jar-template/src/main/java/com/iplatform/api/MilvusChatApi.java b/deploy-jar-template/src/main/java/com/iplatform/api/MilvusChatApi.java index 79483b2..47c0401 100644 --- a/deploy-jar-template/src/main/java/com/iplatform/api/MilvusChatApi.java +++ b/deploy-jar-template/src/main/java/com/iplatform/api/MilvusChatApi.java @@ -4,8 +4,12 @@ import com.iplatform.milvus.EventVo; import com.iplatform.milvus.MilvusEngine; import com.iplatform.milvus.ParamList; +import com.iplatform.milvus.ScoreText; +import com.iplatform.milvus.SearchResult; import com.iplatform.milvus.service.EventServiceImpl; +import com.walker.infrastructure.utils.JsonUtils; import com.walker.infrastructure.utils.StringUtils; +import com.walker.support.milvus.OutData; import com.walker.web.ResponseValue; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -18,21 +22,29 @@ import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; -@RestController -@RequestMapping("/test/milvus") +//@RestController +//@RequestMapping("/test/milvus") public class MilvusChatApi extends SystemController { private EventServiceImpl eventService; private RestTemplate restTemplate; private MilvusEngine milvusEngine; - private Long existId = 4048L; + private Long existId = null; private boolean isBreak = false; - private static final String URL_EMBEDDING = "http://120.26.128.84:7003/ai/text/embedding"; - private static final String URL_MILVUS = "120.26.128.84"; + private static final String URL_EMBEDDING = "http://10.8.4.99:7003/ai/text/embedding"; + private static final String URL_SEARCH_SIMILAR = "http://10.8.4.99:7003/ai/text/search_similar"; + private static final String URL_MILVUS = "10.8.4.99"; +// private static final String URL_EMBEDDING = "http://120.26.128.84:7003/ai/text/embedding"; +// private static final String URL_SEARCH_SIMILAR = "http://120.26.128.84:7003/ai/text/search_similar"; +// private static final String URL_MILVUS = "120.26.128.84"; + private static final double BEST_MATCH_SCORE = 0.75; +// private static final int VECTOR_DIMENSION = 768; + private static final int VECTOR_DIMENSION = 512; @Autowired public MilvusChatApi(EventServiceImpl eventService, RestTemplate restTemplate){ @@ -41,6 +53,7 @@ if(this.milvusEngine == null){ MilvusEngine engine = new MilvusEngine(URL_MILVUS, 19530); this.milvusEngine = engine; + this.milvusEngine.loadChatSimilar4Search(); logger.info("milvus engine ok!"); } } @@ -76,8 +89,84 @@ @RequestMapping("/query") public ResponseValue testQueryMilvus(String text){ + if(StringUtils.isEmpty(text)){ + return ResponseValue.error("text is required!"); + } + // 鐢ㄥ垎鍙峰垎闅斿涓鍙� + String[] array = StringUtils.toArray(text); + ParamList paramList = new ParamList(); + for(String value : array){ + paramList.add(value); + } - return ResponseValue.success(); + SearchResult searchResult = this.acquireSearchResult(paramList); + if(searchResult == null){ + logger.warn("杩滅▼璋冪敤鏈�鍖归厤璇彞鍚戦噺澶辫触锛屾棤娉曠户缁悳绱㈢浉浼煎害"); + return ResponseValue.error("杩滅▼璋冪敤鏈�鍖归厤璇彞鍚戦噺澶辫触锛屾棤娉曠户缁悳绱㈢浉浼煎害"); + } + + List<List<Float>> requestVectors = new ArrayList(4); + + if(!StringUtils.isEmptyList(searchResult.getBest_list()) && searchResult.getBest_embedding() != null){ + ScoreText bestScoreText = searchResult.getBest_list().get(0); + logger.debug("鍦ㄥ璇濋泦鍚堜腑锛屽瓨鍦ㄦ渶鍖归厤鐨勫彞瀛�: {}", bestScoreText); + if(bestScoreText.getScore() >= BEST_MATCH_SCORE){ + logger.debug("鏈�鍖归厤鐨勫垎鍊�: {} 澶т簬璁剧疆闃堝�硷紝鍙互鐩存帴浣滀负鏌ヨ鍩哄噯", bestScoreText.getScore()); + requestVectors.add(searchResult.getBest_embedding()); + } else { + requestVectors.add(searchResult.getBest_embedding()); + requestVectors.add(searchResult.getAll_embedding()); + } + } else { + logger.debug("鍙娇鐢ㄥ叏閲忔煡璇㈠悜閲忥細{}", text); + requestVectors.add(searchResult.getAll_embedding()); + } + + OutData outData = this.milvusEngine.searchChatSimilar(requestVectors); + if(outData == null){ + return ResponseValue.error("鏈绱㈠埌浠讳綍鍖归厤鐩镐技鎻愰棶"); + } + + List<OutData.Data> dataList = outData.getResultList(); + for(OutData.Data d : dataList){ + logger.info("data = {}", d); + } + + + return ResponseValue.success(dataList); + } + + private SearchResult acquireSearchResult(ParamList paramList){ + try { + ResponseEntity<ResponseValue> responseEntity = this.restTemplate.postForEntity(URL_SEARCH_SIMILAR, paramList, ResponseValue.class); +// logger.debug(responseEntity.toString()); + if(responseEntity.getStatusCode() == HttpStatus.OK){ + ResponseValue<Map<String, Object>> responseValue = responseEntity.getBody(); + if(responseValue.getCode() != 1){ + logger.error("璋冪敤杩斿洖acquireSearchResult杩斿洖鐘舵�侀敊璇細{}", responseValue.getMsg()); + return null; + } + Map<String, Object> map = responseValue.getData(); + logger.debug("map = {}", map); +// String bestListJson = JsonUtils.objectToJsonString(map.get("best_list")); +// List<ScoreText> bestList = JsonUtils.jsonStringToList(bestListJson, ScoreText.class); +// logger.debug("bestList = {}", bestList); +// SearchResult searchResult = new SearchResult(); +// searchResult.setBest_embedding(this.transfer2FloatList((List<Float>)map.get("best_embedding"))); +// searchResult.setAll_embedding(this.transfer2FloatList((List<Float>)map.get("all_embedding"))); + String json = JsonUtils.objectToJsonString(map); + SearchResult searchResult = JsonUtils.jsonStringToObject(json, SearchResult.class); + searchResult.setBest_embedding(this.transfer2FloatList(searchResult.getBest_embedding())); + searchResult.setAll_embedding(this.transfer2FloatList(searchResult.getAll_embedding())); + return searchResult; + } else { + logger.error("璋冪敤 {} 缁撴灉杩斿洖澶辫触锛歿}", URL_SEARCH_SIMILAR, responseEntity.getStatusCodeValue()); + return null; + } + } catch (Exception ex){ + logger.error("鑾峰彇鎼滅储璇彞鍚戦噺缁撴灉閿欒锛歿}" + ex.getMessage(), ex); + return null; + } } private boolean acquireEmbedding(List<EventVo> batchData){ @@ -114,7 +203,7 @@ } private List<Float> transfer2FloatList(List<?> list){ - List<Float> vector = new ArrayList<>(768); + List<Float> vector = new ArrayList<>(VECTOR_DIMENSION); for(int i=0; i<list.size(); i++){ vector.add(Float.parseFloat(list.get(i).toString())); } -- Gitblit v1.9.1