diff --git a/virtual-patient-common/src/main/java/com/supervision/config/VectorSimilarityConfiguration.java b/virtual-patient-common/src/main/java/com/supervision/config/VectorSimilarityConfiguration.java index b69c9ad6..90186aa2 100644 --- a/virtual-patient-common/src/main/java/com/supervision/config/VectorSimilarityConfiguration.java +++ b/virtual-patient-common/src/main/java/com/supervision/config/VectorSimilarityConfiguration.java @@ -30,6 +30,8 @@ public class VectorSimilarityConfiguration { .withMetadataFields( // 问题的ID RedisVectorStore.MetadataField.tag("questionId"), + // 关联字典ID + RedisVectorStore.MetadataField.tag("dictId"), // 标准问ID RedisVectorStore.MetadataField.tag("standardQuestionId"), // 类型 1标准问 2相似问 3自定义 diff --git a/virtual-patient-common/src/main/java/com/supervision/domain/QaSimilarityQuestionAnswer.java b/virtual-patient-common/src/main/java/com/supervision/domain/QaSimilarityQuestionAnswer.java index 30f45d53..b1592634 100644 --- a/virtual-patient-common/src/main/java/com/supervision/domain/QaSimilarityQuestionAnswer.java +++ b/virtual-patient-common/src/main/java/com/supervision/domain/QaSimilarityQuestionAnswer.java @@ -15,6 +15,11 @@ public class QaSimilarityQuestionAnswer { */ private String matchQuestionCode; + /** + * 关联的字典ID + */ + private String dictId; + /** * cosine余弦得分,一般0.5以上匹配度就比较高了 */ diff --git a/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java b/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java index bc930e8a..5d711e92 100644 --- a/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java +++ b/virtual-patient-common/src/main/java/com/supervision/util/SimilarityUtil.java @@ -43,6 +43,7 @@ public class SimilarityUtil { return documents.stream().map(document -> { QaSimilarityQuestionAnswer qaSimilarityQuestionAnswer = new QaSimilarityQuestionAnswer(); qaSimilarityQuestionAnswer.setMatchQuestion(document.getContent()); + qaSimilarityQuestionAnswer.setDictId(String.valueOf(document.getMetadata().get("dictId"))); qaSimilarityQuestionAnswer.setMatchQuestionCode(String.valueOf(document.getMetadata().get("standardQuestionId"))); qaSimilarityQuestionAnswer.setMatchScore(Double.parseDouble(String.valueOf(document.getMetadata().get("vector_score")))); return qaSimilarityQuestionAnswer; diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java b/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java index 6b94464c..1137071e 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/TestController.java @@ -79,16 +79,20 @@ public class TestController { @GetMapping("testRedisVectorStore") public void testRedisVectorStore() { - List list = askTemplateQuestionLibraryService.list(); for (AskTemplateQuestionLibrary askTemplateQuestionLibrary : list) { String description = askTemplateQuestionLibrary.getDescription(); - redisVectorStore.add(List.of(new Document(description, Map.of("type", "1", "medicalId", "222")))); + redisVectorStore.add(List.of(new Document(description, Map.of("type", "1", + "standardQuestionId", askTemplateQuestionLibrary.getId(), + "questionId", askTemplateQuestionLibrary.getId(), + "dictId", askTemplateQuestionLibrary.getDictId())))); List question = askTemplateQuestionLibrary.getQuestion(); for (String s : question) { - redisVectorStore.add(List.of(new Document(s, Map.of("type", "1", "medicalId", "222")))); + redisVectorStore.add(List.of(new Document(s, Map.of("type", "2", + "standardQuestionId", askTemplateQuestionLibrary.getId(), + "questionId", askTemplateQuestionLibrary.getId(), + "dictId", askTemplateQuestionLibrary.getDictId())))); } -// log.info("处理完成:{}", description); } } @@ -106,6 +110,7 @@ public class TestController { }); return documents; } + @GetMapping("testExpireTime") public String testExpireTime() { return "OK";