Este repositorio contiene un chatbot basado en Retrieval-Augmented Generation (RAG) desarrollado como parte de un proyecto del ISTS. El chatbot utiliza técnicas de recuperación de información y generación de lenguaje natural para proporcionar respuestas basadas en la información disponible en una base de datos.
- Retrieval-Augmented Generation (RAG): Combina modelos de lenguaje preentrenados con técnicas de recuperación de documentos para mejorar la precisión y relevancia de las respuestas.
- Integración con fuentes de datos: Recupera información relevante de una base de datos para enriquecer las respuestas del chatbot.
- Modelo de lenguaje avanzado: Basado en modelos de lenguaje de última generación para la generación de respuestas coherentes y contextuales.
Antes de ejecutar el proyecto, asegúrate de tener instaladas las siguientes dependencias:
- Python 3.8+
- pip
- Flask
- Ollama
- Langchain
- Otros requisitos mencionados en
requirements.txt
-
Clona este repositorio en tu máquina local:
git clone https://github.com/ccxnu/rag-chatbot-ists.git
-
Navega al directorio del proyecto:
cd rag-chatbot-ists
-
Crea un entorno virtual:
python -m venv .venv
-
Activa el entorno virtual:
source .venv/bin/activate
-
Instala las dependencias necesarias:
pip install -r requirements.txt
Para ejecutar el chatbot, puedes usar el siguiente comando:
python app.py
Esto iniciará el servidor del chatbot que estará listo para recibir consultas y proporcionar respuestas basadas en la información recuperada. Asegurate de tener ollama server corriendo.
main.py
: Archivo principal para iniciar el chatbot.requirements.txt
: Lista de dependencias del proyecto.chroma/
: Directorio donde se almacenan los datos utilizados para la recuperación de información.pdf_files/
: Contiene los archivos pdf que se suben.
El proyecto ofrece varios endpoints para interactuar con el chatbot, extraer información de URLs y PDFs, y gestionar la base de datos.
- URL:
/preguntar_chatbot
- Método:
POST
- Descripción: Envía una pregunta al chatbot y recibe una respuesta basada en el contexto.
- Cuerpo de la Solicitud:
{ "question": "¿Cuál es la capital de Francia?" }
- Respuesta: La respuesta generada por el chatbot.
- URL:
/obtener_info_from_url
- Método:
POST
- Descripción: Extrae y guarda el contenido de un artículo desde una URL proporcionada.
- Cuerpo de la Solicitud:
{ "url": "https://example.com/article" }
- Respuesta:
{ "url": "https://example.com/article", "messages": ["Message 1", "Message 2"] }
- URL:
/upload_pdf
- Método:
POST
- Descripción: Sube y guarda archivos PDF.
- Cuerpo de la Solicitud: Un archivo PDF en el campo
file
. - Respuesta:
{ "message": "Archivo nombre_archivo.pdf subido correctamente", "file_path": "/ruta/al/archivo/nombre_archivo.pdf" }
- URL:
/load_documents
- Método:
POST
- Descripción: Carga documentos desde los archivos PDF subidos, los divide en fragmentos y los agrega a la base de datos Chroma.
- Respuesta:
{ "message": "Documents loaded and added to Chroma" }
- URL:
/reset_database
- Método:
POST
- Descripción: Resetea la base de datos Chroma.
- Respuesta:
{ "message": "Database cleared successfully" }
Si deseas contribuir al proyecto, por favor sigue los siguientes pasos:
- Haz un fork del repositorio.
- Crea una nueva rama (
git checkout -b feature/nueva-funcionalidad
). - Realiza tus cambios y realiza commits descriptivos.
- Envía un pull request detallado para revisión.
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE
para más detalles.
Para cualquier pregunta o comentario, puedes contactarme a través de correo electrónico Pablo Cuenca.