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