@@ -885,20 +885,13 @@ async def search_memories(
885
885
# If server-side recency is requested, attempt RedisVL query first (DB-level path)
886
886
if server_side_recency :
887
887
try :
888
- from redisvl .query import VectorQuery
888
+ from redisvl .query import RangeQuery , VectorQuery
889
889
890
890
index = getattr (self .vectorstore , "_index" , None )
891
891
if index is not None :
892
892
# Embed the query text to vector
893
893
embedding_vector = self .embeddings .embed_query (query )
894
894
895
- # Score threshold maps from distance threshold if provided
896
- score_threshold = (
897
- 1.0 - float (distance_threshold )
898
- if distance_threshold is not None
899
- else None
900
- )
901
-
902
895
# Collect fields we need back from Redis
903
896
return_fields = [
904
897
"id_" ,
@@ -921,14 +914,23 @@ async def search_memories(
921
914
"text" ,
922
915
]
923
916
924
- vq = VectorQuery (
925
- vector = embedding_vector ,
926
- vector_field_name = "vector" ,
927
- return_fields = return_fields ,
928
- filter_expression = redis_filter ,
929
- k = limit + offset ,
930
- score_threshold = score_threshold ,
931
- )
917
+ if distance_threshold is not None :
918
+ vq = RangeQuery (
919
+ vector = embedding_vector ,
920
+ vector_field_name = "vector" ,
921
+ return_fields = return_fields ,
922
+ filter_expression = redis_filter ,
923
+ distance_threshold = float (distance_threshold ),
924
+ k = limit + offset ,
925
+ )
926
+ else :
927
+ vq = VectorQuery (
928
+ vector = embedding_vector ,
929
+ vector_field_name = "vector" ,
930
+ return_fields = return_fields ,
931
+ filter_expression = redis_filter ,
932
+ k = limit + offset ,
933
+ )
932
934
933
935
# Execute via AsyncSearchIndex if available
934
936
if hasattr (index , "asearch" ):
0 commit comments