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 |
###############################################
|