Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions core/src/main/java/com/redis/vl/query/HybridQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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));

Expand Down Expand Up @@ -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() {
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion core/src/test/java/com/redis/vl/query/HybridQueryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version = 0.13.0
version = 0.13.1