Spaces:
Sleeping
Sleeping
| """ | |
| Este script realiza las siguientes tareas: | |
| 1. Carga archivos desde un directorio especificado utilizando la clase `Loader` del m贸dulo `preprocess`. | |
| 2. Procesa los archivos mediante limpieza de texto y divisi贸n en fragmentos. | |
| 3. Genera representaciones vectoriales de los textos utilizando `sentence-transformers`. | |
| 4. Almacena los vectores en una base de datos Chroma para su posterior recuperaci贸n. | |
| 5. Inicializa un modelo y ejecuta una interfaz para interactuar con los datos procesados. | |
| M贸dulos utilizados: | |
| - `preprocess`: Contiene la clase `Loader` para la carga y preprocesamiento de documentos. | |
| - `vdb`: Se asume que gestiona la base de datos vectorial. | |
| - `model_load`: M贸dulo para cargar el modelo de machine learning. | |
| - `st`: Se asume que proporciona la interfaz de usuario. | |
| Estructura del c贸digo: | |
| 1. Define el directorio de los archivos a procesar. | |
| 2. Carga los archivos y los procesa si el n煤mero de archivos es menor a 2. | |
| 3. Si hay m煤ltiples archivos, los procesa en un bucle y concatena los fragmentos. | |
| 4. Genera embeddings utilizando `sentence-transformers/all-MiniLM-L12-v2`. | |
| 5. Almacena los embeddings en ChromaDB y configura un recuperador basado en similitud. | |
| 6. Carga el modelo de machine learning. | |
| 7. Inicia la interfaz de usuario.. | |
| """ | |
| from langchain_community.vectorstores import Chroma | |
| from langchain_community.embeddings import HuggingFaceEmbeddings | |
| #from langchain_chroma import Chroma | |
| from tqdm.auto import tqdm | |
| #from chromadb.utils import embedding_functions | |
| from src.preprocess import Loader | |
| from src.vdb import EmbeddingGen | |
| import src.model_load | |
| import streamlit as st | |
| if __name__=="__main__": | |
| # Definici贸n de directorio | |
| archivo = [r"data/Calculo_Trascendentes_Tempranas_Zill_4t.pdf"] | |
| # Carga de archivos y procesamiento de texto | |
| if len(archivo) < 2: | |
| Load = Loader(archivo[0]) | |
| documentos = Load.load_docs() | |
| textos_limpios = [Loader.limpiar_texto(texto=doc) for doc in documentos] | |
| textos = Loader.splitter(texto=textos_limpios, chunk_size=500, chunk_overlap=50) | |
| else: | |
| textos = [] | |
| for i in range(len(archivo)): | |
| Load = Loader(archivo) | |
| documentos = Load.load_docs() | |
| textos_limpios = [Load.limpiar_texto(texto=doc) for doc in documentos] | |
| chunks = Load.splitter(texto=textos_limpios, chunk_size=500, chunk_overlap=50) | |
| textos.extend(chunks) | |
| # Generaci贸n de embeddings y almacenamiento en base de datos ChromaDB | |
| embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L12-v2") | |
| persist_directory = "./persist_directory" | |
| db = Chroma(persist_directory=persist_directory, embedding_function=embeddings.embed_documents) | |
| vectorstore = Chroma.from_documents(textos[:10], embeddings, persist_directory="./chroma_db") | |
| print("Vectorizado terminado") | |
| retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 3}) | |
| print("Carga del modelo") | |
| # Carga del modelo y ejecuci贸n de la interfaz | |
| qa_chain=src.model_load.load_model() | |
| print("Lanzando interfaz") | |
| # T铆tulo de la aplicaci贸n | |
| st.title("Interfaz Sencilla") | |
| # Entrada de texto | |
| user_input = st.text_input("Escribe algo:") | |
| # Bot贸n para obtener la respuesta | |
| if st.button("Obtener respuesta"): | |
| st.write(src.model_load.ask(user_input, retriever,qa_chain)) | |