RAGStack-Lambda

Procesamiento serverless de documentos y medios con chat de IA.

Documentación

RAGStack-Lambda-app icon

Apache 2.0 License Python 3.13 React 19

AWS Lambda AWS Bedrock AWS Transcribe AWS S3 AWS DynamoDB AWS Cognito

Procesamiento serverless de documentos y medios con chat de IA. Arquitectura scale-to-zero: sin costos de base de datos vectorial, sin costos por inactividad. Sube documentos, imágenes, video y audio; extrae texto con OCR o transcripción; consulta usando Amazon Bedrock o tu asistente de IA vía MCP.

¿PREGUNTAS? Deep WIKI

Características

  • ☁️ Arquitectura totalmente serverless (Lambda, Step Functions, S3, DynamoDB)
  • 🧠 NUEVO Embeddings multimodales de Amazon Nova para vectorización de texto e imágenes
  • 📄 Procesamiento y vectorización de documentos (PDF, imágenes, documentos de Office, HTML, CSV, JSON, XML, EML, EPUB) → almacenados en base de conocimiento administrada
  • 🎬 NUEVO Procesamiento de video/audio: transcribe voz con AWS Transcribe, buscable por marca de tiempo
  • 💬 Chat de IA con contexto aumentado por recuperación y atribución de fuentes
  • 📎 Citas de fuentes plegables con descargas de documentos opcionales
  • ⏱️ NUEVO Fuentes de medios con enlaces de marca de tiempo: haz clic para reproducir en la posición exacta
  • 🔍 Filtrado de metadatos: descubre automáticamente metadatos de documentos y filtra resultados de búsqueda
  • 🎯 Impulso de relevancia para resultados filtrados: prioriza coincidencias de filtros de metadatos
  • 🔄 Reindexación de la base de conocimiento: regenera metadatos para documentos existentes con configuraciones actualizadas
  • 🗑️ Gestión de documentos: reprocesa, reindexa o elimina documentos desde el panel
  • 🌐 Componente web para cualquier framework (React, Vue, Angular, Svelte)
  • 🚀 Despliegue con un clic
  • 💰 $7-10/mes (1000 documentos, Textract + Haiku)

Demo en vivo

EntornoURLCredenciales
Base Pipelinedhrmkxyt1t9pb.cloudfront.netguest@hatstack.fun / Guest@123
Project Showcaseshowcase-htt.hatstack.funInicia sesión como invitado

Base Pipeline: La herramienta principal de procesamiento de documentos: sube, aplica OCR y consulta documentos.

Project Showcase: Ve a RAGStack impulsando una aplicación real.

Inicio rápido

Opción 1: Despliegue con un clic (AWS Marketplace)

EL REPOSITORIO ESTÁ EN DESARROLLO ACTIVO Y CAMBIARÁ CON FRECUENCIA

Despliega directamente desde la consola de AWS: no se requiere configuración local:

  1. Suscríbete a RAGStack en AWS Marketplace (gratis, no es obligatorio: si te suscribes, los roles de Lambda aceptan automáticamente los acuerdos de modelos de Bedrock en la primera invocación)
  2. Haz clic aquí para desplegar
  3. Ingresa un nombre de stack (solo minúsculas, p. ej., "my-docs") y tu correo de administrador
  4. Haz clic en Create Stack (el despliegue tarda ~10 minutos)

Después del despliegue:

  • Revisa tu correo para obtener la contraseña temporal (de Cognito)
  • Ve a CloudFormation → tu stack → pestaña Outputs para encontrar la URL del panel (UIUrl)

Opción 2: Despliegue desde el código fuente

Para personalización o desarrollo:

Requisitos previos:

  • Cuenta de AWS con acceso de administrador
  • Python 3.13+, Node.js 24+
  • uv (gestor de paquetes de Python)
  • AWS CLI, SAM CLI (configurados)
  • Docker (para compilaciones de capas de Lambda)
git clone https://github.com/HatmanStack/RAGStack-Lambda.git
cd RAGStack-Lambda

# Install dependencies
uv sync

# Deploy (defaults to us-east-1 for Nova Multimodal Embeddings)
python publish.py \
  --stack-name my-docs \
  --admin-email admin@example.com

Opción 3: Despliegue de stack anidado

Despliega RAGStack como parte de un stack de CloudFormation más grande. Consulta la Guía de despliegue de stack anidado para más detalles.

Ejemplo rápido:

Resources:
  RAGStack:
    Type: AWS::CloudFormation::Stack
    Properties:
      TemplateURL: https://ragstack-quicklaunch-public.s3.us-east-1.amazonaws.com/ragstack-template.yaml
      Parameters:
        StackPrefix: 'my-app-ragstack'  # Required: lowercase prefix
        AdminEmail: admin@example.com

Integración del componente web

Consulta RAGSTACK_CHAT.md para la guía de integración del componente web.

Acceso a la API

Las integraciones del lado del servidor usan autenticación con clave de API. Obtén tu clave desde Panel → Configuración.

curl -X POST 'YOUR_GRAPHQL_ENDPOINT' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"query": "query { searchKnowledgeBase(query: \"...\") { results { content } } }"}'

El componente web usa autenticación IAM (no se necesita clave de API: se maneja automáticamente).

Cada pestaña de la interfaz muestra ejemplos de API del lado del servidor en una sección expandible.

Servidor MCP (integración con asistente de IA)

Usa tu base de conocimiento directamente en Claude Desktop, Cursor, VS Code, Amazon Q CLI y otras herramientas compatibles con MCP.

# Install (or use uvx for zero-install)
pip install ragstack-mcp

Agrega a la configuración MCP de tu asistente de IA:

{
  "ragstack-kb": {
    "command": "uvx",
    "args": ["ragstack-mcp"],
    "env": {
      "RAGSTACK_GRAPHQL_ENDPOINT": "YOUR_ENDPOINT",
      "RAGSTACK_API_KEY": "YOUR_API_KEY"
    }
  }
}

Luego pregunta de forma natural: "Busca en mi base de conocimiento documentos de autenticación"

Consulta la documentación del servidor MCP para instrucciones completas de configuración.

Arquitectura

Upload → OCR → Embeddings → Bedrock KB
                                ↓
 Web UI (Dashboard + Chat) ←→ GraphQL API
                                ↓
 Web Component ←→ AI Chat with Sources

Uso

Documentos

Sube documentos en varios formatos. La detección automática enruta al procesador óptimo:

TipoFormatosProcesamiento
TextoHTML, TXT, CSV, JSON, XML, EML, EPUB, DOCX, XLSXExtracción directa con análisis inteligente
OCRPDF, JPG, PNG, TIFF, GIF, BMP, WebP, AVIFTextract o OCR de visión de Bedrock (WebP/AVIF requieren Bedrock)
MediosMP4, WebM, MP3, WAV, M4A, OGG, FLACAWS Transcribe → segmentos de 30 s → buscable con marcas de tiempo
Paso directoMarkdown (.md)Copia directa

Tiempo de procesamiento: UPLOADED → PROCESSING → INDEXED (normalmente 1-5 min para texto, 2-15 min para OCR, 5-20 min para medios)

Imágenes

Sube JPG, PNG, GIF, WebP con pies de foto. Tanto el contenido visual como el texto del pie de foto son buscables.

Raspado web

Raspa sitios web hacia la base de conocimiento. Consulta Raspado web.

Video y audio

Sube archivos MP4, WebM, MP3, WAV, M4A, OGG o FLAC. El habla se transcribe con AWS Transcribe y se segmenta en bloques de 30 segundos para la búsqueda. Las fuentes incluyen marcas de tiempo (p. ej., "1:30-2:00") con enlaces en los que se puede hacer clic para reproducir en la posición exacta.

Características:

  • Diarización de hablantes (identifica quién dijo qué)
  • Idioma configurable (más de 30 idiomas compatibles)
  • Fuentes vinculadas a marcas de tiempo en las respuestas del chat

Consulta Configuración para los ajustes de idioma y hablantes.

Chat

Haz preguntas sobre tu contenido. Las fuentes muestran de dónde provienen las respuestas.

Documentación

Desarrollo

npm run check  # Lint + test all (backend + frontend)

Opciones de despliegue

Despliegue directo

# Full deployment (defaults to us-east-1)
python publish.py --stack-name myapp --admin-email admin@example.com

# Skip dashboard build (still builds web component)
python publish.py --stack-name myapp --admin-email admin@example.com --skip-ui

# Skip ALL UI builds (dashboard and web component)
python publish.py --stack-name myapp --admin-email admin@example.com --skip-ui-all

# Enable demo mode (rate limits: 5 uploads/day, 30 chats/day; disables reindex/reprocess/delete)
python publish.py --stack-name myapp --admin-email admin@example.com --demo-mode

Publicar en AWS Marketplace (mantenedores)

Para actualizar la plantilla de despliegue con un clic:

python publish.py --publish-marketplace

Esto empaqueta la aplicación y la sube a S3 para el despliegue con un clic.

Nota: Actualmente requiere us-east-1 (Nova Multimodal Embeddings). Cuando esté disponible en otras regiones, usa --region <region>.

Agradecimientos

Este proyecto se inspiró en: