KBIA
Knowledge Base IA para bots y chats
API multi-tenant que conecta tus conversaciones con bases de conocimiento en Amazon Bedrock, con consola de operación y trazabilidad.
Un producto de
Producto
Qué es KBIA
KBIA significa Knowledge Base + IA. Expone un endpoint de pregunta/respuesta alimentado por Amazon Bedrock Knowledge Base, aislado por cuenta (tenant), con panel para configurar clientes, probar consultas y auditar uso.
Arquitectura
Cómo viaja una pregunta
El bot no habla con Bedrock directamente: autentica, resuelve el tenant y KBIA orquesta RetrieveAndGenerate con la configuración de esa cuenta.
-
1. Basic Auth
El cliente envía
Authorization: Basic. KBIA valida contra el servicio de autenticación externo (AuthServiceUrl). -
2. Tenant = AccountId
El
accountIddel usuario activo se convierte en TenantId. Se carga la configuración en MongoDB Atlas (knowledge base id, modelo, límites). -
3. Bedrock RAG
Con
UseFakeBedrock=false, se invoca Amazon Bedrock Knowledge Base. En local puede simularse con fake. - 4. Respuesta y auditoría Se devuelve la respuesta al bot, se registran traces y consumo de tokens por cuenta y día/mes.
Integradores
API pública
Pensada para bots, IVR y canales de chat. Un endpoint principal de pregunta con contexto conversacional en memoria de proceso.
Autenticación: Basic Auth vía servicio externo. El
AccountId debe mapear a un cliente activo en KBIA.
Contrato típico
{
"question": "¿Cuál es el horario de atención?",
"sessionId": "opcional-para-contexto"
}
Auth externo (resumen)
- KBIA reenvía el header Basic al
AuthServiceUrl(HTTPS). -
Respuesta esperada con
user.accountId,user.userState = Active, username/email para auditoría. - Sin AccountId válido o usuario inactivo → 401.
Rutas admin (JWT Bearer)
| Área | Prefijo | Uso |
|---|---|---|
| Auth admin | /ai/api/v1/Admin/auth/* |
Login, bootstrap SuperAdmin, status |
| Clientes | /ai/api/v1/Admin/tenants |
CRUD de cuentas / knowledge bases |
| Usuarios | /ai/api/v1/Admin/users |
Operadores de la consola |
| Playground | UI en /admin/playground |
Probar ask multi-cliente sin el bot |
| Traces | /ai/api/v1/Admin/traces |
Historial y detalle de consultas |
Operación
Consola de administración
Panel Vue embebido en la misma API. Acceso con JWT; el primer SuperAdmin se crea una sola
vez con AdminBootstrapToken.
- Dashboard — visión de clientes y actividad reciente.
- Clientes (tenants) — AccountId, IDs de Knowledge Base Bedrock, límites y estado.
- Playground — selecciona un cliente demo o real y prueba preguntas.
- Traces — request id, latencia, tokens y resultado para soporte.
- Usuarios — roles de operadores (SuperAdmin y demás).
Datos
Multi-tenant sobre MongoDB Atlas
Persistencia en MongoDB (migración desde DynamoDB). Sin Redis: caché
IMemoryCache en el proceso de la instancia.
tenants— configuración por AccountId / TenantId.token_usage— consumo agregado por día y mes.traces— auditoría de cada ask.admin_users— operadores de la consola.
Seguridad
Controles incluidos
Endurecimiento alineado a OWASP: límites de cuerpo, rate limiting por tenant e IP, JWT con clave ≥32 caracteres, bootstrap de un solo uso y validación HTTPS del auth externo.
- Rate limit ask por cuenta (
Security__TenantAskPermitLimit). - Rate limit admin e intentos fallidos de login con lockout.
- Headers: HSTS (Caddy), nosniff, frame deny, CSP en consola y landing.
- Swagger cerrado en producción detrás de Caddy.
- CORS restringido a orígenes configurados (
CorsAllowedOrigins).
Plataforma
Stack técnico
Pensado para una instancia Linux compartida (Docker + Caddy), el mismo patrón que otros productos EasySoft en la VPS.
- API .NET 8 · Clean Architecture · Autofac · Serilog
- UI Vue 3 + Vite (Outfit / Manrope)
- AI Amazon Bedrock Knowledge Base
- Runtime Docker · Caddy TLS · puerto local 8110