Skip to content

berniehans/AxiomRAG

Repository files navigation

AxiomRAG

Python FastAPI NVIDIA Qdrant

Repositorio de grado de producción que implementa una arquitectura Retrieval-Augmented Generation (RAG) asíncrona, enfocándose en la soberanía de los datos (local-first) y el rendimiento determinista escalado sobre aceleradores de hardware NVIDIA.

⚙️ Enterprise Features (Data Engineering & Hardware)

El sistema integra componentes rigurosos para solventar los fallos típicos (alucinaciones, pérdida del contexto y cuellos de botella CPU) de los RAG convencionales:

  • Aceleración Nativa CUDA: Inferencia optimizada explícitamente para arquitecturas NVIDIA Ampere empleando CUDA 12.4. Esto permitió reducir la latencia del componente de Re-Ranking logrando tiempos consistentes de < 500ms en una RTX 3060.
  • Recuperación "Parent-Child": Implementación de separación estricta: Búsqueda focalizada vectorial sobre fragmentos agudos (Hijos Semánticos de 600 tokens) para obtener puntajes de precisión de ~0.95, combinada con la inyección del archivo Global (Padres Completos) al payload del LLM, erradicando el problema de la pérdida de contexto.
  • Búsqueda Híbrida Ponderada: Ensamble matemático (50/50 Ensemble) de motor léxico CustomBM25Retriever (Sparse) y motor vectorial semántico BGE-M3 (Dense) previniendo "Zero Matches" en terminología técnica y acrónimos severos.
  • Ingesta Asíncrona (Non-Blocking): Pipeline encapsulado sobre FastAPI BackgroundTasks. Absorbe 289 documentos técnicos persistiendo la evaluación global sin detener el hilo principal ni agotar el Thread Pool de las peticiones HTTP del usuario.

📊 Observabilidad y MLOps (Baseline Heurístico)

No se asume el rendimiento; se mide. Operamos auditorías automatizadas contra un "Golden Dataset" (batería de pruebas de ingenieros humanos) garantizando que nuestras refactorizaciones no degraden la calidad generativa previniendo cualquier alucinación.

Línea Base Cuantitativa con Framework Ragas v0.3+:

Métrica MLOps Score Evaluado Significado Operativo
Faithfulness 0.6061 Nivel de fidelidad restrictiva de la IA contra el contexto extraído.
Context Precision 0.6667 Exactitud del Reranker midiendo el ratio de ruido (basura léxica o vectorial) del material recuperado.

🌊 Arquitectura de Ingestión y Recuperación

graph LR
    %% Definición de Estilos
    classDef ingestion fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
    classDef retrieval fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px;
    classDef generation fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;
    classDef eval fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;

    subgraph Ingesta ["📦 FASE DE INGESTA (GPU)"]
        direction TB
        A["Documentos: PDF/XLSX"] --> B["Semantic Chunking"]
        B --> C{"Indexación Dual"}
        C --> D[("Qdrant: Child Chunks")]
        C --> E[("LocalStore: Parent Docs")]
    end

    subgraph Busqueda ["🔍 RECUPERACIÓN HÍBRIDA"]
        direction TB
        F["User Query"] --> G["Hybrid Search: BM25 + Vector"]
        G --> H["Re-Ranking: Cross-Encoder"]
        H --> I["Top 3 Gold Context"]
    end

    subgraph Gen ["🤖 GENERACIÓN Y SEGURIDAD"]
        direction TB
        I --> J["LLM: OpenRouter/Groq"]
        J --> K["Guardrails: Score Check"]
        K --> L["Respuesta con Citaciones"]
    end

    subgraph MLOps ["🧪 EVALUACIÓN Y CALIDAD"]
        direction TB
        L --> M["RAGAS Metrics"]
        M -. "Feedback Loop" .-> G
        M -. "Tuning" .-> B
    end

    %% Conexiones principales
    Ingesta ==> Busqueda
    Busqueda ==> Gen
    Gen ==> MLOps

    %% Aplicación de Clases
    class A,B,C,D,E Ingesta;
    class F,G,H,I Busqueda;
    class J,K,L Gen;
    class M MLOps;
Loading

🏗️ Estructura del Código Fuente

El diseño modular respeta el patrón de "Separation of Concerns" bajo tipado estricto PEP 484:

📦 AxiomRAG
 ┣ 📂 docs/           # Base de conocimiento extendida de arquitectura y flujos.
 ┣ 📂 scripts/        # Orquestadores ejecutivos MLOps (run_ingestion.py, test_retrieval.py).
 ┣ 📂 src/ 
 ┃ ┣ 📂 api/          # Endpoints de FastAPI Server.
 ┃ ┣ 📂 agent/        # Lógica conversacional del Motor Generativo.
 ┃ ┣ 📂 retrieval/    # Lógica core de búsqueda (BM25, Qdrant, Cross-Encoders).
 ┃ ┣ 📂 services/     # Lógica de negocio encapsulada.
 ┃ ┗ 📂 repositories/ # Acceso integrado a datos (PostgreSQL, LocalStore).
 ┣ 📜 README.md       # Presentación e imagen principal del repositorio.
 ┣ 📜 ARCHITECTURE.md # Detalles de diseño arquitectónico y diagramas.
 ┣ 📜 agents.md       # Reglas unificadas y mapa cognitivo para Agentes MLOps.
 ┣ 📜 main.py         # Punto de entrada ASGI, Gestión HW (empty_cache via lifespan).
 ┗ 📜 pyproject.toml  # Dependencias nativas (uv) amarradas a GPU pytorch-cu124.

🚀 Ejecución y Despliegue (Docker)

Esta arquitectura está optimizada para ejecutarse en contenedores con soporte nativo para NVIDIA CUDA 12.4.

0. Configuración de Entorno

Crea un archivo .env basado en env.example con tus llaves de acceso:

  • OPENROUTER_API_KEY: Requerida para generación y evaluaciones.
  • HF_TOKEN: Opcional, para descarga de modelos protegidos.
  • OPENROUTER_BASE_URL: Por defecto https://openrouter.ai/api/v1.

1. Reconstrucción de la Imagen

Si realizaste cambios en la lógica de MLOps o en las dependencias de pyproject.toml, reconstruye la imagen base:

docker build -t axiomrag:latest .

2. Verificación de Hardware

Asegúrate de que el contenedor tiene visibilidad total de tu GPU RTX antes de iniciar el motor RAG:

docker run --rm --gpus all axiomrag:latest python -c "import torch; print(f'CUDA OK: {torch.cuda.is_available()} | GPU: {torch.cuda.get_device_name(0)}')"

🧪 Protocolo de Pruebas (MLOps)

El sistema cuenta con una suite de 19 tests automatizados que validan desde la extracción multimodal hasta la fidelidad de las respuestas.

Ejecución Total en Docker

Para certificar la imagen antes de un deploy, inyecta tus credenciales de OpenRouter mediante el archivo .env:

docker run --rm --gpus all --env-file .env axiomrag:latest pytest tests/ -v

Ejecución por Marcadores (Pytest)

Puedes segmentar las pruebas según el consumo de recursos definido en pytest.ini:

  • Tests de Integración (GPU + LLM): Valida el flujo Parent-Child y el re-ranking semántico.
    docker run --rm --gpus all --env-file .env axiomrag:latest pytest -m integration -v
  • Tests Rápidos (Lógica & Parsers): Valida esquemas de Pydantic y extracción de texto sin usar VRAM.
    docker run --rm axiomrag:latest pytest -m fast -v

📊 Métricas de Validación

Al finalizar las pruebas de integración, el sistema genera o actualiza el reporte de observabilidad:

  • Archivo: ragas_eval_metrics.json
  • Métrica Clave: Faithfulness (Fidelidad) > 0.60.

About

Industrial-grade self-corrective RAG engine with LangGraph, DeepSeek, CUDA 12.4 acceleration and hybrid search

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages