From 47930618931b6110491e10102c2b6560cc8800da Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Thu, 3 Jul 2025 14:02:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9E=E4=BD=93=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=8A=9F=E8=83=BD(=E5=AE=8C=E7=BB=93)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/pdfqaserver/cache/PromptCache.java | 2 +- .../service/impl/DataCompareRetriever.java | 2 ++ .../service/impl/KnowledgeGraphServiceImpl.java | 3 +++ .../service/impl/TripleConversionPipelineImpl.java | 13 +++++++++++++ .../service/impl/TripleToCypherExecutorImpl.java | 1 + .../pdfqaserver/PdfQaServerApplicationTests.java | 5 +++++ 6 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/supervision/pdfqaserver/cache/PromptCache.java b/src/main/java/com/supervision/pdfqaserver/cache/PromptCache.java index 70500b6..5f88b52 100644 --- a/src/main/java/com/supervision/pdfqaserver/cache/PromptCache.java +++ b/src/main/java/com/supervision/pdfqaserver/cache/PromptCache.java @@ -842,7 +842,7 @@ public class PromptCache { {query} ``` neo4j_schema以JSON格式定义如下: - ```schema + ```schema {schema} ``` # 环境变量 diff --git a/src/main/java/com/supervision/pdfqaserver/service/impl/DataCompareRetriever.java b/src/main/java/com/supervision/pdfqaserver/service/impl/DataCompareRetriever.java index 69e0816..82de60d 100644 --- a/src/main/java/com/supervision/pdfqaserver/service/impl/DataCompareRetriever.java +++ b/src/main/java/com/supervision/pdfqaserver/service/impl/DataCompareRetriever.java @@ -45,6 +45,8 @@ public class DataCompareRetriever implements Retriever { log.warn("查询内容为空,无法执行数据对比检索"); return new ArrayList<>(); } + query = this.rewriteQuery(query); + log.info("retrieval: 重写查询内容为:{}", query); // 对问题进行分词 CypherSchemaDTO schemaDTO = tripleToCypherExecutor.queryRelationSchema(query); log.info("retrieval: 查询到的关系图谱schema 节点个数:{} ,关系结束{} ", schemaDTO.getNodes().size(), schemaDTO.getRelations().size()); diff --git a/src/main/java/com/supervision/pdfqaserver/service/impl/KnowledgeGraphServiceImpl.java b/src/main/java/com/supervision/pdfqaserver/service/impl/KnowledgeGraphServiceImpl.java index 84adbc0..60d5ab1 100644 --- a/src/main/java/com/supervision/pdfqaserver/service/impl/KnowledgeGraphServiceImpl.java +++ b/src/main/java/com/supervision/pdfqaserver/service/impl/KnowledgeGraphServiceImpl.java @@ -328,6 +328,9 @@ public class KnowledgeGraphServiceImpl implements KnowledgeGraphService { timer.start("generateGraph"); generateGraphSimple(eredtos); log.info("生成知识图谱完成,耗时:{}秒", timer.intervalSecond("generateGraph")); + log.info("刷新图谱schema向量..."); + tripleToCypherExecutor.refreshSchemaSegmentVector(); + log.info("刷新图谱schema向量完成"); } @Override diff --git a/src/main/java/com/supervision/pdfqaserver/service/impl/TripleConversionPipelineImpl.java b/src/main/java/com/supervision/pdfqaserver/service/impl/TripleConversionPipelineImpl.java index c33eb42..e22e8a4 100644 --- a/src/main/java/com/supervision/pdfqaserver/service/impl/TripleConversionPipelineImpl.java +++ b/src/main/java/com/supervision/pdfqaserver/service/impl/TripleConversionPipelineImpl.java @@ -597,6 +597,7 @@ public class TripleConversionPipelineImpl implements TripleConversionPipeline { .peek(ere->{ // 对实体名称进行同义词转换 List entities = ere.getEntities(); + List relations = ere.getRelations(); for (EntityExtractionDTO entity : entities) { String name = entity.getName(); String standardTerm = keywordSynonymService.getStandardTerm(name, synonymDTOS); @@ -604,6 +605,18 @@ public class TripleConversionPipelineImpl implements TripleConversionPipeline { entity.setName(standardTerm); } } + for (RelationExtractionDTO relation : relations) { + String sourceName = relation.getSource(); + String targetName = relation.getTarget(); + String sourceStandardTerm = keywordSynonymService.getStandardTerm(sourceName, synonymDTOS); + String targetStandardTerm = keywordSynonymService.getStandardTerm(targetName, synonymDTOS); + if (StrUtil.isNotEmpty(sourceStandardTerm)) { + relation.setSource(sourceStandardTerm); + } + if (StrUtil.isNotEmpty(targetStandardTerm)) { + relation.setTarget(targetStandardTerm); + } + } }) .collect(Collectors.toList()); Map entityMap = new HashMap<>(); diff --git a/src/main/java/com/supervision/pdfqaserver/service/impl/TripleToCypherExecutorImpl.java b/src/main/java/com/supervision/pdfqaserver/service/impl/TripleToCypherExecutorImpl.java index dd7b886..c00b1ce 100644 --- a/src/main/java/com/supervision/pdfqaserver/service/impl/TripleToCypherExecutorImpl.java +++ b/src/main/java/com/supervision/pdfqaserver/service/impl/TripleToCypherExecutorImpl.java @@ -162,6 +162,7 @@ public class TripleToCypherExecutorImpl implements TripleToCypherExecutor { )); attributes.put("truncationId", entity.getTruncationId()); attributes.put("name", entity.getName()); + attributes.remove("名称"); log.info("保存节点{},属性:{}", entity.getEntityEn(),JSONUtil.toJsonStr(entity.getAttributes())); List nodeIds = neo4jRepository.saveOrUpdateEntityNode(entity.getEntityEn(), "name", attributes); nodeCache.put(StrUtil.join("_", entity.getEntity(), entity.getName()), nodeIds); diff --git a/src/test/java/com/supervision/pdfqaserver/PdfQaServerApplicationTests.java b/src/test/java/com/supervision/pdfqaserver/PdfQaServerApplicationTests.java index ded5e4d..ac6c8cb 100644 --- a/src/test/java/com/supervision/pdfqaserver/PdfQaServerApplicationTests.java +++ b/src/test/java/com/supervision/pdfqaserver/PdfQaServerApplicationTests.java @@ -364,4 +364,9 @@ class PdfQaServerApplicationTests { String rewriteQuery = retriever.rewriteQuery(text); log.info("重写前:{} \n 重写后的结果: {}", text, rewriteQuery); } + + @Test + public void refreshSchemaSegmentVectorTest(){ + tripleToCypherExecutor.refreshSchemaSegmentVector(); + } }