PLAUDERE INGENIERÍA

ENSEÑANDO A UN MODELO PEQUEÑO DE LENGUAJE A ENTENDER LO QUE SE LE PREGUNTA


Read in English.

Antecedentes:
En mi artículo anterior expliqué cómo se construyó el agente de soporte de Plaudere en torno al modelo Qwen (Alibaba) y la librería fuse. Aquel diseño funcionaba, pero era muy limitado, ya que se buscaba texto usando una aproximación léxica del significado. Cuando el usuario escribía con palabras distintas a las del texto, la búsqueda fallaba o devolvía algo vagamente relacionado, y el pequeño modelo de lenguaje (SLM), queriendo ser útil, intentaba compensar la ausencia de contexto con una invención. Anteriormente pensaba que el fallo era el modelo SLM. Después de analizar los logs en mayor detalle, pude entender que gran parte de las alucinaciones no eran un problema de generación sino de enrutado. El texto correcto existía, pero el sistema enviaba la pregunta a la fuente equivocada, o a ninguna, y el SLM improvisaba. Este artículo trata de cómo sustituí el uso de la librería fuse por MiniLM.

Por qué MiniLM:
MiniLM es un modelo compacto de embeddings de frases creado por Microsoft. No escribe texto. Convierte una frase en un vector de manera que las frases con significado parecido quedan cerca entre sí, aunque no compartan ninguna palabra. Es justo lo que el antiguo modelo fuse con algunos algoritmos semánticos intentaban imitar a mano. El modelo es lo bastante pequeño como para ejecutarse dentro del mismo entorno Node.js, pero tuve que crear una FastAPI dentro de la infraestructura para asegurar la escalabilidad del diseño. El reparto de trabajo ahora es muy claro. MiniLM entiende la pregunta y decide de dónde debe salir la respuesta. Qwen solo escribe la frase final, y únicamente cuando existe evidencia real que la sustente. Cada modelo es empleado según su utilidad real.

Detección de intención en dos etapas:
Toda pregunta pasa por dos revisiones de MiniLM antes de que el SLM reciba la tarea. La etapa 1 compara la pregunta con un conjunto de frases prototipo escritas para cada idioma (castellano, inglés y catalán). Cada grupo de frases representa una intención: saludo, despedida, agradecimiento, sobre el asistente, historial de conversación, búsqueda web explícita y los tres resúmenes según el contenido en el que se encuentre el usuario (web para cualquier página web de Plaudere, artículo y perfil de usuario). La frase más parecida gana y aporta una puntuación fija. La etapa 2 plantea otra pregunta: ¿qué fuente contiene realmente la respuesta? Los cuatro candidatos son el artículo, el perfil de usuario, la información de la web y el contexto general extraído mediante Wikipedia y DuckDuckGo. MiniLM puntúa la pregunta contra las primeras frases de cada fuente, y la puntuación final de una fuente es una mezcla ponderada de ambas etapas: una parte de intención fija y otra parte de búsqueda en el contenido. El artículo recibe un pequeño sesgo, porque una pregunta formulada mientras se lee un artículo suele tratar de ese artículo. Si nada alcanza una puntuación mínima, la pregunta se trata como ruido. Algunos casos nunca llegan a la etapa 2. Un saludo claro, un agradecimiento o una petición de resumir el artículo se responden mediante atajos, lo que ahorra tiempo y elimina el riesgo de que el SLM invente algo ante una petición trivial. La velocidad es importante en este acercamiento: solo se procesan unas pocas frases por fuente y las intenciones conversacionales ni siquiera se evalúan cuando la pregunta contiene contenido real.

Refinando el enrutamiento y el contexto:
La arquitectura demostró ser sólida sobre el papel, pero la puesta en marcha reveló matices operativos que exigieron ajustes precisos. Por ejemplo, la necesidad de diferenciar entre una orden general de resumen y una pregunta específica que compartiera terminología dio lugar al concepto de comando puro. Una consulta se clasifica como comando puro únicamente cuando sus términos clave pertenecen de forma estricta al vocabulario de intenciones nativo del idioma, construido de manera automatizada a partir de los recursos de texto sin reglas rígidas. Si el usuario introduce términos externos, el sistema redirige la consulta hacia la búsqueda de contenido dirigido.

De igual forma, el contexto web externo requirió un proceso riguroso de depuración. Las fuentes externas suelen incorporar elementos de formato o referencias ajenas que se neutralizan mediante filtros basados en la coincidencia de raíces léxicas, garantizando que solo permanezcan las frases verdaderamente pertinentes. La gestión del historial de conversación también se optimizó para evitar que los mensajes auxiliares del sistema, como estados de error o tiempos de espera, interfieran en el flujo del diálogo. Asimismo, el sistema de puntuación léxica evolucionó de un enfoque binario a una métrica proporcional basada en la frecuencia de los tokens, logrando una evaluación mucho más equilibrada de las fuentes. Por último, la lógica de respaldo en el enrutamiento se ajustó para que las rutas alternativas solo se activen cuando exista contenido válido de respaldo, asegurando que el agente aproveche siempre la fuente de mayor calidad disponible.

Ayudar a un SLM a ser más preciso:
Incluso con mejor enrutado, un modelo tipo SLM necesita barreras. El prompt pide una sola frase completa que incluya el sujeto, lo que eliminó los fragmentos sueltos. Tras la generación, una comprobación compara la respuesta con la evidencia: cualquier número que no aparezca en la evidencia ni en la pregunta se considera inventado, y lo mismo ocurre con las palabras repetidas de la pregunta que la evidencia nunca afirma. Cuando la comprobación falla y hay evidencia, el agente devuelve la mejor frase de la evidencia en lugar de una disculpa vacía. Con los fragmentos web, que ya son frases factuales, es más seguro devolver el mejor directamente que dejar que un modelo pequeño los reescriba y los corrompa.

Conclusiones y hoja de ruta:
La conclusión de este estudio es que la calidad de un agente RAG pequeño depende menos del generador y más de todo lo que ocurre antes. Entender la intención, elegir la fuente correcta y limpiar el contexto aportó más precisión que cualquier cambio de prompt. MiniLM dio a Plaudere una capa semántica real, y Qwen tiene ahora muchas menos probabilidades de inventar, porque rara vez se le pide responder sin evidencia. Nuestros objetivos futuros incluyen, entre otros:
-Descartar antes los resultados web irrelevantes, antes de que lleguen al contexto.
-Guardar en caché los embeddings de las frases de intención estáticas para reducir aún más la latencia.
-Probar versiones más recientes de modelos SLM, teniendo en cuenta que la parte de recuperación es más estable.
-Mantener la coherencia entre los tres idiomas, tanto en las frases de intención como en las respuestas.

Este proyecto sigue confirmando la misma idea: con ingenio y paciencia analizando y mejorando las respuestas continuamente, los modelos pequeños pueden ofrecer una IA útil y fiable en hardware muy limitado.

Example text

Example text

Example text

Example text

Example text

Mostrar más

Example text

Example text

Example text

Example text