Chroma Framework ist eine pythonbasierte Anwendung, die zum Verwalten und Durchsuchen von Texteinbettungen mithilfe eines Satztransformatormodells entwickelt wurde. Mit dem Framework können Benutzer Kollektionen von Texteinbettungen erstellen, neue Dokumente hinzufügen und die engsten Texte basierend auf Eingabebeständen abfragen.
⛩️ Einbettungsverwaltung ⛩️ -> Sammlungen von Texteinbettungen erstellen und verwalten.
Dokument -Addion -> Fügen Sie der Sammlung mit Metadaten neue Dokumente hinzu.
? Textsuche ? -> Finden Sie die engsten Texte zu einer bestimmten Abfrage mit dem Einbettungsmodell.
Dynamische Pfadbehandlung -> Bestimmen Sie die Dateipfade automatisch zum Projektverzeichnis.
Klonen Sie das Repository :
git clone https://github.com/yourusername/chromadb_frameworkNavigieren Sie zum Projektverzeichnis :
cd chromadb_frameworkInstallieren Sie alle erforderlichen Abhängigkeiten (falls zutreffend) .
pip install -r requirements.txtStellen Sie sicher, dass Sie Python 3.x installiert haben.
Führen Sie die Anwendung durch Ausführung aus:
python main.pyBefolgen Sie die Eingabeaufforderungen auf dem Bildschirm, um Einbettungen zu verwalten und Texte zu suchen.
? project-root
├── ? config
│ ├── ? __ init __ .py
│ └── ? constants.py
│
├── ? src
│ ├── ? __ init __ .py
│ ├── ? client.py
│ ├── ? collection.py
│ └── ? data.py
│
├── ? utils
│ ├── ? __ init __ .py
│ └── ? helpers.py
│
├── ? .gitignore
├── ? .gitattributes
└── ? main.pyconfig.py/ : Enthält Konfigurationsdateien.
SRC/ : Enthält Quellcodedateien.
Utils/ : Enthält Dienstprogrammfunktionen.
.Gitignore : Gibt Dateien und Verzeichnisse an, die von Git ignoriert werden sollen (z. B. virtuelle Umgebungen, Build -Artefakte).
.GitatTributes : Gewährleistet die konsistenten Linienende in verschiedenen Betriebssystemen im Repository.
main.py : Der Einstiegspunkt der Anwendung. Initialisiert Einstellungen, verarbeitet Einbettungsvorgänge und verwaltet Textsuche.
from config . constants import MODEL_NAME , COLLECTION_NAME , INPUT_QUERY
from src . client import get_client
from src . collection import get_or_create_collection , add_collection , find_closest_texts
from src . data import get_data
from utils . helpers import set_def_llm , get_path
def main ():
model_name = MODEL_NAME
collection_name = COLLECTION_NAME
input_query = INPUT_QUERY
my_client = get_client ()
my_folder_path = get_path ()
embedding_function = set_def_llm ( model_name )
my_collection = get_or_create_collection ( my_client , collection_name , embedding_function = embedding_function )
my_documents , my_metadatas , my_ids = get_data ( my_folder_path )
add_collection ( my_collection , my_documents , my_metadatas , my_ids )
my_closest_texts = find_closest_texts ( my_collection , input_query )
print ( "Closest text(s):" , my_closest_texts )
if __name__ == "__main__" :
main ()Helpers.py : Versorgungsfunktionen zum Festlegen des Modells und zum Erhalten von Pfaden.
from os . path import abspath , dirname , join
from chromadb . utils import embedding_functions
def set_def_llm ( model_name = None ):
try :
if model_name :
return embedding_functions . SentenceTransformerEmbeddingFunction ( model_name = model_name )
else :
return embedding_functions . DefaultEmbeddingFunction ()
except Exception as e :
print ( f"An error occurred while setting the sentence transformer. n " )
return None
def get_path ( folder_name = "texts" ):
try :
current_path = dirname ( abspath ( __file__ ))
project_path = dirname ( current_path )
full_path = join ( project_path , folder_name )
return full_path
except Exception as e :
print ( f"An error occurred while getting the folder path. n " )client.py : Funktionen zum Erstellen des Datenbankclients.
from chromadb import PersistentClient
def get_client ( path = "vector_db" ):
try :
client = PersistentClient ( path = path )
return client
except FileNotFoundError :
print ( f"Database directory not found:" )
except Exception as e :
print ( f"An error occurred while creating the client: { e } " )Sammlung.PY : Funktionen zum Verwalten von Sammlungen und Suchtexten.
def get_or_create_collection ( client , name , embedding_function ):
try :
return client . get_or_create_collection ( name = name , embedding_function = embedding_function )
except Exception as e :
print ( f"An error occurred while creating the collection: { e } " )
def add_collection ( collection , documents , metadatas , ids ):
try :
collection . add (
documents = documents ,
metadatas = metadatas ,
ids = ids
)
except Exception as e :
print ( f"An error occurred while adding to the collection: { e } " )
def find_closest_texts ( collection , input_query , n_results = 2 ):
try :
closest_text_names = list ()
results = collection . query (
query_texts = [ input_query ],
include = [ "metadatas" ],
n_results = n_results
)
for item in results [ "metadatas" ][ 0 ]:
closest_text_names . append ( item [ "source" ])
return closest_text_names
except Exception as e :
print ( f"An error occurred while finding the closest text: { e } " )Data.py : Funktionen zum Abrufen von Daten aus dem angegebenen Ordner.
from os import listdir
from os . path import join
def get_data ( folder_path ):
try :
documents = list ()
metadatas = list ()
ids = list ()
id_count = 1
for file_name in listdir ( folder_path ):
if file_name . endswith ( ".txt" ):
file_path = join ( folder_path , file_name )
id = "id" + str ( id_count )
with open ( file_path ) as file :
content = file . read ()
documents . append ( content )
metadatas . append ({ "source" : file_name })
ids . append ( id )
id_count += 1
return documents , metadatas , ids
except Exception as e :
print ( f"An error occurred while creating the data: { e } " )
return [], [], []Dieses Projekt ist gemäß der GNU General Public Lizenz v3.0 (GPL -3.0) lizenziert - Einzelheiten finden Sie in der Lizenzdatei.
Lassen Sie mich wissen, ob es spezielle Details gibt, die Sie anpassen möchten, oder zusätzliche Abschnitte, die Sie einschließen möchten!