Update utils.py
Browse files
utils.py
CHANGED
@@ -2,6 +2,7 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, List, Tuple, Type
|
|
2 |
import logging
|
3 |
import json
|
4 |
import os
|
|
|
5 |
from datetime import datetime
|
6 |
import hashlib
|
7 |
import csv
|
@@ -304,7 +305,12 @@ def load_word_with_metadata(file_path):
|
|
304 |
|
305 |
|
306 |
|
307 |
-
|
|
|
|
|
|
|
|
|
|
|
308 |
################################################
|
309 |
#die Inhalte splitten, um in Vektordatenbank entsprechend zu laden als Splits
|
310 |
# Funktion zum Splitten und Zuweisen der doc_id
|
@@ -318,10 +324,9 @@ def split_documents_with_id(docs, text_splitter):
|
|
318 |
splits.append(split_doc)
|
319 |
return splits
|
320 |
|
|
|
321 |
#finally die Splits erzeugen und laden.....
|
322 |
def document_loading_splitting():
|
323 |
-
##############################
|
324 |
-
# Document loading
|
325 |
docs = []
|
326 |
|
327 |
# kreiere einen DirectoryLoader für jeden file type
|
@@ -378,8 +383,8 @@ def document_loading_splitting():
|
|
378 |
return preprocessed_splits, split_to_original_mapping
|
379 |
|
380 |
###########################################
|
381 |
-
#Chroma DB die splits ablegen - vektorisiert...
|
382 |
-
|
383 |
def document_storage_chroma(splits):
|
384 |
# Embedding-Funktion definieren
|
385 |
embedding_fn = HuggingFaceEmbeddings(model_name=EMBEDDING_MODELL, model_kwargs={"device": "cpu"}, encode_kwargs={'normalize_embeddings': False})
|
@@ -389,6 +394,18 @@ def document_storage_chroma(splits):
|
|
389 |
|
390 |
return vectorstore
|
391 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
|
393 |
|
394 |
###############################################
|
|
|
2 |
import logging
|
3 |
import json
|
4 |
import os
|
5 |
+
import pickle
|
6 |
from datetime import datetime
|
7 |
import hashlib
|
8 |
import csv
|
|
|
305 |
|
306 |
|
307 |
|
308 |
+
################################################
|
309 |
+
#Vektorstore
|
310 |
+
################################################
|
311 |
+
|
312 |
+
################################################
|
313 |
+
# Document Splitting
|
314 |
################################################
|
315 |
#die Inhalte splitten, um in Vektordatenbank entsprechend zu laden als Splits
|
316 |
# Funktion zum Splitten und Zuweisen der doc_id
|
|
|
324 |
splits.append(split_doc)
|
325 |
return splits
|
326 |
|
327 |
+
########################################
|
328 |
#finally die Splits erzeugen und laden.....
|
329 |
def document_loading_splitting():
|
|
|
|
|
330 |
docs = []
|
331 |
|
332 |
# kreiere einen DirectoryLoader für jeden file type
|
|
|
383 |
return preprocessed_splits, split_to_original_mapping
|
384 |
|
385 |
###########################################
|
386 |
+
#Vektorstore über Chroma DB die splits ablegen - vektorisiert...
|
387 |
+
###########################################
|
388 |
def document_storage_chroma(splits):
|
389 |
# Embedding-Funktion definieren
|
390 |
embedding_fn = HuggingFaceEmbeddings(model_name=EMBEDDING_MODELL, model_kwargs={"device": "cpu"}, encode_kwargs={'normalize_embeddings': False})
|
|
|
394 |
|
395 |
return vectorstore
|
396 |
|
397 |
+
########################################################
|
398 |
+
#Vektorstore speichern - bzw. laden
|
399 |
+
def save_vectorstore(vectorstore, filename="vectorstore.pkl"):
|
400 |
+
with open(filename, "wb") as f:
|
401 |
+
pickle.dump(vectorstore, f)
|
402 |
+
|
403 |
+
def load_vectorstore(filename="vectorstore.pkl"):
|
404 |
+
if os.path.exists(filename):
|
405 |
+
with open(filename, "rb") as f:
|
406 |
+
return pickle.load(f)
|
407 |
+
return None
|
408 |
+
|
409 |
|
410 |
|
411 |
###############################################
|