diff --git a/core/src/main/java/com/redis/vl/query/HybridQuery.java b/core/src/main/java/com/redis/vl/query/HybridQuery.java index 7d61b76..94f4a58 100644 --- a/core/src/main/java/com/redis/vl/query/HybridQuery.java +++ b/core/src/main/java/com/redis/vl/query/HybridQuery.java @@ -80,6 +80,7 @@ public enum CombinationMethod { } private static final String DEFAULT_VECTOR_PARAM = "vector"; + private static final int DEFAULT_KNN_EF_RUNTIME = 0; private final String text; private final String textFieldName; @@ -293,10 +294,12 @@ public FTHybridParams buildFTHybridParams() { // Build COMBINE clause Combiner combiner = buildCombiner(); - // Build POST-PROCESSING clause + // Build POST-PROCESSING clause — LOAD fields so document content is returned in the response FTHybridPostProcessingParams.Builder postBuilder = FTHybridPostProcessingParams.builder(); if (!returnFields.isEmpty()) { postBuilder.load(returnFields.toArray(new String[0])); + } else { + postBuilder.loadAll(); } postBuilder.limit(Limit.of(0, numResults)); @@ -376,8 +379,13 @@ private FTHybridVectorParams.VectorMethod buildVectorMethod() { FTHybridVectorParams.Range.of(rangeRadius).epsilon(rangeEpsilon); return range; } - // Default: KNN - return FTHybridVectorParams.Knn.of(numResults).efRuntime(knnEfRuntime); + // Default: KNN — only set EF_RUNTIME if explicitly configured (non-default value) + // EF_RUNTIME is only valid for HNSW indexes and causes errors with FLAT indexes + FTHybridVectorParams.Knn knn = FTHybridVectorParams.Knn.of(numResults); + if (knnEfRuntime != DEFAULT_KNN_EF_RUNTIME) { + knn = knn.efRuntime(knnEfRuntime); + } + return knn; } private Combiner buildCombiner() { @@ -419,7 +427,7 @@ public static class HybridQueryBuilder { private String textScorer = "BM25STD"; private String yieldTextScoreAs; private VectorSearchMethod vectorSearchMethod = VectorSearchMethod.KNN; - private int knnEfRuntime = 10; + private int knnEfRuntime = DEFAULT_KNN_EF_RUNTIME; private Float rangeRadius; private float rangeEpsilon = 0.01f; private String yieldVsimScoreAs; diff --git a/core/src/test/java/com/redis/vl/query/HybridQueryTest.java b/core/src/test/java/com/redis/vl/query/HybridQueryTest.java index 5813383..747ab07 100644 --- a/core/src/test/java/com/redis/vl/query/HybridQueryTest.java +++ b/core/src/test/java/com/redis/vl/query/HybridQueryTest.java @@ -39,7 +39,7 @@ void testBuilderDefaults() { assertThat(query.getVectorSearchMethod()).isEqualTo(VectorSearchMethod.KNN); assertThat(query.getCombinationMethod()).isEqualTo(CombinationMethod.RRF); assertThat(query.getDtype()).isEqualTo("float32"); - assertThat(query.getKnnEfRuntime()).isEqualTo(10); + assertThat(query.getKnnEfRuntime()).isEqualTo(0); assertThat(query.getRangeEpsilon()).isEqualTo(0.01f); assertThat(query.getVectorParamName()).isEqualTo("vector"); assertThat(query.getYieldTextScoreAs()).isNull(); diff --git a/gradle.properties b/gradle.properties index 55bd7ad..38244a4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version = 0.13.0 +version = 0.13.1