Saltar al contenido

Aislamiento RAG Multi-Inquilino y Fuga en Pool de Conexiones

Aísla la contaminación de contexto entre inquilinos a través de Fastify, PostgreSQL RLS, pgvector y workers de BullMQ bajo alta concurrencia.

TypeScript · PostgreSQL · pgvector · Supabase RLS · BullMQ / Redis · Fastify

Reloj
45 min
Mediana
38 min
Tasa de entrega
29%
Intentos
24

Origen

Desarrollado por AGISports sobre patrones e incidentes reales de producción.

Incidente de Producción Crítico

Fuga de Vectores RAG entre Inquilinos Rivales

Una plataforma SaaS enterprise procesa búsquedas semánticas e ingesta de documentos en tiempo real para cientos de empresas en una base de datos PostgreSQL compartida con pgvector y Supabase Row Level Security (RLS).

Durante picos de tráfico concurrente, los clientes reportan que están recibiendo fragmentos de vectores RAG pertenecientes a empresas competidoras en las respuestas generadas por el sistema.


Arquitectura del Sistema · 5 Componentes Activos

01 / API GATEWAY
Fastify Framework

Recibe peticiones HTTP, valida tokens JWT y extrae el tenant_id de la sesión.

02 / DATABASE LAYER
PostgreSQL + RLS + pgvector

Políticas RLS en tabla de vectores e índices HNSW para embeddings de 1536 dimensiones.

03 / CONNECTION POOL
pg-pool Engine

Pool de conexiones TCP reutilizables gestionadas para alta concurrencia.

04 / ASYNC QUEUE
BullMQ + Redis

Procesamiento en segundo plano de re-ranking y vectorización de documentos grandes.

05 / HARNÉS DE PRUEBAS LOCAL Y CARGA
Suite de Integración & Carga Concurrente

Tests de desarrollo locales (npm test) y simulador de carga concurrente multi-inquilino (npm run test:load).


Regla de Oro del Envío

45 Minutos Máximo · 1 Único Git Push

Dispones de un presupuesto de reloj de máximo 45 minutos para diagnosticar el incidente con tu editor o agente de IA y realizar UN ÚNICO git push a tu repositorio forkeado cuando consideres que la solución está 100 % verificada.

Cómo se hace

  1. 01Forkea el repositorio de la arena, con todo el código fuente y las suites de tests del mantenedor.
  2. 02Empieza a grabar tu pantalla completa antes de abrir el repositorio. Lo que se puntúa es cómo decides, así que la pantalla tiene que enseñarlo.
  3. 03Orquesta tu IA (Claude Code, Cursor, Antigravity, Codex...) en local. No hagas pruebas a ciegas ni pushes de ensayo.
  4. 04Realiza UN ÚNICO git push a tu repositorio cuando consideres que la solución está lista. La marca de tiempo en verde certifica tu tiempo final.

Lee todo lo anterior antes de empezar.

Empezar comparte tu pantalla, crea tu arena y arranca el reloj — en ese orden, y nada de eso se deshace. Tienes un intento y un push.