¿Cómo acelera la cuantización de productos las grandes colecciones privadas de vectores?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

La cuantización de producto acelera grandes colecciones privadas de vectores al dividir las incrustaciones en subespacios y reemplazar cada subvector por un código compacto de centroide aprendido.

Este es un mecanismo específico dentro de la familia más amplia de la cuantización vectorial. En lugar de reducir cada coordenada de forma independiente, la PQ aprende varios libros de códigos pequeños y representa una incrustación de alta dimensionalidad como una secuencia de identificadores de código. Un servidor de búsqueda doméstico puede mantener muchos más de esos códigos en memoria y estimar las distancias de consulta a partir de tablas precalculadas, lo que reduce tanto los bytes de vectores almacenados como la cantidad de operaciones aritméticas de precisión completa necesarias durante un amplio escaneo de candidatos.

La PQ divide una incrustación de alta dimensionalidad en varios subvectores

Supongamos que una incrustación tiene dimensión `d`. La PQ elige `M` subcuantizadores y divide las coordenadas en `M` bloques de menor dimensionalidad, de modo que cada bloque pueda modelarse por separado.

El número de subcuantizadores determina en cuántos bloques de menor dimensionalidad se divide la incrustación original y, por tanto, cuántos identificadores de código forman una representación PQ.

Esta factorización es la razón por la que la cuantización de producto recibe su nombre: la aproximación completa se construye a partir de elecciones realizadas de forma independiente en varios subespacios, en lugar de usar un único libro de códigos enorme sobre el vector completo. Los subespacios deben dividir las dimensiones del vector de una forma compatible. Su tamaño y número afectan a la compresión, al coste de entrenamiento del libro de códigos, a la precisión de las distancias y al grado en que la distribución de los datos se adapta a la representación factorizada.

Cada subespacio aprende un libro de códigos de centroides representativos

Normalmente, la PQ se entrena con una muestra representativa de la colección. Para cada subespacio, la agrupación encuentra vectores centroides que representan grupos de subvectores similares.

Un cuantizador de producto suele usar k-means para aprender centroides dentro de cada subespacio, minimizando el error de aproximación entre los subvectores de entrenamiento y sus representantes asignados.

Después del entrenamiento, la base de datos ya no necesita almacenar todas las coordenadas originales en el código compacto de búsqueda. Solo necesita el identificador del centroide más cercano de cada subespacio.

Si la muestra de entrenamiento no representa bien los documentos domésticos futuros, los centroides aprendidos pueden aproximar mal los vectores posteriores. Por tanto, la calidad del libro de códigos es un límite de implementación, no un detalle puntual que pueda ignorarse.

El vector almacenado se convierte en una secuencia corta de identificadores de código

Para cada subvector, el codificador encuentra el centroide más cercano y almacena el índice de ese centroide. La concatenación de los `M` índices forma el código PQ de la incrustación completa.

Almacenar m códigos de subvector con bits configurables reemplaza una matriz larga de números flotantes por una secuencia corta de identificadores de centroides y libros de códigos compartidos.

Por ejemplo, ocho bits por subcuantizador pueden representar 256 opciones de centroide en ese subespacio. El código vectorial total crece entonces con el número de subcuantizadores, en lugar de usar una precisión de 32 bits para cada dimensión original. Los libros de códigos y la sobrecarga del índice también consumen memoria, por lo que la colección completa es mayor que los bytes de los códigos por sí solos. El ahorro resulta más significativo cuando el número de vectores es lo bastante grande como para amortizar esos libros de códigos compartidos.

-15% OFF

Una consulta crea tablas de búsqueda de distancias para cada subespacio

Cuando llega una consulta, el sistema la divide en los mismos subespacios y calcula su distancia respecto a cada centroide de cada libro de códigos. Esos valores forman pequeñas tablas de búsqueda.

Una tabla de distancias entre la consulta y los centroides precalcula la distancia de la consulta a cada centroide de cada subespacio, de modo que las distancias de los candidatos puedan ensamblarse mediante pequeñas búsquedas en lugar de operaciones aritméticas sobre vectores completos.

Para estimar la distancia hasta un vector almacenado en la base de datos, la búsqueda ya no reconstruye todas las coordenadas completas. Lee cada identificador de código, consulta la distancia correspondiente del subespacio y suma esos valores.

Esta ruta basada en tablas suele denominarse cálculo asimétrico de distancias, porque la consulta puede conservar una alta precisión mientras los vectores de la base de datos se representan mediante códigos cuantizados.

Los códigos compactos mejoran la localidad de caché a medida que crecen las colecciones

Los escaneos de grandes volúmenes de vectores suelen estar limitados por el movimiento de los datos de los candidatos a través de la memoria, más que por la complejidad matemática de una sola operación de distancia.

Los códigos cortos permiten que más candidatos quepan en las cachés de la CPU y reducen el ancho de banda necesario para cada comparación.

La ruta de cálculo de distancias comprimida puede acelerarse con búsquedas en tablas compatibles con SIMD, porque la búsqueda cuantizada mediante producto lee repetidamente códigos compactos y acumula distancias de los subespacios.

En una colección doméstica privada, esto puede marcar la diferencia entre un índice cuya representación activa de búsqueda permanece en la RAM y otro que compite continuamente con el LLM local, la base de datos y la caché del sistema de archivos.

El beneficio es menor cuando la colección es pequeña, cuando el filtrado de metadatos reduce cada consulta a un puñado de vectores o cuando otra capa del índice domina la latencia.

La PQ normalmente intercambia parte de la recuperación por compresión y velocidad

Los códigos de centroides aproximan los subvectores originales, por lo que dos candidatos pueden cambiar de orden cuando sus distancias reales son muy similares. Por lo general, una compresión más agresiva deja menos información para distinguirlos.

Tratar la cuantización de producto como una compresión con pérdida deja claro el límite: los códigos más pequeños reducen la memoria de los vectores, pero el error de cuantización puede cambiar el orden de los vecinos cercanos.

Aumentar el número de subcuantizadores o de bits puede conservar más detalles, pero amplía cada código y las estructuras de búsqueda. Los códigos más pequeños ahorran más memoria, pero aumentan la probabilidad de error de cuantización. La configuración útil depende del corpus. Los manuales estrechamente relacionados, las versiones duplicadas de documentos y la búsqueda de código detallada pueden requerir más precisión que la recuperación semántica amplia sobre notas domésticas diversas.

Una primera pasada compacta puede ir seguida de una reclasificación con precisión completa

La PQ no obliga a confiar ciegamente en el orden de las distancias comprimidas para obtener la respuesta final. Un sistema puede recuperar un conjunto de candidatos más amplio con PQ y después volver a calcular la puntuación únicamente de esos candidatos utilizando vectores originales almacenados en otro lugar.

En la recuperación semántica de vectores, la PQ cambia la representación utilizada para comparar candidatos; la procedencia, el filtrado de metadatos, la reclasificación y RAG siguen operando alrededor de esa etapa vectorial.

Este enfoque en dos etapas distribuye de forma asimétrica la memoria y el cálculo: los códigos comprimidos gestionan el gran espacio de candidatos, mientras que los vectores exactos solo se consultan para una lista corta.

La cuantización de producto acelera una colección privada cuando los códigos compactos reducen de forma significativa el conjunto de trabajo y el tráfico de distancias sin disminuir la recuperación medida por debajo de la calidad de evidencia que requiere el sistema RAG local.

Centro de Tecnología e IA

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.