@@ -140,6 +140,39 @@ def _baseline_describe(params):
140140}
141141
142142
143+ # ============================================================================
144+ # Rescore implementation
145+ # ============================================================================
146+
147+
148+ def _rescore_create_table_sql (params ):
149+ quantizer = params .get ("quantizer" , "bit" )
150+ oversample = params .get ("oversample" , 8 )
151+ return (
152+ f"CREATE VIRTUAL TABLE vec_items USING vec0("
153+ f" chunk_size=256,"
154+ f" id integer primary key,"
155+ f" embedding float[768] distance_metric=cosine"
156+ f" indexed by rescore(quantizer={ quantizer } , oversample={ oversample } ))"
157+ )
158+
159+
160+ def _rescore_describe (params ):
161+ q = params .get ("quantizer" , "bit" )
162+ os = params .get ("oversample" , 8 )
163+ return f"rescore { q } (os={ os } )"
164+
165+
166+ INDEX_REGISTRY ["rescore" ] = {
167+ "defaults" : {"quantizer" : "bit" , "oversample" : 8 },
168+ "create_table_sql" : _rescore_create_table_sql ,
169+ "insert_sql" : None ,
170+ "post_insert_hook" : None ,
171+ "run_query" : None , # default MATCH query works — rescore is automatic
172+ "describe" : _rescore_describe ,
173+ }
174+
175+
143176# ============================================================================
144177# Config parsing
145178# ============================================================================
0 commit comments