Un asistente que responde con la documentación interna de una organización hace dos cosas: busca los fragmentos más relevantes para la pregunta y se los entrega a un modelo de lenguaje para que redacte la respuesta. Esa arquitectura se conoce como RAG. El riesgo aparece en cuanto la documentación no es igual de visible para todo el mundo: nóminas, contratos, expedientes disciplinarios, ofertas en curso.

La pregunta que conviene hacerse antes de desplegar nada es sencilla: ¿en qué momento se comprueba qué puede ver la persona que pregunta?

Filtrar después no basta

La forma más rápida de montar un asistente es indexarlo todo, buscar sobre todo y, al final, quitar de la respuesta lo que el usuario no debería ver. Tiene tres problemas.

  • El modelo ya lo ha leído. Si un fragmento restringido entra en el contexto, la respuesta puede parafrasearlo aunque después se oculte la cita. Lo que se filtra es la referencia, no el contenido.
  • La ausencia también informa. Un mensaje como «hay resultados que no puedes ver» revela que existe documentación sobre ese tema, y a veces eso es justo lo confidencial.
  • Las respuestas empeoran. El buscador devuelve un número fijo de fragmentos. Si la mayoría están vetados para ese usuario, los que sí puede ver se quedan fuera y el asistente contesta peor de lo que podría.

Filtrar antes de buscar

La alternativa es que el permiso forme parte de la búsqueda:

  1. Cada fragmento se indexa junto con sus datos de acceso: grupos autorizados, nivel de clasificación y vigencia.
  2. La consulta llega con la identidad de quien pregunta, no solo con el texto.
  3. El buscador aplica el filtro al recuperar. Lo que no está permitido no entra entre los candidatos.

Con esto el modelo solo recibe lo que esa persona podría abrir por su cuenta. No hay nada que ocultar después, porque nunca llegó a estar ahí.

Lo que complica la práctica

La idea es simple; mantenerla correcta en el tiempo es el trabajo de verdad.

  • Los permisos cambian. Alguien deja un equipo, una carpeta cambia de dueño. El índice tiene que enterarse pronto, con sincronización incremental y con una caducidad que obligue a revalidar.
  • Los permisos se heredan. En casi todos los repositorios dependen de la carpeta y de grupos anidados. Hay que resolver esa herencia al indexar, no suponerla.
  • Un documento no es una unidad. Un informe puede tener un anexo reservado. El permiso se guarda por fragmento.
  • Las cachés filtran. Una respuesta guardada para acelerar el servicio no puede servirse a otro usuario con otros permisos.
  • Hace falta registro. Para cada respuesta conviene guardar qué fragmentos se usaron y con qué identidad. Sin eso no se puede auditar ni investigar una incidencia.

¿Cómo comprobar que funciona?

No basta con confiar en el diseño. Estas tres pruebas son baratas y detectan la mayoría de los fallos:

  1. La misma pregunta con dos perfiles. Un usuario con acceso y otro sin él preguntan lo mismo. La segunda respuesta no debe contener nada del documento restringido, ni siquiera reformulado.
  2. Preguntas trampa. Se pregunta directamente por datos que solo aparecen en documentos reservados. La respuesta correcta es que no hay información disponible.
  3. Revisión del registro. Se comprueba que en las respuestas del usuario sin acceso no figura ningún fragmento vetado entre los recuperados, no solo entre los citados.

Estas pruebas deben repetirse cada vez que cambie el índice, el modelo o el esquema de permisos. Lo razonable es automatizarlas como un conjunto de preguntas de control.

En resumen

Un asistente sobre documentación interna es tan seguro como su recuperación. Si los permisos se aplican antes de buscar, se sincronizan con el repositorio de origen y se verifican con pruebas, el modelo no puede filtrar lo que nunca recibió.

Si quieres ver cómo se aplica en la práctica, en Chat con tus documentos explicamos cómo lo construimos, y en el caso de uso de chatbot sobre tu documentación, cómo lo ponemos en marcha en una organización. Si tienes una carpeta con permisos que no quieres arriesgar, cuéntanos tu caso.