From db8f340e2d31bc9926c7033fb1cec392eb2ff5e8 Mon Sep 17 00:00:00 2001 From: iridescentpeo Date: Sun, 23 Mar 2025 14:14:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E4=B8=80=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E8=A2=AB=E5=A4=9A=E4=B8=AA=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E6=97=B6:=20(#2183)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supersonic/headless/chat/knowledge/MapResult.java | 5 +++++ .../headless/chat/knowledge/MetaEmbeddingService.java | 2 ++ .../supersonic/headless/chat/mapper/BaseMatchStrategy.java | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java index a2583eb88..969a74eca 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MapResult.java @@ -22,4 +22,9 @@ public abstract class MapResult implements Serializable { return this.getMapKey().equals(otherResult.getMapKey()) && this.similarity < otherResult.similarity; } + + public Boolean lessOrEqualSimilar(MapResult otherResult) { + return this.getMapKey().equals(otherResult.getMapKey()) + && this.similarity <= otherResult.similarity; + } } diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java index e4f48597b..f8ee287c3 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/MetaEmbeddingService.java @@ -75,6 +75,8 @@ public class MetaEmbeddingService { return dataSetIds.stream().map(dataSetId -> { Retrieval newRetrieval = new Retrieval(); BeanUtils.copyProperties(retrieval, newRetrieval); + HashMap newMetadata = new HashMap<>(retrieval.getMetadata()); + newRetrieval.setMetadata(newMetadata); newRetrieval.getMetadata().putIfAbsent("dataSetId", dataSetId + Constants.UNDERLINE); return newRetrieval; diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java index 57856ccd4..04b4d31d4 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/mapper/BaseMatchStrategy.java @@ -56,7 +56,8 @@ public abstract class BaseMatchStrategy implements MatchStr for (T oneRoundResult : oneRoundResults) { if (existResults.contains(oneRoundResult)) { boolean isDeleted = existResults.removeIf(existResult -> { - boolean delete = existResult.lessSimilar(oneRoundResult); +// boolean delete = existResult.lessSimilar(oneRoundResult); + boolean delete = existResult.lessOrEqualSimilar(oneRoundResult); if (delete) { log.debug("deleted existResult:{}", existResult); }