Skip to main content
Glama
hani-ben-dhaou

Enterprise Big Data Copilot

Enterprise Big Data Copilot

Un copiloto de IA que convierte preguntas en lenguaje natural en SQL de Trino validado y consciente del esquema, utilizando RAG, herramientas MCP e inferencia local de LLM.

Resumen

Enterprise Big Data Copilot permite a los usuarios consultar plataformas de Big Data en lenguaje natural. Un pipeline de LangGraph recupera documentación relevante (RAG) y metadatos de esquema en vivo (MCP), genera SQL con un LLM local (Ollama), lo valida contra reglas de seguridad y esquema, y — cuando la plataforma es accesible — lo ejecuta en Trino y devuelve filas reales.

Related MCP server: Doris MCP Server

Características

  • Generación de Texto-a-SQL en lenguaje natural para Trino

  • Inferencia de LLM local con Ollama (sin API en la nube)

  • Recuperación RAG sobre documentación de Trino / Hive / Iceberg (Qdrant)

  • Generación consciente del esquema basada en metadatos de catálogo en vivo

  • Validación de SQL (aplicación de SELECT de solo lectura, verificación de análisis, anclaje de esquema) con un bucle de regeneración automática

  • Ejecución de consultas y recuperación de resultados de Trino en modo de mejor esfuerzo

  • Servidor Model Context Protocol (MCP) que expone herramientas de metadatos, consultas y perfiles

  • API compatible con OpenAI para Open WebUI

  • Trazado de pipeline de extremo a extremo con LangSmith

Arquitectura

flowchart LR
    User --> API
    API --> Agent
    Agent --> RAG
    RAG --> Qdrant
    Agent --> LLM
    Agent --> MCP
    MCP --> Trino
    Agent --> Validation
    Agent --> Response
    Response --> User

Stack Tecnológico

Tecnología

Propósito

Python + FastAPI

Backend y API REST/compatible con OpenAI

LangGraph

Orquestación del pipeline (RAG → esquema → SQL → validar → ejecutar)

Ollama

LLM local (llama3.2) y embeddings (mxbai-embed-large)

LangChain + Qdrant

Recuperación de documentos RAG

FastMCP

Servidor Model Context Protocol (herramientas)

LangSmith

Trazado y monitoreo del pipeline

Trino

Motor de consultas SQL (catálogo de demostración TPCH)

Open WebUI

Interfaz de chat (opcional)

Docker

Infraestructura contenerizada

Estructura del Proyecto

app/
├── agent/            # SQL agent + prompts (Ollama)
├── api/              # REST + OpenAI-compatible endpoints
├── core/             # Config, models, exceptions, logging
├── formatter/        # Response formatting
├── mcp/              # MCP server, client, catalog services
├── orchestrator/     # LangGraph pipeline
├── rag/              # Ingestion and retrieval (Qdrant)
├── services/         # Trino client
└── validator/        # SQL validation
tests/                # pytest suite
docker/               # App image + Trino config
docs/                 # RAG knowledge base
scripts/              # Document ingestion CLI

Comenzando

Requisitos previos

  • Python 3.11 o 3.12 (3.13 no es compatible)

  • Docker + Docker Compose

  • GPU opcional (Ollama puede ejecutarse en CPU)

Instalación

git clone https://github.com/hani-ben-dhaou/Enterprise-Big-Data-Copilot.git
cd entreprise-bigdata-copilot

python -m venv .venv
# Windows: .venv\Scripts\activate | macOS/Linux: source .venv/bin/activate

pip install -r requirements.txt
pip install -r requirements-dev.txt   # pytest

Configuración

cp .env.example .env

Variables clave (los valores predeterminados funcionan para desarrollo local):

Variable

Descripción

OLLAMA_BASE_URL / OLLAMA_MODEL

Servidor y modelo LLM (llama3.2)

OLLAMA_EMBED_MODEL

Modelo de embeddings (mxbai-embed-large)

QDRANT_HOST / QDRANT_PORT

Base de datos vectorial Qdrant

TRINO_HOST / TRINO_PORT / TRINO_CATALOG / TRINO_SCHEMA

Trino (catálogo predeterminado tpch, esquema tiny)

MCP_TRANSPORT

inprocess (predeterminado, recomendado en Windows) o sse

MCP_METADATA_SOURCE

inmemory (catálogo de demostración) o trino (metadatos en vivo)

ENABLE_SQL_EXECUTION

Ejecutar SQL validado en Trino

LANGCHAIN_TRACING_V2

Establecer true para habilitar el rastreo de LangSmith

LANGCHAIN_API_KEY

Tu clave API de LangSmith (el rastreo permanece desactivado si está vacía)

LANGCHAIN_PROJECT

Nombre del proyecto LangSmith (predeterminado copilot)

Ejecutar

# 1. Start infrastructure (Ollama, Qdrant, Trino)
docker compose up -d

# 2. Pull models and ingest documentation (Qdrant must be up)
docker exec -it copilot-ollama ollama pull llama3.2
docker exec -it copilot-ollama ollama pull mxbai-embed-large
python scripts/ingest_docs.py

# 3. Start the API
uvicorn app.main:app --reload --port 8000

# 4. Optional: standalone MCP server (SSE on :8001)
python -m app.mcp.server

Uso

Haz una pregunta en lenguaje natural:

curl -X POST http://localhost:8000/api/v1/query \
  -H "Content-Type: application/json" \
  -d '{"question":"Show me the top 10 customers by total revenue last month"}'

La respuesta incluye el SQL generado, una explicación, una puntuación de confianza, advertencias y — cuando la ejecución está habilitada — las filas de resultado:

{
  "question": "Show me the top 10 customers by total revenue last month",
  "sql": "SELECT ...",
  "explanation": "...",
  "confidence": 0.92,
  "warnings": [],
  "dialect": "trino",
  "results": [["42", "Acme", 98765.00]],
  "execution": {"status": "ok", "columns": ["id", "name", "revenue"], "row_count": 1, "truncated": false}
}

Otros endpoints: GET /api/v1/schema (listar catálogo), GET /api/v1/health y POST /v1/chat/completions (compatible con OpenAI, usado por Open WebUI).

Pruebas

pytest

La suite es hermética y se ejecuta sin una pila en vivo (146 pruebas).

Trazado y Monitoreo

Cada consulta del pipeline (recuperación RAG, búsqueda de esquema, generación de SQL, bucles de validación, ejecución) se puede rastrear con LangSmith. Crea una cuenta gratuita, obtén una clave API y establece: LANGCHAIN_TRACING_V2=true, LANGCHAIN_API_KEY=<tu clave> y opcionalmente LANGCHAIN_PROJECT=copilot. El rastreo permanece desactivado mientras no se configure ninguna clave.

Rastreo de LangSmith de una ejecución del pipeline del copiloto

Docker

docker compose ejecuta la pila completa:

Servicio

Contenedor

Puerto

Ollama

copilot-ollama

11434

Qdrant

copilot-qdrant

6333

Trino

copilot-trino

8080

Open WebUI

copilot-webui

3000

Copilot API

copilot-api

8000

MCP Server

copilot-mcp

8001

Los volúmenes con nombre persisten los modelos de Ollama, los datos de Qdrant y los datos de Open WebUI. El volumen ollama se declara external — créalo una vez si no está presente:

docker volume create ollama
docker compose up -d
docker compose ps
docker compose logs -f copilot-api
docker compose down

Nota para Windows: MCP sobre SSE real puede ser inestable en el bucle de eventos de Windows. Mantén MCP_TRANSPORT=inprocess para el desarrollo local en Windows; usa SSE en Linux/Docker.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides AI models with structured access to Trino's distributed SQL query engine, enabling LLMs to directly query and analyze data stored in Trino databases.
    3
    10
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables natural language querying of Apache Doris databases via LLM-powered SQL generation, execution, and metadata management through the MCP protocol.
    9
    Apache 2.0
  • F
    license
    A
    quality
    A
    maintenance
    Natural language to SQL engine with multi-connector support (PostgreSQL, MySQL, Snowflake, BigQuery, DuckDB), document QA, semantic caching, and self-hosted MCP server.
    9
    31 PyPI
    4
    -