Legal RAG Venezuela
Sistema de recuperación semántica aumentada por generación (RAG) especializado en la legislación venezolana. Diseñado para erradicar las alucinaciones de la IA tradicional mediante la recuperación vectorial de artículos normativos oficiales y síntesis analítica fundamentada en tiempo real.
El Reto: Precisión Absoluta en Respuestas Jurídicas
Por qué los modelos de lenguaje generales fallan al interpretar leyes venezolanas y cómo lo resuelve este RAG.
Limitación de los LLMs Genéricos
Cuando se le pregunta a ChatGPT o Claude sobre un artículo específico de la Constitución de 1999 o del Código Civil venezolano, el modelo recurre a memoria probabilística, lo que genera alucinaciones críticas, mezcla de leyes de otros países (México, España) o citas de artículos derogados.
- Invención de números de artículos inexistentes.
- Mezcla de legislación venezolana con doctrina extranjera.
- Falta de certeza para abogados, auditores y aseguradoras.
La Solución: Recuperación Vectorial Estricta
Legal RAG no permite que la IA invente. Primero convierte la consulta en un vector denso, recupera de PostgreSQL los artículos oficiales exactos con mayor similitud semántica y fuerza al LLM a fundamentar cada afirmación citando obligatoriamente la norma, capítulo y artículo.
- Trazabilidad legal 100% verificable contra la Gaceta Oficial.
- Respuestas objetivas, desprovistas de opiniones o sesgos.
- Visor de artículos de respaldo accesibles al usuario con un clic.
Arquitectura de Componentes & Pipeline
Cada capa fue diseñada bajo estándares de seguridad corporativa, baja latencia y soberanía de datos.
1. Parser Jerárquico & Ingesta
A diferencia de los segmentadores por cantidad fija de tokens (que cortan artículos a la mitad), nuestro motor implementa un parser sintáctico de documentos jurídicos en C#:
- Preservación de Estructura: Reconoce Títulos, Capítulos, Secciones, Artículos y Epígrafes.
- Inyección de Contexto: Cada chunk vectorial almacena la ruta completa (ej.
Ley de Seguros > TÍTULO II > Capítulo I > Art. 6). - Extracción Robusta: Uso de
PdfPigpara procesamiento de PDFs con caracteres especiales y dobles columnas.
2. Embeddings Locales en Ollama
La vectorización de las leyes y de las preguntas no depende de OpenAI ni de servicios externos de terceros:
- Modelo:
nomic-embed-text(768 dimensiones). - Privacidad: Los textos jurídicos nunca salen del VPS para ser embebidos.
- Rendimiento: Vectorización en menos de 100 ms por consulta dentro de la red privada de Docker.
3. PostgreSQL 16 + pgvector HNSW
Almacenamiento de vectores de alta dimensionalidad con índices aproximados de vecinos más cercanos (ANN):
- Índice HNSW:
vector_cosine_opscon parámetros optimizadosm=16,ef_construction=64. - Operador Coseno: Búsqueda ultrarrápida mediante el operador
<=>nativo en C/PostgreSQL. - Latencia de consulta: Entre 40 y 180 ms para buscar entre más de 2.800 artículos vectorizados.
4. ASP.NET Core 8 Web API
El cerebro orquestador que gestiona la seguridad, el rate limiting y el streaming en tiempo real:
- Streaming SSE: Eventos Server-Sent (
text/event-stream) para transmitir token a token (TTFT < 1s). - Rate Limiting Sliding Window: 30 req/min para búsquedas y 5 intentos/min para login por IP.
- Anti-Injection Guard: Sanitización activa de queries para neutralizar jailbreaks y fuga de prompts.
5. Frontend Conversacional (Angular 18)
Experiencia de usuario de última generación inspirada en las principales plataformas de IA conversacional:
- Chat tipo ChatGPT: Caja de entrada inferior fija, preguntas del usuario y respuestas IA a la izquierda.
- Diálogo Multi-turno: Mantiene la memoria conversacional en la sesión activa para preguntas de seguimiento.
- Límite Adaptativo: 5 preguntas en modo público y preguntas ilimitadas para usuarios autenticados.
- Telemetría en Modal: Medición en vivo del tiempo total, TTFT, latencia de Ollama y de Postgres.
6. Autenticación Microsoft Entra ID
Seguridad corporativa para el control de acceso administrativo e ingesta de nuevas normas:
- Estándar OAuth 2.0 PKCE: Autenticación moderna con
@azure/msal-angulary@azure/msal-browser. - Claims Transformation: Transformación de tokens JWT en el backend para validar claims de administración.
- Rutas Protegidas: Ingesta de PDFs y cambio de modelos protegidos bajo políticas
[Authorize(Roles = "Admin")].
Topología Docker Compose en el Servidor
Todos los servicios se ejecutan de manera aislada en una red bridge interna sin exponer la base de datos al exterior.