Great Another Non-trivial Dynamic Amazing Layered File Searcher
GandalFS no es solo un buscador; es el guardián de la sabiduría de tu empresa. Es un sistema RAG (Retrieval-Augmented Generation) de alto rendimiento diseñado para indexar, buscar y comprender archivos corporativos (PDF, XLSX, CSV, TXT) mediante una arquitectura híbrida que combina lo mejor de la búsqueda clásica y la inteligencia artificial semántica.
- Búsquedas de Élite: Indexar y buscar archivos con gran velocidad y sencillez, logrando resultados precisos de forma inmediata.
- Interfaz Reactiva: Visualizar tus documentos de forma atractiva, con una interfaz veloz que responde en tiempo real a tus interacciones.
- Gestión de Conocimiento: Organizar tus documentos, filtrar resultados, crear tags personalizados y etiquetar tus archivos según las necesidades de tu entorno.
- Asistente de IA: Un compañero que no solo potencia las búsquedas, sino que resuelve dudas sobre tus archivos y recomienda documentos similares para hacer tus datos más significativos.
Nuestro proyecto no ha sido concebido como una arquit.El objetivo es dotar al usuario final de flexibilidad y control absoluto sobre la aplicación.
GandalFS está diseñado bajo el principio de responsabilidad única. Esto permite una evolución constante del sistema:
- Nuevos Formatos: Añadir compatibilidad con nuevos tipos de archivos (como
.docx,.pptxo.html) es tan fácil como integrar un nuevo módulo de procesamiento. - Campos Personalizados: La arquitectura permite añadir campos de metadatos personalizados al buscador para adaptarse a múltiples entornos empresariales.
- Modelos Intercambiables: Gracias a la separación clara entre Front y Back (vía FastAPI), es sencillo sustituir o añadir nuevos modelos de lenguaje o motores de embedding.
- Búsqueda Híbrida de 3 Vías (RRF): Implementamos Reciprocal Rank Fusion (RRF) combinando:
- Match Simple: Búsqueda por palabras clave tradicionales.
- Frase Exacta: Para encontrar términos técnicos o nombres específicos.
- K-NN Semántico: Entendimiento contextual profundo mediante embeddings.
- Procesamiento Inteligente de Documentos: Limpieza automática de ruido en PDFs (headers, footers y artefactos de OCR) para que la IA se centre solo en el contenido relevante.
- IA "On-Premise" con Ollama: Consultas inteligentes sobre tus documentos sin que los datos salgan de tu infraestructura, garantizando la máxima privacidad empresarial.
- Optimización de RI (Retrieval Information):
- Normalización Min-Max: Para homogeneizar las puntuaciones de diferentes métodos de búsqueda[cite: 1, 2].
- Chunking Robusto: Segmentación por frases para texto continuo o fallback a palabras para documentos con OCR deficiente.
- Prefijos de Modelo E5: Segmentación con solapamiento (overlap) para localizaciones precisas de segmentos de información.
| Componente | Tecnología |
|---|---|
| Motor de Búsqueda | OpenSearch (con soporte k-NN y Faiss) |
| Orquestador AI | Ollama (Modelo Qwen 2.5 7B) |
| Embeddings | Sentence-Transformers (Multilingual E5 Small) |
| Backend API | FastAPI |
| Procesamiento | PyMuPDF (fitz), PyPDF2, Tesseract (OCR) |
| Lógica de Datos | Pandas, Openpyxl |
- Docker (para OpenSearch) []
- Ollama (modelos
qwen2.5:7b-instructeintfloat/multilingual-e5-small) - Python 3.10+
- Tesseract OCR
- Levantar el motor de búsqueda:
docker compose -f backend/docker-compose.yml -d
- Instalar dependencias:
pip install -r requirements.txt
- Inicializar el sistema:
python3 -m uvicorn endpoint:app --reload
- Iniciar la GUI
npm install npm run dev
GandalFS ofrece versatilidad total en su interacción:
- Iniciar el índice:
python cli.py init - Indexar un documento:
python cli.py index - Búsqueda técnica:
python cli.py search - Preguntar a la IA:
python cli.py ask_ai
La aplicación cuenta con una interfaz web dedicada, diseñada para ser el centro de operaciones donde gestionar tus archivos de forma visual y reactiva.
Este proyecto es software libre, distribuido bajo la GNU General Public License v3. Consulta el archivo LICENSE para más detalles.
"Un buscador no llega tarde, ni pronto, llega exactamente cuando se le necesita."









