Finetuning multimodal: cómo mejorar la recuperación de documentos visuales
Los modelos multimodales generales rinden bien en tareas diversas, pero no siempre son óptimos para casos específicos como la recuperación de páginas de documentos. Aquí explico cómo entrenar y afinar modelos multimodales en Sentence Transformers y muestro un ejemplo práctico con mejoras claras en VDR.
Introducción
Los modelos multimodales de Sentence Transformers permiten generar embeddings y rerankers que procesan texto, imágenes y otros formatos para tareas como búsqueda semántica, retrieval-augmented generation y más. Aunque los modelos generales funcionan razonablemente bien en muchos escenarios, afinar (finetune) un modelo en datos de su dominio suele ofrecer mejoras significativas.
En este artículo reviso los componentes clave para entrenar y finetunear modelos multimodales usando Sentence Transformers, y describo un caso práctico: finetuning de Qwen/Qwen3-VL-Embedding-2B para Visual Document Retrieval (VDR). En mi experimento, el modelo finetuneado tomaarsen/Qwen3-VL-Embedding-2B-vdr alcanzó un NDCG@10 de 0.947 frente al 0.888 del modelo base, superando otros modelos probados, incluso varios hasta 4 veces más grandes.
Para equipos en América Latina, finetuning puede marcar la diferencia cuando se trabaja con documentos locales: reportes financieros, facturas, formularios públicos o material regulatorio con formatos y lenguajes específicos.
Por qué finetunear modelos multimodales
Los modelos multimodales generales son entrenados con datos variados para ser versátiles: emparejamiento imagen-texto, visual question answering, comprensión de documentos y más. Esa versatilidad implica que rara vez serán la mejor opción para una tarea concreta.
En Visual Document Retrieval el objetivo es, dada una consulta de texto (por ejemplo, ‘ingresos del tercer trimestre’), recuperar la(s) página(s) de documento más relevante(s) dentro de un corpus de miles de imágenes que conservan el layout, tablas y gráficos. Esto requiere una comprensión fina de diseño, tablas, leyendas y contexto —habilidades diferentes a las requeridas para emparejar fotos de productos con descripciones.
Finetunear en datos específicos del dominio permite al modelo aprender patrones relevantes (distribuciones de layout, estilos de tablas, terminología local) y mejorar la precisión de recuperación.
Componentes del entrenamiento multimodal
Entrenar modelos multimodales con Sentence Transformers implica los mismos bloques que para modelos solo texto, con algunas diferencias en el manejo de las modalidades.
- Modelo: punto de partida para finetuning. Puede ser un modelo multimodal ya pensado para embeddings o un checkpoint VLM (Vision-Language Model) que no tenga módulo de embeddings.
- Dataset: debe incluir las modalidades que usarán el modelo (imágenes, texto, etc.) y señales de relevancia para la tarea.
- Función de pérdida: guía la optimización. Para tareas de recuperación se usan pérdidas diseñadas para ranking.
- Parámetros de entrenamiento: configuración de hardware, batching, resolución de imágenes y otras opciones.
- Evaluador (opcional): evalúa rendimiento durante el entrenamiento (ej., NDCG@K).
- Trainer: componente que reúne modelo, datos, pérdida y evaluación para ejecutar el entrenamiento. Sentence Transformers usa SentenceTransformerTrainer para ambos casos.
Modelo y configuración de procesamiento
Lo habitual es finetunear un modelo multimodal existente o partir de un checkpoint VLM. El módulo Transformer detecta automáticamente las modalidades soportadas a partir del processor del modelo y ajusta el forward y pooling necesarios.
Ejemplo de inicialización adaptada:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer(
'Qwen/Qwen3-VL-Embedding-2B',
model_kwargs={'attn_implementation': 'flash_attention_2', 'torch_dtype': 'bfloat16'},
processor_kwargs={'min_pixels': 28*28, 'max_pixels': 600*600},
)
Los processor_kwargs se pasan a AutoProcessor.from_pretrained(...) y controlan el preprocesamiento de imágenes (mayor max_pixels suele significar mejor calidad pero mayor uso de memoria). model_kwargs se pasan a AutoModel.from_pretrained(...) para ajustar precisión y otras opciones.
Si el checkpoint es un VLM sin configuración de embeddings, Sentence Transformers intentará reconocer la arquitectura y preparar el forward y pooling. En casos puntuales puede ser necesario editar sentence_bert_config.json para ajustar modalidades o salidas.
Es posible también componer encoders separados por modalidad usando el módulo Router, lo que permite combinar encoders existentes y enrutar entradas según la modalidad detectada.
Dataset: formato y consideraciones para VDR
Para VDR el dataset típicamente contiene pares (consulta de texto, imagen de página) con etiquetas de relevancia o listas de negativos y positivos para training ranking. El dataset debe preservar la calidad de las imágenes (resolución de tablas y textos) y reflejar la variabilidad del dominio real.
Al preparar datos para América Latina, consideren incluir: variedades de idioma y regionalismos, formatos de documentos locales, ejemplos de facturas o reportes locales y diferentes calidades de escaneo.
Funciones de pérdida habituales
Para ranking y recuperación se utilizan pérdidas que explotan negativos dentro del batch y negativos extra cacheados. Entre las mencionadas están:
- CachedMultipleNegativesRankingLoss: aprovecha negativos precomputados para mejorar la señal de ranking.
- MatryoshkaLoss: diseñada para tareas multietiqueta o jerárquicas en embeddings (útil cuando se requiere distinguir niveles de relevancia).
La selección y parametrización de la pérdida depende del tipo de anotación disponible y del tamaño del conjunto de negativos útiles.
Argumentos de entrenamiento y evaluador
Los parámetros de entrenamiento incluyen tamaño de batch, número de epochs, uso de mixed precision y límites de resolución de imagen. Para imágenes, aumentar max_pixels mejora calidad pero exige más memoria. Monitoreen métricas de evaluación (p. ej., NDCG@K) durante el entrenamiento con un evaluador que calcule estas métricas sobre un set de validación representativo.
Tips prácticos para obtener mejoras
- Finetune en datos representativos del dominio: la inversión en etiquetado específico suele rendir más que aumentar el tamaño del modelo.
- Ajusten resolución y preprocesamiento de imágenes según la legibilidad de tablas y texto.
- Usen pérdidas de ranking y negatives mining apropiado; los negativos difíciles suelen acelerar el aprendizaje.
- Consideren Router si desean combinar encoders especializados por modalidad o por tipo de documento.
- Verifiquen que Pooling esté configurado correctamente; Sentence Transformers agrega pooling automáticamente cuando corresponde.
Resultados observados
En el experimento descrito, el modelo finetuneado tomaarsen/Qwen3-VL-Embedding-2B-vdr alcanzó un NDCG@10 de 0.947 frente al 0.888 del modelo base, superando todos los modelos VDR con los que se comparó, incluidos modelos hasta 4 veces más grandes. Esto ilustra que el finetuning en datos específicos puede ofrecer ganancias que compensan mucho más que solo aumentar la escala del modelo.
Conclusión y siguientes pasos
Finetunear modelos multimodales con Sentence Transformers es un enfoque práctico para mejorar tareas críticas como Visual Document Retrieval. Para organizaciones latinoamericanas esto puede traducirse en mejoras en búsqueda de documentos, gestión de conocimiento y automatización de procesos regulatorios.
Si aún no han trabajado con modelos multimodales en Sentence Transformers, es recomendable revisar la introducción a capacidades multimodales y seguir ejemplos de entrenamiento disponibles en la documentación oficial. Para entrenamiento puramente textual o modelos sparse, hay posts y ejemplos previos que cubren esos flujos.
Implementar finetuning requiere recursos (GPU y datos) y buenas prácticas de dataset y evaluación, pero sus beneficios en precisión y relevancia hacen que sea una inversión valiosa para productos y servicios que dependen de recuperación y comprensión de documentos.
Fuente original: Hugging Face Blog