Base de Conocimiento de Sofía

La Base de Conocimiento es una única fuente de verdad para la propiedad intelectual de Axel: sus frameworks (RoLoCoDePre, WORKIA, RICA, Método FIA), principios, metáforas, voz, casos reales, ICP y productos. Vive en la tabla knowledge_base de Supabase (la misma base que comparten FIA Copilot y el Engine de Sofía) para que se pueda editar sin deploy y la consulten múltiples agentes.

La administrás desde /admin/knowledge-base: crear, editar, archivar filas y generar embeddings.

Categorías

Cada fila tiene una category:

category Qué agrupa
framework Frameworks con nombre: RoLoCoDePre, WORKIA, RICA, Método FIA
principio Creencias núcleo (ej: "Primero claridad, después copiloto, recién autopiloto")
metafora Las analogías de Axel (auto/piloto, F1, sous-chef, LEGO…)
voz Cómo habla Axel / cómo debe sonar Sofía
caso Prueba social: casos reales con números
producto FIA Copilot, FIA Ventas, FIA Empresas, Diagnóstico
icp Quién es el alumno/cliente ideal y sus dolores

Cómo se consulta

Una fila tiene slug (identificador estable), summary (respuesta breve), content (desarrollo en Markdown), voice_notes (tono), tags y related. Solo se sirven filas con status = 'active'.

Hay tres formas de traer contenido (ver src/lib/knowledge-base.ts):

  • Por sluggetKnowledgeBySlug('workia') para una pregunta directa ("¿qué es WORKIA?").
  • Por categoríagetKnowledgeByCategory('caso') para listar, ordenado por priority.
  • SemánticamatchKnowledge(query) embebe la pregunta y usa el RPC match_knowledge_base (pgvector) para traer las filas más relevantes por significado.

El Engine de Sofía (otro repo, corre con service_role) consulta esta misma tabla. El cableado al chat in-app es un paso posterior: hoy la tabla queda creada, cargada y lista para consumir.

Editar el contenido

En /admin/knowledge-base:

  1. Seedear carga las filas semilla (no pisa ediciones manuales que ya hayas hecho).
  2. Generar embeddings vectoriza las filas que aún no tienen embedding (requiere OPENAI_API_KEY).
  3. Editar una fila recalcula su embedding automáticamente al guardar.

La fuente original de cada fila (source) apunta al Vault de Obsidian de Axel; si algo cambia ahí, se actualiza la fila acá.