O Chroma Framework é um aplicativo baseado em Python projetado para gerenciar e pesquisar incorporação de texto usando um modelo de transformador de sentença. A estrutura permite que os usuários criem coleções de incorporação de texto, adicione novos documentos e consulte os textos mais próximos com base nas consultas de entrada.
⛩️ Incorporação de gerenciamento ⛩️ -> Crie e gerencie coleções de incorporação de texto.
Adicionamento de documentos -> Adicionar novos documentos à coleção com metadados.
? Pesquisa de texto ? -> Encontre os textos mais próximos de uma determinada consulta usando o modelo de incorporação.
Manuseio de caminho dinâmico -> determine automaticamente os caminhos de arquivo em relação ao diretório do projeto.
Clone o repositório :
git clone https://github.com/yourusername/chromadb_frameworkNavegue até o diretório do projeto :
cd chromadb_frameworkInstale todas as dependências necessárias (se aplicável) .
pip install -r requirements.txtCertifique -se de ter o Python 3.x instalado.
Execute o aplicativo executando:
python main.pySiga os avisos na tela para gerenciar incorporações e pesquisar textos.
? 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/ : contém arquivos de configuração.
SRC/ : contém arquivos de código -fonte.
Utils/ : contém funções de utilitário.
.gitignore : especifica arquivos e diretórios a serem ignorados pelo Git (por exemplo, ambientes virtuais, construir artefatos).
.gitattributes : garante finais de linha consistentes em diferentes sistemas operacionais no repositório.
main.py : o ponto de entrada do aplicativo. Inicializa as configurações, lida com operações de incorporação e gerencia pesquisas de texto.
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 : Funções de utilitário para definir o modelo e obter caminhos.
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 : funções para criar o cliente de banco de dados.
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 } " )Coleção.Py : Funções para gerenciar coleções e pesquisar textos.
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 : funções para recuperar dados da pasta especificada.
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 [], [], []Este projeto está licenciado sob a licença pública geral da GNU v3.0 (GPL -3.0) - consulte o arquivo de licença para obter detalhes.
Deixe -me saber se existem detalhes específicos que você deseja ajustar ou seções adicionais que deseja incluir!