Skip to content

Commit 9c2b353

Browse files
committed
remove epsilon parameter from AggregateHybridQuery
1 parent 11c2141 commit 9c2b353

File tree

4 files changed

+22
-56
lines changed

4 files changed

+22
-56
lines changed

docs/api/query.rst

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,9 @@ VectorQuery
2828
**HNSW Parameters:**
2929

3030
- ``ef_runtime``: Controls search accuracy (higher = better recall, slower search)
31-
- ``epsilon``: Range search approximation factor (for range queries)
3231

3332
**SVS-VAMANA Parameters:**
3433

35-
- ``epsilon``: Range search approximation factor
3634
- ``search_window_size``: Size of search window for KNN searches
3735
- ``use_search_history``: Whether to use search buffer (OFF/ON/AUTO)
3836
- ``search_buffer_capacity``: Tuning parameter for 2-level compression
@@ -47,8 +45,7 @@ VectorQuery
4745
vector=[0.1, 0.2, 0.3],
4846
vector_field_name="embedding",
4947
num_results=10,
50-
ef_runtime=150, # Higher for better recall
51-
epsilon=0.05 # For range search approximation
48+
ef_runtime=150 # Higher for better recall
5249
)
5350
5451
Example with SVS-VAMANA runtime parameters:
@@ -61,8 +58,7 @@ VectorQuery
6158
num_results=10,
6259
search_window_size=20,
6360
use_search_history='ON',
64-
search_buffer_capacity=30,
65-
epsilon=0.01
61+
search_buffer_capacity=30
6662
)
6763
6864
@@ -130,21 +126,21 @@ HybridQuery
130126
.. note::
131127
**Runtime Parameters for Hybrid Queries**
132128

133-
AggregateHybridQuery (and the deprecated HybridQuery) support runtime parameters for the vector search component:
129+
AggregateHybridQuery (and the deprecated HybridQuery) support runtime parameters for the vector search component.
130+
131+
**Note:** The ``epsilon`` parameter is only supported for range queries (VectorRangeQuery), not for KNN queries used in hybrid search.
134132

135133
**HNSW Parameters:**
136134

137135
- ``ef_runtime``: Controls search accuracy for the vector component
138-
- ``epsilon``: Range search approximation factor
139136

140137
**SVS-VAMANA Parameters:**
141138

142-
- ``epsilon``: Range search approximation factor
143139
- ``search_window_size``: Size of search window for KNN searches
144140
- ``use_search_history``: Whether to use search buffer (OFF/ON/AUTO)
145141
- ``search_buffer_capacity``: Tuning parameter for 2-level compression
146142

147-
Example:
143+
Example with HNSW:
148144

149145
.. code-block:: python
150146
@@ -156,10 +152,22 @@ HybridQuery
156152
vector=[0.1, 0.2, 0.3],
157153
vector_field_name="embedding",
158154
alpha=0.7,
159-
ef_runtime=150, # HNSW parameter
160-
epsilon=0.05, # HNSW & SVS-VAMANA
161-
search_window_size=20, # SVS-VAMANA only
162-
use_search_history='ON' # SVS-VAMANA only
155+
ef_runtime=150 # HNSW parameter
156+
)
157+
158+
Example with SVS-VAMANA:
159+
160+
.. code-block:: python
161+
162+
query = AggregateHybridQuery(
163+
text="search query",
164+
text_field_name="description",
165+
vector=[0.1, 0.2, 0.3],
166+
vector_field_name="embedding",
167+
alpha=0.7,
168+
search_window_size=20, # SVS-VAMANA
169+
use_search_history='ON', # SVS-VAMANA
170+
search_buffer_capacity=30 # SVS-VAMANA
163171
)
164172
165173

docs/user_guide/11_advanced_queries.ipynb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,6 @@
876876
" vector_field_name=\"text_embedding\",\n",
877877
" alpha=0.7,\n",
878878
" ef_runtime=150, # Higher for better recall on HNSW indexes\n",
879-
" epsilon=0.05, # For range search approximation\n",
880879
" return_fields=[\"product_id\", \"brief_description\", \"category\"],\n",
881880
" num_results=5\n",
882881
")\n",
@@ -907,7 +906,6 @@
907906
" vector_field_name=\"text_embedding\",\n",
908907
" alpha=0.8,\n",
909908
" search_window_size=40, # Larger window for better recall\n",
910-
" epsilon=0.01, # Approximation factor\n",
911909
" use_search_history='ON', # Use search history\n",
912910
" search_buffer_capacity=50, # Buffer capacity\n",
913911
" return_fields=[\"product_id\", \"brief_description\", \"price\"],\n",

redisvl/query/aggregate.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ class AggregateHybridQuery(AggregationQuery):
9292
# HNSW runtime parameters
9393
EF_RUNTIME: str = "EF_RUNTIME"
9494
EF_RUNTIME_PARAM: str = "EF"
95-
EPSILON_PARAM: str = "EPSILON"
9695

9796
# SVS-VAMANA runtime parameters
9897
SEARCH_WINDOW_SIZE: str = "SEARCH_WINDOW_SIZE"
@@ -118,7 +117,6 @@ def __init__(
118117
dialect: int = 2,
119118
text_weights: Optional[Dict[str, float]] = None,
120119
ef_runtime: Optional[int] = None,
121-
epsilon: Optional[float] = None,
122120
search_window_size: Optional[int] = None,
123121
use_search_history: Optional[str] = None,
124122
search_buffer_capacity: Optional[int] = None,
@@ -157,10 +155,6 @@ def __init__(
157155
ef_runtime (Optional[int]): The size of the dynamic candidate list for HNSW indexes.
158156
Increasing this value generally yields more accurate but slower search results.
159157
Defaults to None, which uses the index-defined value (typically 10).
160-
epsilon (Optional[float]): The relative factor for vector range queries (HNSW and SVS-VAMANA),
161-
setting boundaries for candidates within radius * (1 + epsilon).
162-
Higher values increase recall at the expense of performance.
163-
Defaults to None, which uses the index-defined epsilon (typically 0.01).
164158
search_window_size (Optional[int]): The size of the search window for SVS-VAMANA KNN searches.
165159
Increasing this value generally yields more accurate but slower search results.
166160
Defaults to None, which uses the index-defined value (typically 10).
@@ -192,7 +186,6 @@ def __init__(
192186
self._dtype = dtype
193187
self._num_results = num_results
194188
self._ef_runtime = ef_runtime
195-
self._epsilon = epsilon
196189
self._search_window_size = search_window_size
197190
self._use_search_history = use_search_history
198191
self._search_buffer_capacity = search_buffer_capacity
@@ -231,10 +224,6 @@ def params(self) -> Dict[str, Any]:
231224
if self._ef_runtime is not None:
232225
params[self.EF_RUNTIME_PARAM] = self._ef_runtime
233226

234-
# Add EPSILON parameter if specified (HNSW and SVS-VAMANA)
235-
if self._epsilon is not None:
236-
params[self.EPSILON_PARAM] = self._epsilon
237-
238227
# Add SEARCH_WINDOW_SIZE parameter if specified (SVS-VAMANA)
239228
if self._search_window_size is not None:
240229
params[self.SEARCH_WINDOW_SIZE_PARAM] = self._search_window_size
@@ -374,10 +363,6 @@ def _build_query_string(self) -> str:
374363
if self._ef_runtime is not None:
375364
knn_query += f" {self.EF_RUNTIME} ${self.EF_RUNTIME_PARAM}"
376365

377-
# Add EPSILON parameter if specified (HNSW and SVS-VAMANA)
378-
if self._epsilon is not None:
379-
knn_query += f" EPSILON ${self.EPSILON_PARAM}"
380-
381366
# Add SEARCH_WINDOW_SIZE parameter if specified (SVS-VAMANA)
382367
if self._search_window_size is not None:
383368
knn_query += f" {self.SEARCH_WINDOW_SIZE} ${self.SEARCH_WINDOW_SIZE_PARAM}"

tests/unit/test_aggregation_types.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -267,27 +267,6 @@ def test_aggregate_hybrid_query_ef_runtime():
267267
assert query.params.get("EF") == 100
268268

269269

270-
def test_aggregate_hybrid_query_epsilon():
271-
"""Test that AggregateHybridQuery correctly handles epsilon parameter."""
272-
query = AggregateHybridQuery(
273-
text=sample_text,
274-
text_field_name="description",
275-
vector=sample_vector,
276-
vector_field_name="embedding",
277-
epsilon=0.05,
278-
)
279-
280-
# Check properties
281-
assert query._epsilon == 0.05
282-
283-
# Check query string
284-
query_string = str(query)
285-
assert "EPSILON $EPSILON" in query_string
286-
287-
# Check params dictionary
288-
assert query.params.get("EPSILON") == 0.05
289-
290-
291270
def test_aggregate_hybrid_query_search_window_size():
292271
"""Test that AggregateHybridQuery correctly handles search_window_size parameter (SVS-VAMANA)."""
293272
query = AggregateHybridQuery(
@@ -360,31 +339,27 @@ def test_aggregate_hybrid_query_all_runtime_params():
360339
vector=sample_vector,
361340
vector_field_name="embedding",
362341
ef_runtime=100,
363-
epsilon=0.05,
364342
search_window_size=40,
365343
use_search_history="ON",
366344
search_buffer_capacity=50,
367345
)
368346

369347
# Check all properties
370348
assert query._ef_runtime == 100
371-
assert query._epsilon == 0.05
372349
assert query._search_window_size == 40
373350
assert query._use_search_history == "ON"
374351
assert query._search_buffer_capacity == 50
375352

376353
# Check query string contains all parameters
377354
query_string = str(query)
378355
assert "EF_RUNTIME $EF" in query_string
379-
assert "EPSILON $EPSILON" in query_string
380356
assert "SEARCH_WINDOW_SIZE $SEARCH_WINDOW_SIZE" in query_string
381357
assert "USE_SEARCH_HISTORY $USE_SEARCH_HISTORY" in query_string
382358
assert "SEARCH_BUFFER_CAPACITY $SEARCH_BUFFER_CAPACITY" in query_string
383359

384360
# Check params dictionary contains all parameters
385361
params = query.params
386362
assert params["EF"] == 100
387-
assert params["EPSILON"] == 0.05
388363
assert params["SEARCH_WINDOW_SIZE"] == 40
389364
assert params["USE_SEARCH_HISTORY"] == "ON"
390365
assert params["SEARCH_BUFFER_CAPACITY"] == 50

0 commit comments

Comments
 (0)