From 3609c9187ff0858dfe357e80d5fd613bb7523684 Mon Sep 17 00:00:00 2001 From: Alexandros Pappas Date: Mon, 17 Feb 2025 11:45:15 +0100 Subject: [PATCH 1/2] fix: remove default temperature on all QueryTransformer implementations Signed-off-by: Alexandros Pappas --- .../query/transformation/CompressionQueryTransformer.java | 2 +- .../query/transformation/RewriteQueryTransformer.java | 2 +- .../query/transformation/TranslationQueryTransformer.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java b/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java index 11cb23b2271..7795dcf902a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java @@ -84,7 +84,7 @@ public Query transform(Query query) { .user(user -> user.text(this.promptTemplate.getTemplate()) .param("history", formatConversationHistory(query.history())) .param("query", query.text())) - .options(ChatOptions.builder().temperature(0.0).build()) + .options(ChatOptions.builder().build()) .call() .content(); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java b/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java index 8dd495029ec..861df1a8e12 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java @@ -82,7 +82,7 @@ public Query transform(Query query) { .user(user -> user.text(this.promptTemplate.getTemplate()) .param("target", this.targetSearchSystem) .param("query", query.text())) - .options(ChatOptions.builder().temperature(0.0).build()) + .options(ChatOptions.builder().build()) .call() .content(); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java b/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java index 7ddf2c7d673..6c77cffdd3f 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java @@ -91,7 +91,7 @@ public Query transform(Query query) { .user(user -> user.text(this.promptTemplate.getTemplate()) .param("targetLanguage", this.targetLanguage) .param("query", query.text())) - .options(ChatOptions.builder().temperature(0.0).build()) + .options(ChatOptions.builder().build()) .call() .content(); From dd40808d284631fa13ba746289dc0571a40d20b9 Mon Sep 17 00:00:00 2001 From: Alexandros Pappas Date: Thu, 27 Feb 2025 22:50:15 +0100 Subject: [PATCH 2/2] update documentation Signed-off-by: Alexandros Pappas --- .../modules/ROOT/pages/api/retrieval-augmented-generation.adoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/retrieval-augmented-generation.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/retrieval-augmented-generation.adoc index 91f667bb264..d4054568a56 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/retrieval-augmented-generation.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/retrieval-augmented-generation.adoc @@ -156,6 +156,8 @@ Pre-Retrieval modules are responsible for processing the user query to achieve t A component for transforming the input query to make it more effective for retrieval tasks, addressing challenges such as poorly formed queries, ambiguous terms, complex vocabulary, or unsupported languages. +IMPORTANT: When using a `QueryTransformer`, it's recommended to configure the `ChatClient.Builder` with a low temperature (e.g., 0.0) to ensure more deterministic and accurate results, improving retrieval quality. The default temperature for most chat models is typically too high for optimal query transformation, leading to reduced retrieval effectiveness. + ===== CompressionQueryTransformer A `CompressionQueryTransformer` uses a large language model to compress a conversation history and a follow-up query