Este proyecto es una aplicación que permite crear un asistente inteligente capaz de responder preguntas basadas en el contenido de uno o varios documentos PDF. La aplicación utiliza modelos de lenguaje y técnicas de procesamiento de lenguaje natural para analizar el contenido de los documentos, generar embeddings y proporcionar respuestas precisas a las consultas del usuario.
- Características
- Requisitos Previos
- Instalación
- Uso
- Descripción de los Procesos Principales
- Antecedentes Relevantes
- Créditos
- Licencia
- Carga de múltiples documentos PDF: Permite al usuario cargar uno o varios archivos PDF para su análisis.
- Fragmentación precisa del texto: Utiliza spaCy para segmentar el texto en oraciones de manera eficiente y precisa.
- Generación de embeddings: Convierte los fragmentos de texto en embeddings utilizando modelos de lenguaje multilingües.
- Almacenamiento persistente: Los embeddings se almacenan de forma persistente utilizando ChromaDB para facilitar su recuperación.
- Interfaz de usuario interactiva: Desarrollada con Streamlit, permite una interacción sencilla y amigable.
- Respuestas generadas localmente: Utiliza AI Toolkit de Visual Studio Code con modelos ONNX para generar respuestas sin depender de servicios externos.
Antes de comenzar, asegúrate de tener instalados los siguientes componentes:
- Python 3.8 o superior
- Visual Studio Code con la extensión AI Toolkit instalada
- Modelo ONNX compatible (por ejemplo,
Phi-3-mini-4k-cpu-int4-rtn-block-32-onnx
) - spaCy y el modelo de idioma español (
es_core_news_sm
)
Sigue estos pasos para configurar el entorno y ejecutar la aplicación localmente.
git clone https://github.com/4n3z/Document-Assistant.git
cd Document-Assistant
python -m venv venv
-
En Windows:
venv\Scripts\activate
-
En Unix o MacOS:
source venv/bin/activate
Asegúrate de tener el archivo requirements.txt
con las siguientes dependencias:
streamlit
PyMuPDF
langchain
chromadb
sentence-transformers
numpy
openai
spacy
Instala las dependencias:
pip install -r requirements.txt
python -m spacy download es_core_news_sm
- Abre Visual Studio Code.
- Instala la extensión AI Toolkit si aún no lo has hecho.
- Configura el modelo ONNX:
- Descarga el modelo
Phi-3-mini-4k-cpu-int4-rtn-block-32-onnx
o el que prefieras. - Sigue las instrucciones de AI Toolkit para ejecutar el modelo ONNX mediante el 'Playground'.
- Descarga el modelo
- Asegúrate de que el modelo sea el mismo configurado en la aplicación.
En el directorio del proyecto, inicia la aplicación de Streamlit:
streamlit run scripts/chatbot.py
- Carga de documentos: Utiliza el cargador de archivos para subir uno o varios archivos PDF.
- Ajustes de búsqueda: En la barra lateral, puedes ajustar el número de fragmentos relevantes a recuperar (valor de
k
). - Realizar consultas: Escribe tu pregunta en el campo de entrada y presiona Enter. El asistente generará una respuesta basada en el contenido de los documentos.
Los usuarios pueden cargar uno o varios archivos PDF a través de la interfaz de Streamlit. Los archivos se guardan en el directorio data/
para su procesamiento. La aplicación maneja la carga y almacenamiento de los archivos de manera segura y eficiente.
Para manejar eficientemente el contenido y generar embeddings precisos, los documentos PDF se fragmentan en trozos más pequeños. Se utiliza spaCy para dividir el texto en oraciones, lo que mejora la precisión en la segmentación y evita cortar oraciones a la mitad.
Cada fragmento de texto se convierte en un embedding utilizando el modelo multilingüe paraphrase-multilingual-MiniLM-L12-v2
. Los embeddings se almacenan en una base de datos vectorial utilizando Chroma, lo que permite una rápida recuperación de información relevante.
Cuando el usuario realiza una pregunta:
- Recuperación de fragmentos relevantes: Utiliza los embeddings almacenados para encontrar los fragmentos más relevantes al contexto de la pregunta.
- Generación del prompt: Crea un prompt que incluye el contexto de los fragmentos recuperados y la pregunta del usuario.
- Generación de la respuesta: Envía el prompt al modelo de lenguaje alojado localmente a través de AI Toolkit. El modelo ONNX procesa el prompt y genera una respuesta.
- Presentación al usuario: La respuesta generada se muestra en la interfaz de Streamlit.
- AI Toolkit: Extensión de Visual Studio Code que permite a los desarrolladores integrar modelos de inteligencia artificial en sus aplicaciones de forma sencilla.
- Modelos ONNX: Formato abierto para representar modelos de aprendizaje automático que permite la interoperabilidad entre diferentes frameworks y herramientas.
- spaCy: Biblioteca avanzada para el procesamiento de lenguaje natural que ofrece herramientas para la segmentación de texto, etiquetado gramatical y más.
- LangChain: Framework para desarrollar aplicaciones basadas en modelos de lenguaje, facilitando la gestión de cadenas de procesamiento, prompts y más.
- Chroma: Base de datos vectorial utilizada para almacenar y recuperar embeddings de manera eficiente.
Desarrollado por 4n3z. Si tienes preguntas o sugerencias, no dudes en contactarme.
Este proyecto está licenciado bajo la Licencia MIT.