Construir con IA

Ajuste fino de modelos pequeños en el navegador para respuestas fiables con RAG

Un desarrollador redujo las alucinaciones en un modelo de 0.6B de parámetros refinando el estilo de los datos de entrenamiento en lugar de aumentar el tamaño del modelo, logrando mejores tasas de rechazo en búsquedas basadas en navegador.

Un pequeño cubo de vidrio con circuitos internos sobre un escritorio junto a papeles y una lupa
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

Bart de Goede publicó recientemente los resultados de un experimento de ajuste fino (fine-tuning) de un pequeño modelo de lenguaje para mejorar la generación aumentada por recuperación (RAG) directamente en el navegador. Mediante la iteración sobre cuatro conjuntos de datos de entrenamiento distintos en un Mac local, transformó un modelo de 0.6B de parámetros propenso a alucinar en un asistente más fiable que rechaza correctamente preguntas irresolubles. El modelo final, Qwen3-0.6B, impulsa ahora la función de búsqueda de su blog con significativamente menos errores que la versión base.

Qué ocurrió

El intento inicial de usar pequeños modelos de lenguaje para resumir resultados de búsqueda semántica fracasó porque los modelos frecuentemente alucinaban detalles no presentes en el texto fuente. De Goede hipotetizó que el ajuste fino podría enseñar al modelo a adherirse estrictamente a los pasajes proporcionados o a declarar explícitamente cuando la información faltara. Se propuso crear un conjunto de datos utilizando escritura técnica con licencia abierta de las comunidades de Go, Rust y Python, evitando sus propias entradas de blog para prevenir fugas de datos durante la evaluación.

El proceso involucró cuatro rondas de entrenamiento, cada una revelando trampas específicas en cómo los modelos pequeños aprenden de datos sintéticos. La primera versión empeoró el rendimiento al imitar el estilo verboso del modelo maestro, mientras que las iteraciones posteriores ajustaron el formato de respuesta para ser más corto y factual. La tercera versión emergió como el equilibrio más efectivo, reduciendo las respuestas erróneas en dos tercios en comparación con el modelo base, incluso si ocasionalmente se negaba a responder preguntas que técnicamente podría haber abordado.

Todo el código, los conjuntos de datos y los pesos finales del modelo fueron publicados públicamente. Esto permite a otros desarrolladores replicar la configuración, probarla en su propia documentación o reentrenar el modelo con prompts de sistema personalizados. Todo el pipeline de entrenamiento se ejecutó localmente en un M4 Mac mini, demostrando que el ajuste fino de alta calidad para tareas específicas de RAG no requiere enormes recursos de cómputo en la nube.

Cómo funciona

El sistema utiliza un mecanismo de recuperación que trocea documentos y los incrusta (embeddings) para búsqueda semántica. Cuando un usuario hace una pregunta, el sistema recupera los cuatro pasajes relevantes principales. Estos pasajes, junto con un prompt de sistema estricto, se introducen en el modelo Qwen3-0.6B que se ejecuta en el navegador mediante WebGPU o WebAssembly. El prompt instruye al modelo para que responda en un máximo de dos frases usando solo el texto proporcionado o que decline responder si los pasajes son insuficientes.

El entrenamiento se basó en destilación, donde un modelo más grande, Claude Opus 5.5, generó respuestas ideales para miles de preguntas sintéticas. De Goede utilizó LoRA (Low-Rank Adaptation) con la biblioteca mlx-lm para ajustar finamente el modelo pequeño. Cada ejecución de entrenamiento consistió en una época sobre 4.500 ejemplos, tomando aproximadamente 80 minutos. La idea clave fue que el modelo pequeño no podía sintetizar información a través de múltiples pasajes; solo podía extraer hechos específicos de pasajes individuales o negarse a responder.

Detalles clave

  • El modelo final es Qwen3-0.6B, ajustado específicamente para extraer hechos de cuatro pasajes recuperados.
  • El entrenamiento utilizó 2.193 documentos de los blogs de Go, Rust y Python bajo licencias permisivas.
  • La Versión 3 logró 16 respuestas fieles de 30, igualando la precisión del modelo base pero reduciendo las respuestas erróneas de nueve a tres.
  • El modelo rechazó correctamente responder todas las 15 preguntas que no estaban cubiertas por el material fuente.
  • Cada iteración de entrenamiento tomó alrededor de 1 hora y 20 minutos en un M4 Mac mini con 24 GB de RAM.
  • El conjunto de datos y el código son públicos, permitiendo a otros reentrenar el modelo para diferentes dominios como sitios de documentación.

Por qué importa

Para ingenieros que construyen sistemas RAG, este experimento destaca que el tamaño del modelo es menos crítico que la calidad de los datos para tareas específicas de extracción. Los modelos pequeños que se ejecutan en el navegador ofrecen beneficios de privacidad y baja latencia, pero carecen de la capacidad de razonamiento para sintetizar respuestas complejas. Al restringir la tarea a una simple extracción y rechazo, los desarrolladores pueden desplegar modelos ligeros que son robustos contra alucinaciones sin necesidad de inferencia costosa en el servidor.

El fracaso de la pérdida de validación para predecir el rendimiento en el mundo real es otra lección crucial. Las métricas estándar mostraron mejora mientras que la utilidad real del modelo se degradó, probando que las curvas de pérdida automatizadas no pueden reemplazar la evaluación manual en conjuntos de prueba retenidos. Los desarrolladores deben evaluar los puntos de control (checkpoints) basándose en el comportamiento específico que desean, como el rechazo correcto, en lugar de la fluidez lingüística general.

Este enfoque también democratiza el ajuste fino. Al demostrar que los modelos efectivos pueden entrenarse en hardware de consumo en menos de dos horas, reduce la barrera para que equipos personalicen modelos de código abierto para sus bases de conocimiento específicas. Cambia el enfoque de adquirir modelos más grandes a diseñar mejores datos de entrenamiento que coincidan con los límites cognitivos de arquitecturas más pequeñas.

Qué puedes hacer

  • Descarga el modelo bartdegoede/qwen3-0.6b-small-rag desde Hugging Face para uso inmediato en aplicaciones basadas en navegador.
  • Crea un pequeño conjunto de evaluación de 30 a 50 preguntas sobre tu propia documentación, incluyendo algunas que no puedan responderse, para probar el rendimiento base.
  • Genera datos de entrenamiento sintéticos usando un gran modelo de lenguaje, asegurando que las respuestas sean cortas, factuales y derivadas de pasajes individuales.
  • Elimina frases de evasión como "el texto no dice" de los ejemplos positivos de entrenamiento para evitar que el modelo aprenda verbosidad innecesaria.
  • Monitorea manualmente el rendimiento de los checkpoints en tu conjunto de pruebas específico en lugar de depender únicamente de las métricas de pérdida de validación durante el entrenamiento.
  • Considera reentrenar el modelo con prompts de sistema personalizados si tu aplicación se refiere a "documentación" en lugar de un "blog" para mejorar la alineación contextual.
  • #rag
  • #fine-tuning
  • #small language models
  • #browser ai
  • #machine learning

Herramientas de la Tienda de Bytechap

$79

WorkBento

Suite de RR. HH. y gestión del entorno laboral impulsada por IA que puedes alojar tú mismo.

Demo en vivo

Seguir leyendo

Todos los artículos