felixflier03 commited on
Commit
f48c478
·
verified ·
1 Parent(s): 6bd7775

Create optimized_store.py

Browse files
Files changed (1) hide show
  1. optimized_store.py +66 -0
optimized_store.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # optimized_store.py
2
+ import pickle
3
+ from pathlib import Path
4
+ from typing import Optional, Dict, Any
5
+ import logging
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+ class OptimizedVectorStore:
10
+ def __init__(self, file_path: Path):
11
+ self.file_path = file_path
12
+ self._store = None
13
+ self._docstore = None
14
+ self._index_to_docstore_id = None
15
+
16
+ @property
17
+ def store(self):
18
+ """Lazy Loading des Vector Stores"""
19
+ if self._store is None:
20
+ self._load_store()
21
+ return self._store
22
+
23
+ @property
24
+ def docstore(self):
25
+ """Lazy Loading des Docstores"""
26
+ if self._store is None:
27
+ self._load_store()
28
+ return self._docstore
29
+
30
+ @property
31
+ def index_to_docstore_id(self):
32
+ """Lazy Loading der Index-Mapping"""
33
+ if self._store is None:
34
+ self._load_store()
35
+ return self._index_to_docstore_id
36
+
37
+ def _load_store(self):
38
+ """Lädt den Vector Store bei Bedarf"""
39
+ if not self.file_path.exists():
40
+ raise FileNotFoundError(f"Vector Store nicht gefunden: {self.file_path}")
41
+
42
+ logger.info(f"Lade Vector Store von {self.file_path}")
43
+ try:
44
+ with open(self.file_path, 'rb') as f:
45
+ self._store = pickle.load(f)
46
+ # Extrahiere wichtige Komponenten
47
+ if hasattr(self._store, 'docstore'):
48
+ self._docstore = self._store.docstore
49
+ if hasattr(self._store, 'index_to_docstore_id'):
50
+ self._index_to_docstore_id = self._store.index_to_docstore_id
51
+ except Exception as e:
52
+ logger.error(f"Fehler beim Laden des Vector Stores: {str(e)}")
53
+ raise
54
+
55
+ def similarity_search_with_relevance_scores(self, *args, **kwargs):
56
+ """Delegiert Suche an den Store"""
57
+ return self.store.similarity_search_with_relevance_scores(*args, **kwargs)
58
+
59
+ def similarity_search(self, *args, **kwargs):
60
+ """Delegiert Suche an den Store"""
61
+ return self.store.similarity_search(*args, **kwargs)
62
+
63
+ @property
64
+ def embedding_function(self):
65
+ """Delegiert Embedding-Funktion"""
66
+ return self.store.embedding_function