Entrenar modelos multivector con pooling mejora la búsqueda con vectores comprimidos
Un artículo del blog de Hugging Face muestra que entrenar un modelo para que funcione con vectores ya fusionados mejora la calidad de la búsqueda con el mismo almacenamiento. Con una reducción de 4 veces en vectores, la retención de calidad pasó de 94,6 % a 97,8 %.
Redacción PicoTecno
· Actualizada 12 de noviembre de 2026 a las 20:36
2 min de lectura
(CONICET)
Según un artículo publicado en el blog de Hugging Face, entrenar un modelo de búsqueda para que tolere la compresión de sus vectores permite conservar más calidad con el mismo espacio de almacenamiento. El texto se centra en los modelos de embeddings multivector, que representan cada documento con una colección de vectores y no con uno solo.
Los modelos de un solo vector comprimen un documento entero en una única representación. Los multivector, como ColBERT, guardan un vector por cada token (fragmento de texto), de modo que distintas partes de una consulta pueden coincidir con distintas partes de un documento. El puntaje se calcula con MaxSim: cada vector de la consulta elige su mejor coincidencia en el documento y los resultados se suman. La contracara es el tamaño: un corpus de millones de documentos puede acumular cientos de millones de vectores.
Cómo funciona el token pooling
El token pooling reduce ese volumen fusionando vectores parecidos. La herramienta HierarchicalTokenPooling agrupa los vectores con clustering jerárquico de Ward, que une en cada paso los dos grupos cuya fusión menos aumenta la dispersión interna. Cada grupo se reemplaza por su promedio, que luego se normaliza para el cálculo de MaxSim. Con pool_factor=4, cada documento conserva aproximadamente un cuarto de sus vectores.
El autor da un ejemplo de ahorro: con cuantización de 4 bits, 200 vectores de 128 dimensiones ocupan 12,8 KB por documento, o 12,8 GB cada millón de documentos. Al reducir cada documento a 50 vectores, el total baja a 3,2 GB. También se puede fijar un umbral de distancia en lugar de un factor fijo, de modo que los documentos con contenido más variado conserven más vectores.
Entrenar pensando en la compresión
El problema es que un modelo entrenado de manera convencional nunca tuvo que trabajar con vectores fusionados, y la compresión puede borrar distinciones útiles. La propuesta es el entrenamiento consciente del pooling, que aplica el objetivo de recuperación tanto a las representaciones completas como a las comprimidas, con un peso de 50 % cada una. El principio es parecido al de los embeddings Matryoshka, que entrenan versiones más cortas del mismo vector.
Como el clustering toma decisiones discretas, durante el entrenamiento se usa un estimador straight-through para pasar los gradientes de los vectores fusionados a los tokens que los componen. En la práctica, la librería Sentence Transformers ofrece la pérdida MultiVectorTokenPoolingLoss, que envuelve una pérdida de recuperación existente y la aplica con los poolers elegidos. Las variantes con pooling reutilizan los embeddings ya calculados, por lo que no requieren una pasada extra del codificador.
En los resultados, medidos con nDCG@10 (una métrica que evalúa la calidad del ranking en los primeros diez resultados) sobre NanoBEIR, el modelo entrenado normalmente retiene el 94,6 % de su desempeño sin pooling cuando se aplica pool_factor=4. Con el entrenamiento consciente del pooling, esa retención sube a 97,8 % con el mismo presupuesto de almacenamiento. El trabajo se apoya en estudios previos de Stefan Josef (Learn to Pool) y de LightOn sobre regularización del pooling.