stringtranslate.com

Borrador: Generación Aumentada de Recuperación (RAG)


La generación aumentada de recuperación (RAG) es un método de red neuronal para mejorar los modelos de lenguaje con información no vista durante el entrenamiento para que pueda realizar tareas como responder preguntas utilizando esa información agregada [1] . En su forma original de 2020 [2] , los pesos en una red neuronal de un sistema RAG no cambian. Por el contrario, los pesos neuronales cambian para otros métodos de mejora del modelo de lenguaje como el ajuste fino . En RAG, se vectoriza un cuerpo de información nueva y se recuperan partes seleccionadas cuando la red necesita generar una respuesta.

Diagrama de flujo de Generación Aumentada de Recuperación (RAG). Los cuadros con letras negras muestran los datos que se están cambiando y las letras azules muestran la maquinaria que realiza los cambios. Los límites para cada etapa de RAG no son rígidos.

Los problemas que aborda RAG son la obsolescencia de la información y la precisión de los hechos (a veces llamados conexión a tierra o alucinaciones).

Técnicas

Las mejoras a la Respuesta se pueden aplicar en diferentes etapas del flujo de RAG.

Codificador

Estos métodos se centran en la codificación de texto como vectores densos o dispersos. Los vectores dispersos, que codifican la identidad de una palabra, suelen tener la longitud de un diccionario y contienen casi todos ceros. Los vectores densos, cuyo objetivo es codificar significado, son mucho más pequeños y contienen muchos menos ceros.

Métodos centrados en el perro perdiguero

modelo de lenguaje

Modelo de lenguaje retro para RAG. Cada bloque retro consta de capas Atención, Atención cruzada fragmentada y Feed Forward. Los cuadros con letras negras muestran los datos que se están cambiando y las letras azules muestran el algoritmo que realiza los cambios.

Al rediseñar el modelo de lenguaje teniendo en cuenta el recuperador, una red 25 veces más pequeña puede obtener una perplejidad comparable a la de sus contrapartes mucho más grandes [10] . Debido a que se entrena desde cero, este método (Retro) incurre en el alto costo de las ejecuciones de entrenamiento que el esquema RAG original evitó. La hipótesis es que al brindar conocimiento del dominio durante el entrenamiento, Retro necesita centrarse menos en el dominio y puede dedicar sus recursos de menor peso solo a la semántica del lenguaje. El modelo de lenguaje rediseñado se muestra aquí.

Se ha informado que Retro no es reproducible, por lo que se realizaron modificaciones para que así sea. La versión más reproducible se llama Retro++ e incluye RAG en contexto. [11]

fragmentación

La conversión de datos de dominio en vectores debe realizarse con cuidado. Es ingenuo convertir un documento completo en un único vector y esperar que el recuperador encuentre detalles en ese documento en respuesta a una consulta. Existen varias estrategias sobre cómo dividir los datos. Esto se llama fragmentación.

Los diferentes estilos de datos tienen patrones que se pueden aprovechar con la fragmentación correcta.
  • Longitud fija con superposición. Esto es rápido y fácil. La superposición de fragmentos consecutivos ayuda a mantener el contexto semántico entre los fragmentos.
  • Los fragmentos basados ​​en sintaxis pueden dividir el documento en oraciones. Bibliotecas como spaCy o NLTK también pueden ayudar.
  • Fragmentación basada en formato de archivo. Ciertos tipos de archivos tienen fragmentos naturales integrados y es mejor respetarlos. Por ejemplo, es mejor fragmentar y vectorizar los archivos de código como funciones o clases completas. Los archivos HTML deben dejar intactos los elementos <table> o <img> codificados en base64. Se deben tomar consideraciones similares para los archivos pdf. Bibliotecas como Unstructured o Langchain pueden ayudar con este método.

    Referencias

    1. ^ ""¿Qué es la generación de recuperación aumentada? "". blogs.nvidia.com . 15 de noviembre de 2023.
    2. ^ Lewis, Patricio; Pérez, Ethan (2020). ""Generación de recuperación aumentada para tareas de PNL con uso intensivo de conocimiento"" (PDF) . procedimientos.neurips.cc .
    3. ^ "faiss". GitHub .
    4. ^ Khattab, Omar; Zaharia, Matei (2020). ""ColBERT: búsqueda de pasajes eficiente y eficaz mediante interacción tardía contextualizada sobre BERT"".
    5. ^ Formal, Thibault; Lassance, Carlos; Piwowarski, Benjamín; Clintont, Stéphane (2021). ""SPLADE v2: modelo de expansión y léxico disperso para la recuperación de información"".
    6. ^ Lee, Kenton; Chang, Ming-Wei; Toutanova, Kristina (2019). ""Recuperación latente para respuestas a preguntas de dominio abierto débilmente supervisadas"" (PDF) .
    7. ^ Lin, Sheng-Chieh; Asai, Akari (2023). ""Cómo entrenar a tu DRAGÓN: aumento diverso hacia una recuperación densa generalizable"" (PDF) .
    8. ^ Shi, Weijia; Min, Sewon (2023). ""REPLUG: Modelos de lenguaje de caja negra con recuperación aumentada"".
    9. ^ Carnero, Ori; Levine, Yoav; Dalmedigos, Italia; Muhlgay, Dor; Shasúa, Amnón; Leyton-Brown, Kevin; Shoham, Yoav (2023). ""Modelos de lenguaje aumentados de recuperación en contexto"".
    10. ^ Borgeaud, Sebastián; Mensch, Arthur (2021). ""Mejora de los modelos de lenguaje recuperando billones de tokens"" (PDF) .
    11. ^ Wang, boxeo; Ping, Wei (2023). ""¿Debemos entrenar previamente modelos de lenguaje autorregresivos con recuperación? Un estudio integral"" (PDF) .