33
44import numpy as np
55from redis import Redis , RedisCluster
6- from redis .commands .search .query import Query
6+ from redis .commands .search .query import Query as RedisQuery
77
8+ from dataset_reader .base_reader import Query as DatasetQuery
89from engine .base_client .search import BaseSearcher
910from engine .clients .redis .config import (
1011 REDIS_AUTH ,
@@ -41,16 +42,16 @@ def init_client(cls, host, distance, connection_params: dict, search_params: dic
4142 cls ._ft = cls .conns [random .randint (0 , len (cls .conns )) - 1 ].ft ()
4243
4344 @classmethod
44- def search_one (cls , vector , meta_conditions , top ) -> List [Tuple [int , float ]]:
45- conditions = cls .parser .parse (meta_conditions )
45+ def search_one (cls , query : DatasetQuery , top : int ) -> List [Tuple [int , float ]]:
46+ conditions = cls .parser .parse (query . meta_conditions )
4647 if conditions is None :
4748 prefilter_condition = "*"
4849 params = {}
4950 else :
5051 prefilter_condition , params = conditions
5152
5253 q = (
53- Query (
54+ RedisQuery (
5455 f"{ prefilter_condition } =>[KNN $K @vector $vec_param { cls .knn_conditions } AS vector_score]"
5556 )
5657 .sort_by ("vector_score" , asc = True )
@@ -62,7 +63,7 @@ def search_one(cls, vector, meta_conditions, top) -> List[Tuple[int, float]]:
6263 .timeout (REDIS_QUERY_TIMEOUT )
6364 )
6465 params_dict = {
65- "vec_param" : np .array (vector ).astype (np .float32 ).tobytes (),
66+ "vec_param" : np .array (query . vector ).astype (np .float32 ).tobytes (),
6667 "K" : top ,
6768 "EF" : cls .search_params ["search_params" ]["ef" ],
6869 ** params ,
0 commit comments