From c184cfdfd1b19a3ac9e9c510406a65819381e7dd Mon Sep 17 00:00:00 2001 From: yangkaijun Date: Tue, 27 May 2025 17:44:50 +0800 Subject: [PATCH] fix(ai-rag): Fix query expansion result handling logic, same as #3345 - Filter out empty strings from query expansion results - Optimize the logic for checking the number of query variants --- .../preretrieval/query/expansion/MultiQueryExpander.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java index 314a455ba25..101750a5b27 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java @@ -111,9 +111,11 @@ public List expand(Query query) { return List.of(query); } - var queryVariants = Arrays.asList(response.split("\n")); + var queryVariants = Arrays.stream(response.split("\n")) + .filter(StringUtils::hasText) + .toList(); - if (CollectionUtils.isEmpty(queryVariants) || this.numberOfQueries != queryVariants.size()) { + if (CollectionUtils.isEmpty(queryVariants) || this.numberOfQueries > queryVariants.size()) { logger.warn( "Query expansion result does not contain the requested {} variants. Returning the input query unchanged.", this.numberOfQueries);