Skip to content

uahroberto/LocalMind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 LocalMind - Sistema RAG Privado

LocalMind es un sistema de Retrieval-Augmented Generation (RAG) completamente privado y on-premise que permite hacer preguntas sobre documentos PDF y TXT utilizando modelos de lenguaje locales.

Características

  • 100% Privado: Todos los datos permanecen en tu infraestructura
  • Búsqueda Vectorial: Utiliza PostgreSQL con pgvector para búsquedas semánticas eficientes
  • LLM Local: Integración con Ollama para generación de embeddings y respuestas
  • Interfaz Intuitiva: UI web con Streamlit en español
  • Procesamiento de Documentos: Soporta PDF y TXT con chunking inteligente
  • Arquitectura Modular: Backend separado del frontend para fácil mantenimiento

Requisitos Previos

  • Docker y Docker Compose instalados
  • Al menos 8GB de RAM disponible (recomendado 16GB)
  • 10GB de espacio en disco para modelos

Instalación y Configuración

1. Clonar el Repositorio

git clone <repository-url>
cd LocalMind

2. Configurar Variables de Entorno

cp .env.example .env

Edita el archivo .env con tus credenciales:

POSTGRES_DB=localmind_db
POSTGRES_USER=localmind_user
POSTGRES_PASSWORD=your_secure_password
POSTGRES_HOST=db
POSTGRES_PORT=5432

LLM_MODEL=qwen2.5:7b
EMBEDDING_MODEL=mxbai-embed-large
OLLAMA_HOST=http://ollama:11434

3. Descargar Modelos de Ollama

Antes de iniciar la aplicación, descarga los modelos necesarios:

# Iniciar solo el servicio de Ollama
docker-compose up -d ollama

# Descargar modelo de embeddings (requerido)
docker exec -it localmind_ollama ollama pull mxbai-embed-large

# Descargar modelo de generación (requerido)
docker exec -it localmind_ollama ollama pull qwen2.5:7b

Modelos alternativos disponibles:

  • Embeddings: nomic-embed-text, all-minilm
  • Generación: llama2, mistral, qwen2.5:14b

4. Iniciar la Aplicación

# Construir e iniciar todos los servicios
docker-compose up --build

# O en modo detached
docker-compose up -d --build

La aplicación estará disponible en: http://localhost:8501

Uso

Subir Documentos

  1. Abre la aplicación en tu navegador
  2. En la barra lateral, haz clic en "Subir documento"
  3. Selecciona un archivo PDF o TXT
  4. Haz clic en "🔄 Procesar Documento"
  5. Espera a que se complete el procesamiento

Hacer Preguntas

  1. Una vez procesados los documentos, escribe tu pregunta en el chat
  2. El sistema buscará fragmentos relevantes en la base de datos
  3. Generará una respuesta basada en el contexto encontrado
  4. La respuesta se mostrará de forma streaming

🏗️ Arquitectura

LocalMind/
├── src/
│   ├── app.py                    # Streamlit frontend
│   ├── config/
│   │   └── settings.py           # Configuración de entorno
│   └── backend/
│       ├── database.py           # PostgreSQL + pgvector
│       ├── llm.py                # Cliente Ollama
│       └── ingestion.py          # Pipeline de procesamiento
├── docker-compose.yml            # Orquestación de servicios
├── Dockerfile                    # Imagen de la aplicación
├── requirements.txt              # Dependencias Python
└── .env                          # Variables de entorno

Componentes

  • PostgreSQL + pgvector: Base de datos vectorial para almacenar embeddings
  • Ollama: Servidor local de LLM para embeddings y generación
  • Streamlit: Interfaz de usuario web
  • LangChain: Framework para procesamiento de documentos

🔧 Comandos Útiles

Ver Logs

# Todos los servicios
docker-compose logs -f

# Solo la aplicación
docker-compose logs -f app

# Solo Ollama
docker-compose logs -f ollama

Reiniciar Servicios

# Reiniciar todo
docker-compose restart

# Reiniciar solo la app
docker-compose restart app

Detener la Aplicación

# Detener servicios
docker-compose stop

# Detener y eliminar contenedores
docker-compose down

# Detener y eliminar todo (incluidos volúmenes)
docker-compose down -v

Acceder a la Base de Datos

docker exec -it localmind_db psql -U localmind_user -d localmind_db

# Consultar documentos
SELECT id, substring(content, 1, 50) as preview, metadata 
FROM documents 
LIMIT 10;

🛠️ Desarrollo

Estructura del Código

  • Tipado Estricto: Todo el código usa type hints (PEP 484)
  • Idioma: Código en inglés, UI en español
  • Linting: Compatible con Ruff y Mypy
  • Modular: Separación clara entre backend y frontend

Ejecutar Tests

# Instalar dependencias de desarrollo
pip install -r requirements.txt

# Ejecutar linters
ruff check src/
mypy src/

🔒 Seguridad

  • Los datos nunca salen de tu infraestructura
  • Base de datos aislada en red interna
  • Variables sensibles en .env (no versionado)
  • Comunicación interna entre contenedores

📊 Rendimiento

  • Chunking: 1000 caracteres con 200 de overlap
  • Índice HNSW: Búsqueda vectorial optimizada
  • Streaming: Respuestas en tiempo real
  • Batch Processing: Procesamiento por lotes de documentos

🐛 Troubleshooting

Error: "Failed to connect to database"

  • Verifica que el servicio db esté corriendo: docker-compose ps
  • Revisa las credenciales en .env
  • Comprueba los logs: docker-compose logs db

Error: "Failed to generate embedding"

  • Asegúrate de haber descargado el modelo de embeddings
  • Verifica que Ollama esté corriendo: docker-compose logs ollama
  • Comprueba la conectividad: docker exec -it localmind_app curl http://ollama:11434

La aplicación está lenta

  • Considera usar modelos más pequeños (ej: llama2:7b en lugar de versiones más grandes)
  • Aumenta los recursos asignados a Docker
  • Verifica el uso de CPU/RAM: docker stats

📝 Licencia

Este proyecto es de código abierto. Consulta el archivo LICENSE para más detalles.

🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor:

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📧 Soporte

Para preguntas y soporte, abre un issue en el repositorio.


LocalMind - Tu asistente RAG privado y seguro 🧠

About

Tu espacio de trabajo de IA privado y local. RAG seguro con Docker en minutos. Open Source.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors