noticias

¿Por qué el modelo de interacción retardada es estándar para la próxima generación de RAG?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



La columna AIxiv es una columna donde Machine Heart publica contenido académico y técnico. En los últimos años, la columna Heart of the Machine AIxiv ha recibido más de 2.000 informes, que cubren los mejores laboratorios de las principales universidades y empresas de todo el mundo, promoviendo eficazmente los intercambios y la difusión académicos. Si tiene un trabajo excelente que desea compartir, no dude en contribuir o contactarnos para informarnos. Correo electrónico de envío: [email protected]; [email protected];

Zhang Yingfeng: cofundador de Infra, con muchos años de experiencia en búsqueda, inteligencia artificial y desarrollo de infraestructura de infraestructura, actualmente está trabajando en la construcción de la próxima generación de productos principales de RAG.

En el desarrollo del sistema RAG, un buen modelo Reranker es un vínculo indispensable y siempre se utiliza en diversas evaluaciones. Esto se debe a que las consultas representadas por la búsqueda de vectores enfrentarán el problema de una baja tasa de aciertos, por lo que se necesita un modelo Reranker avanzado para solucionarlo. esto, formando así una arquitectura de clasificación de dos etapas utilizando la búsqueda vectorial como selección aproximada y el modelo Reranker como clasificación fina.

Actualmente existen dos tipos principales de arquitecturas para clasificar modelos:

1. Codificador doble. Tomando el modelo BERT como ejemplo, codifica consultas y documentos por separado y finalmente pasa a través de una capa de agrupación para que la salida contenga solo un vector. En la etapa de consulta de Clasificación, solo necesita calcular la similitud de dos vectores, como se muestra en la siguiente figura. Se pueden utilizar codificadores duales para las etapas de clasificación y reclasificación, y la búsqueda vectorial es en realidad este modelo de clasificación. Dado que el codificador dual codifica la consulta y el documento por separado, no puede capturar la compleja relación interactiva entre la consulta y los tokens del documento, lo que provocará una gran pérdida semántica. Sin embargo, dado que solo se necesita una búsqueda vectorial para completar la clasificación y la puntuación. cálculo, la eficiencia de ejecución mejora muy alto.



2. Codificador cruzado. Cross-Encoder utiliza un modelo de codificador único para codificar consultas y documentos simultáneamente. Puede capturar la interacción compleja entre consultas y documentos, por lo que puede proporcionar resultados de clasificación de búsqueda más precisos. Cross-Encoder no genera el vector correspondiente al token de la consulta y el documento, pero agrega un clasificador para generar directamente la puntuación de similitud de la consulta y el documento. Su desventaja es que debido a la necesidad de codificar conjuntamente cada documento y consulta en el momento de la consulta, lo que hace que la clasificación sea muy lenta, Cross-Encoder solo se puede utilizar para reordenar los resultados finales. Por ejemplo, reordenar el Top 10 de los resultados de la selección preliminar todavía lleva unos segundos.



Desde este año, otro tipo de trabajo representado por ColBERT [Referencia 1] ha atraído una gran atención en la comunidad de desarrollo de RAG. Como se muestra en la figura siguiente, tiene algunas características que son significativamente diferentes de los dos tipos de modelos de clasificación anteriores:

Una es que, en comparación con Cross Encoder, ColBERT todavía utiliza una estrategia de codificador dual y utiliza codificadores independientes para codificar consultas y documentos. Por lo tanto, el token de consulta y el token del documento no se afectan entre sí durante la codificación. se procesa sin conexión y solo se codifica la consulta al realizar la consulta, por lo que la velocidad de procesamiento es mucho mayor que la del Cross Encoder;

La segunda es que, en comparación con el codificador dual, ColBERT genera múltiples vectores en lugar de un solo vector, que se obtiene directamente de la última capa de salida del Transformador, mientras que el codificador dual convierte múltiples vectores en un solo vector a través de una capa de agrupación. perdiendo así algo de semántica.

En el cálculo de clasificación, ColBERT introduce una función de similitud de cálculo interactivo retrasado y la denomina similitud máxima (MaxSim). El método de cálculo es el siguiente: para cada vector de token de consulta, la similitud se calcula con los vectores correspondientes a todos los tokens del documento. realice un seguimiento de la puntuación máxima para cada token de consulta. La puntuación total de la consulta y el documento es la suma de estas puntuaciones máximas de coseno. Por ejemplo, para una consulta con 32 vectores de token (la longitud máxima de la consulta es 32) y un documento con 128 tokens, se deben realizar 32 * 128 operaciones de similitud, como se muestra en la siguiente figura.

Entonces, en comparación, Cross Encoder se puede llamarModelo de interacción temprana, y el trabajo representado por ColBERT se puede llamarModelo de interacción tardía.



La siguiente figura compara los modelos de clasificación anteriores en términos de rendimiento y calidad de clasificación. Dado que el modelo de interacción retardada satisface la capacidad de capturar interacciones complejas entre consultas y documentos durante el proceso de clasificación, y también evita la sobrecarga de codificar tokens de documentos, no solo puede garantizar buenos efectos de clasificación, sino también lograr un rendimiento de clasificación más rápido. En la misma escala de datos, la eficiencia de ColBERT puede ser más de 100 veces mayor que la de Cross Encoder. Por tanto, el modelo de interacción retardada es un modelo de clasificación muy prometedor. Una idea natural es:¿Se puede utilizar directamente el modelo de interacción retardada en RAG para reemplazar la arquitectura de clasificación de dos etapas de búsqueda vectorial + clasificación fina?



Para ello, debemos considerar algunas cuestiones en la ingeniería ColBERT:

1. La función de similitud interactiva retardada MaxSim de ColBERT tiene una eficiencia computacional mucho mayor que Cross Encoder, pero en comparación con la búsqueda vectorial ordinaria, la sobrecarga computacional sigue siendo muy alta: debido a que la similitud entre la consulta y el documento es un cálculo de múltiples vectores, MaxSim's The la sobrecarga es M * N veces mayor que la del cálculo de similitud de vectores ordinario (M es el número de tokens en la consulta, N es el número de tokens en el documento). En respuesta a esto, el autor de ColBERT lanzó ColBERT v2 en 2021 [Referencia 2], que mejoró la calidad de la incrustación generada mediante Cross Encoder y destilación de modelos, y utilizó tecnología de compresión para cuantificar el vector del documento generado, mejorando así el cálculo de Rendimiento MaxSim. El proyecto RAGatouille [Referencia 3] basado en el embalaje ColBERT v2 se convierte en una solución para la clasificación RAG de alta calidad. Sin embargo, ColBERT v2 es solo una biblioteca de algoritmos y todavía es difícil utilizarla de un extremo a otro en sistemas RAG de nivel empresarial.

2. Dado que ColBERT es un modelo previamente entrenado y los datos de entrenamiento provienen de consultas de motores de búsqueda y resultados devueltos, estos datos de texto no son grandes. Por ejemplo, la cantidad de tokens de consulta es 32 y la cantidad de tokens de documentos es 128. , que son límites de longitud típicos. Por lo tanto, cuando se utiliza ColBERT para datos reales, la longitud que excede el límite se truncará, lo que no es amigable para la recuperación de documentos largos.

Según los problemas anteriores, la base de datos nativa de IA de código abierto Infinity proporciona el tipo de datos Tensor en la última versión y proporciona de forma nativa la solución ColBERT de un extremo a otro. Cuando se usa Tensor como tipo de datos, múltiples vectores generados mediante codificación ColBERT se pueden almacenar directamente en un Tensor, por lo que la similitud entre Tensores puede derivar directamente la puntuación MaxSim. En respuesta al problema de la gran cantidad de cálculos de MaxSim, Infinity ha dado dos soluciones para optimizar: una es la cuantificación binaria, que puede hacer que el espacio del tensor original sea solo 1/32 del tamaño original, pero no cambia el orden relativo. del resultado de los cálculos de MaxSim. Esta solución se utiliza principalmente para Reranker, porque es necesario extraer el tensor correspondiente en función de los resultados de la etapa anterior de cribado aproximado. El otro es Tensor Index, que en realidad es la implementación de Tensor Index lanzada por el autor de ColBERT Infinity que utiliza EMVB [Referencia 4], que puede considerarse como una mejora de ColBERT v2, principalmente a través de tecnología de cuantificación y prefiltrado, y SIMD. Se introducen instrucciones sobre operaciones clave para acelerar la implementación. Tensor Index solo se puede usar para servir a Ranker en lugar de Reranker. Además, para textos largos que exceden el límite de Token, Infinity introduce el tipo Tensor Array:



Un documento que exceda el límite de ColBERT se dividirá en varios párrafos. Después de codificar y generar tensores respectivamente, se guardarán en la misma línea que el documento original. Al calcular MaxSim, la consulta y estos párrafos se calculan por separado y luego el valor máximo se toma como la puntuación de todo el documento. Como se muestra abajo:



Por lo tanto, al utilizar Infinity, se puede introducir un modelo de interacción retardada de extremo a extremo para brindar servicios a RAG con alta calidad. Entonces, ¿debería utilizarse ColBERT como Ranker o Reranker? A continuación utilizamos Infinity para realizar evaluaciones en conjuntos de datos reales. Dado que la última versión de Infinity implementa la solución de búsqueda híbrida más completa de la historia, los métodos de recuperación incluyen búsqueda de vectores, búsqueda de texto completo, búsqueda de vectores dispersos, el Tensor mencionado anteriormente y cualquier combinación de estos métodos, y proporciona una variedad de métodos de Reranker. , como RRF y ColBERT Reranker, por lo que incluimos varias combinaciones de búsqueda híbrida y Reranker en la revisión.

Utilizamos el conjunto de datos MLDR para la evaluación. MLDR es un conjunto de referencia utilizado por MTEB [Referencia 5] para evaluar la calidad de los modelos de incrustación. MLDR es uno de los conjuntos de datos, que se denomina recuperación de documentos largos múltiples y contiene un total de 200.000 datos de texto largos. La evaluación utiliza BGE-M3 [Referencia 6] como modelo de incrustación, Jina-ColBERT [Referencia 7] para generar Tensor, y el script de evaluación también se coloca en el almacén Infinity [Referencia 8].

Evaluación 1: ¿ColBERT es eficaz como Reranker? Utilice BGE-M3 para generar vectores densos y vectores dispersos a partir de 200.000 datos MLDR e insértelos en la base de datos Infinity. La base de datos contiene 4 columnas, que almacenan respectivamente texto original, vectores, vectores dispersos y tensores, y crean el texto completo correspondiente. índices y vectores respectivamente. Índice, índice de vectores dispersos. La evaluación incluye todas las combinaciones de recuperación, incluida la recuperación de una sola vía, la recuperación de dos vías y la recuperación de tres vías, de la siguiente manera:



El índice de evaluación adopta nDCG@10. Otros parámetros: cuando se utiliza RRF Reranker, el Top N = 1000 devuelto por un análisis aproximado, el número total de consultas es 800 y la longitud promedio de las consultas es de aproximadamente 10 tokens.



Como puede verse en la figura, todas las soluciones de retirada han mejorado significativamente los resultados después de utilizar ColBERT Reranker. Como modelo de interacción retardada, ColBERT puede proporcionar una calidad de clasificación comparable a la de los que se encuentran en la parte superior de las clasificaciones Reranker de MTEB, pero el rendimiento es 100 veces mayor, por lo que la reclasificación se puede realizar a mayor escala. Los resultados que se muestran en la figura son para Top 100 Reranker, y Top 1000 se utiliza para el reordenamiento ColBERT. Los valores no cambian significativamente y el rendimiento disminuye significativamente, por lo que no se recomienda. Tradicionalmente, cuando se utiliza un Reranker externo basado en Cross Encoder, habrá un retraso de segundo nivel en el Top 10. Sin embargo, Infinity implementa el ColBERT Reranker de alto rendimiento internamente. Incluso si se reordenan los Top 100 o incluso los Top 1000. la experiencia del usuario no se verá afectada, pero el alcance de la recuperación aumenta considerablemente, por lo que el efecto de clasificación final se puede mejorar significativamente. Además, este cálculo de ColBERT Reranker solo necesita ejecutarse en una arquitectura de CPU pura, lo que también reduce en gran medida el costo de implementación.

Evaluación 2: La comparación se basa en ColBERT como clasificador en lugar de reclasificador. Por lo tanto, es necesario construir un índice tensorial para los datos de la columna tensorial. Al mismo tiempo, para evaluar la pérdida de precisión introducida por Tensor Index, también se realizó una búsqueda de fuerza bruta.



Se puede ver que en comparación con Reranker, incluso usando la búsqueda de fuerza bruta sin pérdida de precisión, no hay una mejora significativa y la calidad de clasificación basada en Tensor Index es incluso menor que usando Reranker. Sin embargo, el tiempo de consulta como Ranker es mucho más lento: el conjunto de datos MLDR contiene 200.000 datos de documentos, que son aproximadamente 2 GB. Después de usar Jina-ColBERT para convertirlos en datos de Tensor, llega a 320G. El tipo de datos es un documento. Se debe guardar el vector correspondiente a cada token del documento. La dimensión del modelo ColBERT es de 128 dimensiones, por lo que el volumen de datos predeterminado se expandirá en 2 órdenes de magnitud. Tomará un promedio de 7 segundos consultar tantos datos. Devuelve una consulta pero no obtiene mejores resultados.

Por tanto, es obvio que ColBERT es mucho más rentable como Reranker que como Ranker. La mejor solución de recuperación de RAG actual es agregar ColBERT Reranker sobre la base de una búsqueda híbrida de 3 vías (búsqueda de texto completo + vector + vector disperso). Algunos socios pueden preguntar, para usar ColBERT Reranker, es necesario agregar una columna Tensor separada, y la columna se expandirá en 2 órdenes de magnitud en comparación con el conjunto de datos original. En primer lugar: Infinity proporciona un método de cuantificación binaria para Tensor. Como Reranker, no afecta mucho los resultados de clasificación, pero puede hacer que los datos finales sean solo 1/32 del tamaño original del Tensor. En segundo lugar, aun así, algunas personas pensarán que estos gastos generales son demasiado elevados. Sin embargo, desde la perspectiva del usuario, todavía vale la pena utilizar más almacenamiento a cambio de una mayor calidad de clasificación y costos más baratos (el proceso de clasificación no requiere una GPU). Finalmente, creo que pronto se lanzará un modelo de interacción tardía con un rendimiento ligeramente reducido pero una sobrecarga de almacenamiento muy reducida. Como infraestructura de infraestructura de datos, es transparente a estos cambios y es una buena elección entregar estas compensaciones a los usuarios.

Lo anterior se basa en la evaluación de recuperación multicanal de Infinity en el conjunto de datos MLDR. Los resultados de la evaluación en otros conjuntos de datos pueden ser diferentes, pero la conclusión general no cambiará: la búsqueda híbrida de 3 vías + el reordenamiento basado en tensor es la recuperación actual. método con resultados de búsqueda de la más alta calidad.

De esto se puede ver que ColBERT y su modelo de interacción retardada tienen un gran valor de aplicación en escenarios RAG. Recientemente, los modelos de interacción retardada también han obtenido reconocimiento SOTA en escenarios multimodales. Este es ColPali [Referencia 9], que cambia el flujo de trabajo de RAG, como se muestra en la siguiente figura:



Cuando RAG se enfrenta a documentos de formato complejo, SOTA actual utiliza un modelo de reconocimiento de documentos para identificar el diseño del documento y luego llama al modelo correspondiente para las estructuras parciales identificadas, como gráficos, imágenes, etc., para convertirlas en las correspondientes. Luego, el texto se guarda en la base de datos de soporte de RAG en varios formatos. ColPali elimina estos pasos y utiliza directamente modelos multimodales para generar contenido incrustado. Al hacer preguntas, puede responder directamente según los cuadros del documento:



El entrenamiento del modelo ColPali es similar a ColBERT, también usa la forma de pares de páginas de consulta-documento para capturar la asociación semántica entre la consulta y los datos multimodales del documento, pero usa PaliGemma [Referencia 10] para generar incrustaciones multimodales. En comparación con BiPali, que no utiliza el mecanismo de interacción tardía pero también utiliza PaliGemma para generar incrustación, la comparación del índice de evaluación de nDCG@5 es 81,3 frente a 58,8. Esta brecha es la diferencia entre "excelente" y "no puede funcionar en absoluto".



Por lo tanto, aunque han pasado 4 años desde que apareció ColBERT, la aplicación del modelo de interacción tardía en RAG definitivamente ampliará los escenarios de uso de RAG y proporcionará una recuperación semántica de alta calidad en escenas RAG complejas, incluida la multimodalidad. Infinity ya está listo para su aplicación de un extremo a otro. Bienvenido a seguir a Star Infinity, https://github.com/infiniflow/infinity, y está comprometido a convertirse en la mejor base de datos nativa de IA.

referencias

1. Colbert: Búsqueda de pasajes eficiente y efectiva a través de la interacción tardía contextualizada sobre bert, SIGIR 2020.

2. Colbertv2: Recuperación eficaz y eficiente a través de una interacción tardía ligera, arXiv:2112.01488, 2021.

3. RAGatouille https://github.com/bclavie/RAGatouille

4. Recuperación densa multivectorial eficiente con vectores de bits, ECIR 2024.

5. https://huggingface.co/mteb

6. https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali: Recuperación eficiente de documentos con modelos de lenguaje de visión, arXiv:2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma