@@ -32,13 +32,6 @@ def _ensure_initialized(self):
3232 if not self .ready :
3333 self ._engine .load_model ()
3434
35- if self ._settings .quantize_scan :
36- # TODO: quantize again if already quantized?
37- # TODO: DO NOT REPEAT FOR NOTHING, it takes time
38- self ._engine .quantize ()
39- else :
40- self ._engine .quantize_cleanup ()
41-
4235 self .ready = True
4336
4437 @staticmethod
@@ -64,7 +57,7 @@ def add(
6457 self ,
6558 path : str ,
6659 recursive : bool = False ,
67- absolute_paths : bool = True ,
60+ use_absolute_paths : bool = True ,
6861 metadata : dict = {},
6962 ) -> int :
7063 """Add the file content into the database"""
@@ -81,36 +74,36 @@ def add(
8174
8275 processed = 0
8376 self ._logger .info (f"Processing { len (files_to_process )} files..." )
84- for file_path in files_to_process :
85- content = FileReader .parse_file (file_path )
77+ try :
78+ for file_path in files_to_process :
79+ content = FileReader .parse_file (file_path )
8680
87- if not content :
88- self ._logger .warning (f"Skipping empty file: { file_path } " )
89- continue
81+ if not content :
82+ self ._logger .warning (f"Skipping empty file: { file_path } " )
83+ continue
9084
91- uri = (
92- str (file_path .absolute ())
93- if absolute_paths
94- else str (file_path .relative_to (parent ))
95- )
96- document = Document (content = content , uri = uri , metadata = metadata )
85+ uri = (
86+ str (file_path .absolute ())
87+ if use_absolute_paths
88+ else str (file_path .relative_to (parent ))
89+ )
90+ document = Document (content = content , uri = uri , metadata = metadata )
9791
98- exists = self ._repository .document_exists_by_hash (document .hash ())
99- if exists :
100- self ._logger .info (f"Unchanged: { file_path } " )
101- continue
92+ exists = self ._repository .document_exists_by_hash (document .hash ())
93+ if exists :
94+ self ._logger .info (f"Unchanged: { file_path } " )
95+ continue
10296
103- self ._logger .info (f"Processing: { file_path } " )
104- document = self ._engine .process (document )
97+ self ._logger .info (f"Processing: { file_path } " )
98+ document = self ._engine .process (document )
10599
106- self ._repository .add_document (document )
100+ self ._repository .add_document (document )
107101
108- # TODO: try/expect and run in the finally block?
102+ processed += 1
103+ finally :
109104 if self ._settings .quantize_scan :
110105 self ._engine .quantize ()
111106
112- processed += 1
113-
114107 self ._engine .free_context ()
115108
116109 return processed
@@ -247,7 +240,7 @@ def search(
247240 if new_context :
248241 self ._engine .create_new_context ()
249242
250- if self ._settings .quantize_preload :
243+ if self ._settings .quantize_scan and self . _settings . quantize_preload :
251244 self ._engine .quantize_preload ()
252245
253246 return self ._engine .search (query , limit = top_k )
@@ -257,7 +250,17 @@ def get_settings(self) -> dict:
257250 versions = self ._engine .versions ()
258251 return {** versions , ** asdict (self ._settings )}
259252
260- def destroy (self ) -> None :
253+ def quantize_vectors (self ) -> None :
254+ """Quantize vectors for faster search"""
255+ self ._ensure_initialized ()
256+ self ._engine .quantize ()
257+
258+ def quantize_cleanup (self ) -> None :
259+ """Clean up quantization structures"""
260+ self ._ensure_initialized ()
261+ self ._engine .quantize_cleanup ()
262+
263+ def close (self ) -> None :
261264 """Free up resources"""
262265 if self ._conn :
263266 self ._engine .close ()
0 commit comments