Un buscador corporativo basado en RAG y búsqueda semántica local, sin dependencias en APIs externas.
MeigaSearch resuelve el problema de búsqueda a través de documentos corporativos dispersos (PDFs, Excel, Word, PPTX, CSV, texto, imágenes). Utiliza modelos de IA locales para indexación y búsqueda semántica, manteniendo la soberanía de los datos sin depender de servicios en la nube.
- Ingesta Mágica: Sube documentos y se indexan automáticamente con OCR avanzado (Tesseract) y extracción de metadatos técnicos (ExifTool).
- Global RAG Chat: Chatea con toda tu base de conocimientos mediante Streaming (SSE) y obtén respuestas con citas precisas a los documentos originales.
- Búsqueda Híbrida Inteligente: Combina búsqueda semántica (vectores) + búsqueda léxica (exacta) en paralelo para obtener resultados óptimos.
- Inferencia de Categorías: Clasificación automática del contenido en áreas como RRHH, Finanzas, Legal, Técnico, Comercial, Sostenibilidad e IT.
- Provider-Agnostic LLM: Soporte dinámico para proveedores locales (Qwen/SmolLM) y externos (OpenAI, Gemini, Claude) configurable en caliente.
- Filtros Avanzados: Búsqueda por autor, mes, año, creador del documento y metadatos técnicos específicos.
- Autenticación JWT: Control de acceso por roles (admin, editor, normal) con cifrado
bcrypt. - Arquitectura Robusta: Qdrant como base de datos vectorial y Celery + Redis para procesamiento asíncrono.
| Tipo | Extensiones |
|---|---|
| Documentos | .pdf, .docx, .pptx, .txt, .md, .html |
| Datos | .csv, .xlsx, .json, .xml |
| Imágenes | .png, .jpg, .jpeg |
-
Configura el entorno:
cd meiga-search/backend cp .env.example .env # Configura tus API Keys si usas modelos externos
-
Levanta los servicios:
docker compose up -d
-
Accede a la interfaz:
- Frontend: http://localhost:8000
- API Docs (Swagger): http://localhost:8000/docs
| Usuario | Password | Rol |
|---|---|---|
admin |
admin123 |
Administrador |
empleado |
normal123 |
Normal |
lector |
lector123 |
Lector |
editor |
editor123 |
Editor |
Puedes cambiar el proveedor de inteligencia artificial en tiempo real desde el panel de administración o mediante la API:
curl -X POST http://localhost:8000/api/system/settings \
-H "Authorization: Bearer ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"provider": "gemini",
"api_key": "YOUR_GEMINI_KEY",
"model_name": "gemini-1.5-pro"
}'Proveedores soportados: local, openai, gemini, claude.
Endpoint: GET /api/search
Parámetros:
q: Consulta de búsqueda (ej. "factura de electricidad")mode:semantic(default) otext(exacto)month/year: Filtrado cronológicotype:pdf,txt,csv,xlsx,imageauthor: Filtrar por autor extraído de metadatos
graph TD
subgraph Frontend ["💻 Frontend (SPA)"]
UI["Vanilla JS + CSS Glassmorphism<br/><b>Marked.js</b> (Markdown)"]
end
subgraph Backend ["⚙️ API & Inteligencia"]
FAST["<b>FastAPI</b> (Python 3.11+)<br/>JWT + Pydantic v2"]
AI["<b>AI Engine:</b> LLMs & Embeddings<br/>(OpenAI, Gemini, Local)"]
end
subgraph Async ["⚡ Procesamiento & Ingesta"]
WORK["<b>Celery + Redis</b><br/>(Pipeline asíncrono)"]
EXT["<b>Extractores:</b> OCR (Tesseract)<br/>ExifTool + PyMuPDF"]
end
VDB[("🔍 Vector DB<br/><b>Qdrant</b>")]
UI <--> FAST
FAST <--> AI
FAST <--> VDB
FAST --> WORK
WORK --> EXT
EXT --> VDB
%% Estilos de alta legibilidad (Texto oscuro sobre fondo claro)
style Frontend fill:#e1f5fe,stroke:#01579b,color:#000
style Backend fill:#fff3e0,stroke:#e65100,color:#000
style Async fill:#f3e5f5,stroke:#4a148c,color:#000
style VDB fill:#e8f5e9,stroke:#1b5e20,color:#000
style UI fill:#fff,stroke:#01579b,color:#000
style FAST fill:#fff,stroke:#e65100,color:#000
style AI fill:#fff,stroke:#e65100,color:#000
style WORK fill:#fff,stroke:#4a148c,color:#000
style EXT fill:#fff,stroke:#4a148c,color:#000
Note
¿Qué es Marked.js? Marked.js es un compilador de Markdown de alto rendimiento. En MeigaSearch, lo utilizamos en el frontend para transformar las respuestas de la IA (que vienen en formato Markdown) en HTML limpio y formateado (negritas, listas, bloques de código), garantizando una experiencia de lectura premium en el chat.
cd meiga-search/backend
pytest tests/MeigaSearch se distribuye bajo la licencia Apache 2.0. Ver LICENSE.
Desarrollado durante el HackUDC 2026. Profesionalmente adaptado para entornos corporativos seguros.