Un asistente de análisis de datos impulsado por IA que permite consultar bases de datos MySQL usando lenguaje natural. Este proyecto combina LangChain, RAG (Retrieval Augmented Generation) y modelos de lenguaje para traducir preguntas en lenguaje natural a consultas SQL y presentar resultados de manera interactiva.
- Procesamiento de Lenguaje Natural: Convierte preguntas en lenguaje natural a consultas SQL usando LangChain y modelos LLM
- Compatibilidad Universal con Datasets: Funciona con cualquier conjunto de datos estructurado en MySQL
- RAG (Retrieval Augmented Generation): Mejora las respuestas utilizando documentación y contexto específico del dominio
- Soporte Multi-LLM: Compatibilidad con múltiples proveedores de LLM (OpenAI, Ollama)
- Interfaz Interactiva: Interfaz limpia e intuitiva construida con Streamlit
- Visualización Inteligente: Generación automática de gráficos basados en resultados de consultas
- Soporte Multilingüe: Responde en el mismo idioma de la pregunta
- Herramientas de Debug: Panel de depuración y sistema de logging integrado
La arquitectura de Khipu AI está diseñada para ser modular, extensible y fácil de mantener:
-
Frontend Layer:
- UI basada en Streamlit
- Componentes reutilizables para visualización y entrada de datos
- Gestión de estado de la aplicación
-
Service Layer:
- Data Processing Service: Manejo principal de consultas y respuestas
- RAG Service: Mejora de respuestas con contexto adicional
- State Management: Gestión del estado de la aplicación
-
Utility Layer:
- Database Utils: Interacción con MySQL
- RAG Utils: Manejo de documentos y embeddings
- LLM Provider: Abstracción para diferentes proveedores de LLM
- Chatbot Utils: Procesamiento de consultas y respuestas
-
External Services:
- MySQL Database: Almacenamiento principal de datos
- Vector Store: Almacenamiento de embeddings para RAG
- LLM Models: Modelos de lenguaje (OpenAI/Ollama)
El sistema RAG (Retrieval Augmented Generation) mejora la calidad de las respuestas incorporando conocimiento específico del dominio:
-
Indexación de Documentos:
- Los documentos relevantes se cargan desde el directorio
/docs - Se procesan y dividen en chunks manejables
- Se generan embeddings usando OpenAI
- Se almacenan en una base de datos vectorial FAISS
- Los documentos relevantes se cargan desde el directorio
-
Proceso de Consulta:
- La pregunta del usuario se convierte en un embedding
- Se recuperan los documentos más relevantes de FAISS
- El contexto recuperado se combina con la pregunta original
- Se genera una respuesta mejorada usando el LLM
-
Beneficios:
- Respuestas más precisas y contextualizadas
- Mejor comprensión del dominio específico
- Reducción de alucinaciones del modelo
- Capacidad de incorporar conocimiento especializado
- Backend: Python 3.8+
- Frontend: Streamlit
- AI/ML:
- LangChain
- OpenAI/Ollama
- FAISS Vector Store
- Base de Datos: MySQL
- Procesamiento de Datos:
- Pandas
- NumPy
- Visualización:
- Matplotlib
- Seaborn
- Python 3.8 o superior
- MySQL Server
- OpenAI API key (opcional si usa Ollama)
- Ollama (opcional si usa OpenAI)
- Git
- Clonar el Repositorio:
git clone https://github.com/ronaldmego/khipu_ai.git
cd khipu_ai- Ejecutar Script de Setup:
python scripts/setup.py- Configurar Variables de Entorno:
Crear archivo
.enven la raíz del proyecto:
# LLM Provider Configuration
DEFAULT_LLM_PROVIDER=ollama
DEFAULT_TEMPERATURE=0.7
# OpenAI Configuration (opcional)
OPENAI_API_KEY=your_key_here
# Ollama Configuration
OLLAMA_BASE_URL=http://localhost:11434
# MySQL Configuration
MYSQL_USER=your_user
MYSQL_PASSWORD=your_password
MYSQL_HOST=your_host
MYSQL_DATABASE=your_database-
Preparar Documentos:
- Coloca tus documentos relevantes en el directorio
/docs - Formatos soportados: .txt, .md, .pdf
- Coloca tus documentos relevantes en el directorio
-
Estructura de Documentos:
docs/
├── time_series_handling.md
├── database_schema.md
└── business_rules.pdf
- Consideraciones:
- Usa documentos concisos y relevantes
- Organiza la información de manera clara
- Actualiza los documentos según sea necesario
- Iniciar la Aplicación:
streamlit run src/pages/Home.py-
Configurar la Base de Datos:
- Selecciona las tablas a consultar
- Verifica la conexión en el panel de debug
-
Realizar Consultas:
- Escribe preguntas en lenguaje natural
- Observa las consultas SQL generadas
- Analiza las visualizaciones automáticas
- Fork el repositorio
- Crea tu rama de feature
- Commit tus cambios
- Push a la rama
- Crea un Pull Request
Este proyecto está licenciado bajo MIT License - ver LICENSE para más detalles.
Ronald Mego
Para más información y actualizaciones, visita el repositorio del proyecto.
