From 439934b0f6a42ec99bcbf644f58152af2fe0ea5c Mon Sep 17 00:00:00 2001 From: dafriz Date: Thu, 26 Sep 2024 23:11:39 +1000 Subject: [PATCH] Set redis query limit to match requested topK used in KNN search --- .../org/springframework/ai/vectorstore/RedisVectorStore.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java b/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java index e7e584fc8..943b31e1a 100644 --- a/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java +++ b/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/RedisVectorStore.java @@ -364,7 +364,7 @@ public class RedisVectorStore extends AbstractObservationVectorStore implements @Override public List doSimilaritySearch(SearchRequest request) { - Assert.isTrue(request.getTopK() > 0, "The number of documents to returned must be greater than zero"); + Assert.isTrue(request.getTopK() > 0, "The number of documents to be returned must be greater than zero"); Assert.isTrue(request.getSimilarityThreshold() >= 0 && request.getSimilarityThreshold() <= 1, "The similarity score is bounded between 0 and 1; least to most similar respectively."); @@ -382,6 +382,7 @@ public class RedisVectorStore extends AbstractObservationVectorStore implements Query query = new Query(queryString).addParam(EMBEDDING_PARAM_NAME, RediSearchUtil.toByteArray(embedding)) .returnFields(returnFields.toArray(new String[0])) .setSortBy(DISTANCE_FIELD_NAME, true) + .limit(0, request.getTopK()) .dialect(2); SearchResult result = this.jedis.ftSearch(this.config.indexName, query);