66from redis .commands .search .field import TagField , VectorField , NumericField
77from redis .client import Redis
88
9- from gptcache .manager .vector_data .base import VectorBase , VectorData
10- from gptcache .utils import import_redis
11- from gptcache .utils .log import gptcache_log
12- from gptcache .utils .collection_util import get_collection_name
13- from gptcache .utils .collection_util import get_collection_prefix
9+ from modelcache .manager .vector_data .base import VectorBase , VectorData
10+ from modelcache .utils import import_redis
11+ from modelcache .utils .log import modelcache_log
12+ from modelcache .utils .index_util import get_index_name
13+ from modelcache .utils .index_util import get_index_prefix
1414import_redis ()
1515
1616
@@ -21,9 +21,7 @@ def __init__(
2121 port : str = "6379" ,
2222 username : str = "" ,
2323 password : str = "" ,
24- table_suffix : str = "" ,
2524 dimension : int = 0 ,
26- collection_prefix : str = "gptcache" ,
2725 top_k : int = 1 ,
2826 namespace : str = "" ,
2927 ):
@@ -36,33 +34,28 @@ def __init__(
3634 )
3735 self .top_k = top_k
3836 self .dimension = dimension
39- self .collection_prefix = collection_prefix
40- self .table_suffix = table_suffix
4137 self .namespace = namespace
42- self .doc_prefix = f"{ self .namespace } doc:" # Prefix with the specified namespace
43- # self._create_collection(collection_name)
38+ self .doc_prefix = f"{ self .namespace } doc:"
4439
4540 def _check_index_exists (self , index_name : str ) -> bool :
4641 """Check if Redis index exists."""
4742 try :
4843 self ._client .ft (index_name ).info ()
49- except : # pylint: disable=W0702
50- gptcache_log .info ("Index does not exist" )
44+ except :
45+ modelcache_log .info ("Index does not exist" )
5146 return False
52- gptcache_log .info ("Index already exists" )
47+ modelcache_log .info ("Index already exists" )
5348 return True
5449
55- def create_collection (self , collection_name , index_prefix ):
50+ def create_index (self , index_name , index_prefix ):
5651 dimension = self .dimension
5752 print ('dimension: {}' .format (dimension ))
58- if self ._check_index_exists (collection_name ):
59- gptcache_log .info (
60- "The %s already exists, and it will be used directly" , collection_name
53+ if self ._check_index_exists (index_name ):
54+ modelcache_log .info (
55+ "The %s already exists, and it will be used directly" , index_name
6156 )
6257 return 'already_exists'
6358 else :
64- # id_field_name = collection_name + '_' + "id"
65- # embedding_field_name = collection_name + '_' + "vec"
6659 id_field_name = "data_id"
6760 embedding_field_name = "data_vector"
6861
@@ -76,11 +69,10 @@ def create_collection(self, collection_name, index_prefix):
7669 }
7770 )
7871 fields = [id , embedding ]
79- # definition = IndexDefinition(index_type=IndexType.HASH)
8072 definition = IndexDefinition (prefix = [index_prefix ], index_type = IndexType .HASH )
8173
8274 # create Index
83- self ._client .ft (collection_name ).create_index (
75+ self ._client .ft (index_name ).create_index (
8476 fields = fields , definition = definition
8577 )
8678 return 'create_success'
@@ -90,23 +82,14 @@ def mul_add(self, datas: List[VectorData], model=None):
9082 for data in datas :
9183 id : int = data .id
9284 embedding = data .data .astype (np .float32 ).tobytes ()
93- # id_field_name = collection_name + '_' + "id"
94- # embedding_field_name = collection_name + '_' + "vec"
9585 id_field_name = "data_id"
9686 embedding_field_name = "data_vector"
9787 obj = {id_field_name : id , embedding_field_name : embedding }
98- index_prefix = get_collection_prefix (model , self . table_suffix )
88+ index_prefix = get_index_prefix (model )
9989 self ._client .hset (f"{ index_prefix } { id } " , mapping = obj )
10090
101- # obj = {
102- # "vector": data.data.astype(np.float32).tobytes(),
103- # }
104- # pipe.hset(f"{self.doc_prefix}{key}", mapping=obj)
105- # pipe.execute()
106-
10791 def search (self , data : np .ndarray , top_k : int = - 1 , model = None ):
108- collection_name = get_collection_name (model , self .table_suffix )
109- print ('collection_name: {}' .format (collection_name ))
92+ index_name = get_index_name (model )
11093 id_field_name = "data_id"
11194 embedding_field_name = "data_vector"
11295
@@ -119,63 +102,40 @@ def search(self, data: np.ndarray, top_k: int = -1, model=None):
119102 )
120103
121104 query_params = {"vector" : data .astype (np .float32 ).tobytes ()}
122- # print('query_params: {}'.format(query_params))
123105 results = (
124- self ._client .ft (collection_name )
106+ self ._client .ft (index_name )
125107 .search (query , query_params = query_params )
126108 .docs
127109 )
128- print ('results: {}' .format (results ))
129- for i , doc in enumerate (results ):
130- print ('doc: {}' .format (doc ))
131- print ("id_field_name" , getattr (doc , id_field_name ), ", distance: " , doc .distance )
132110 return [(float (result .distance ), int (getattr (result , id_field_name ))) for result in results ]
133111
134112 def rebuild (self , ids = None ) -> bool :
135113 pass
136114
137115 def rebuild_col (self , model ):
138- resp_info = 'failed'
139- if len (self .table_suffix ) == 0 :
140- raise ValueError ('table_suffix is none error,please check!' )
141-
142- collection_name_model = get_collection_name (model , self .table_suffix )
143- print ('collection_name_model: {}' .format (collection_name_model ))
144- if self ._check_index_exists (collection_name_model ):
116+ index_name_model = get_index_name (model )
117+ if self ._check_index_exists (index_name_model ):
145118 try :
146- self ._client .ft (collection_name_model ).dropindex (delete_documents = True )
119+ self ._client .ft (index_name_model ).dropindex (delete_documents = True )
147120 except Exception as e :
148121 raise ValueError (str (e ))
149122 try :
150- index_prefix = get_collection_prefix (model , self . table_suffix )
151- self .create_collection ( collection_name_model , index_prefix )
123+ index_prefix = get_index_prefix (model )
124+ self .create_index ( index_name_model , index_prefix )
152125 except Exception as e :
153126 raise ValueError (str (e ))
154127 return 'rebuild success'
155128
156- # print('remove collection_name_model: {}'.format(collection_name_model))
157- # try:
158- # self._client.ft(collection_name_model).dropindex(delete_documents=True)
159- # resp_info = 'rebuild success'
160- # except Exception as e:
161- # print('exception: {}'.format(e))
162- # resp_info = 'create only'
163- # try:
164- # self.create_collection(collection_name_model)
165- # except Exception as e:
166- # raise ValueError(str(e))
167- # return resp_info
168-
169129 def delete (self , ids ) -> None :
170130 pipe = self ._client .pipeline ()
171131 for data_id in ids :
172132 pipe .delete (f"{ self .doc_prefix } { data_id } " )
173133 pipe .execute ()
174134
175135 def create (self , model = None ):
176- collection_name = get_collection_name (model , self . table_suffix )
177- index_prefix = get_collection_prefix (model , self . table_suffix )
178- return self .create_collection ( collection_name , index_prefix )
136+ index_name = get_index_name (model )
137+ index_prefix = get_index_prefix (model )
138+ return self .create_index ( index_name , index_prefix )
179139
180- def get_collection_by_name (self , collection_name , table_suffix ):
140+ def get_index_by_name (self , index_name ):
181141 pass
0 commit comments