stringtranslate.com

Generación aumentada por recuperación

La generación aumentada de recuperación ( RAG ) es una técnica que otorga a los modelos de inteligencia artificial generativa capacidades de recuperación de información . Modifica las interacciones con un modelo de lenguaje grande (LLM) de modo que el modelo responda a las consultas del usuario con referencia a un conjunto específico de documentos, utilizando esta información para aumentar la información extraída de sus propios datos de entrenamiento vastos y estáticos . Esto permite que los LLM utilicen información específica del dominio y/o actualizada. [1] Los casos de uso incluyen proporcionar acceso a los chatbots a los datos internos de la empresa o brindar información fáctica solo de una fuente autorizada. [2]

Proceso

El proceso RAG consta de cuatro etapas clave. En primer lugar, todos los datos deben estar preparados e indexados para su uso por parte del LLM. A continuación, cada consulta consta de una fase de recuperación, una de ampliación y una de generación. [1]

Indexación

Los datos a los que se hará referencia deben convertirse primero en incrustaciones LLM , representaciones numéricas en forma de vectores grandes. RAG se puede utilizar en datos no estructurados (normalmente texto), semiestructurados o estructurados (por ejemplo, gráficos de conocimiento ). [1] Estas incrustaciones se almacenan luego en una base de datos vectorial para permitir la recuperación de documentos .

Descripción general del proceso RAG, que combina documentos externos y aportes del usuario en un mensaje LLM para obtener un resultado personalizado

Recuperación

Dada una consulta de usuario, primero se llama a un recuperador de documentos para seleccionar los documentos más relevantes que se utilizarán para ampliar la consulta. [3] Esta comparación se puede realizar utilizando una variedad de métodos, que dependen en parte del tipo de indexación utilizado. [1]

Aumento

El modelo alimenta esta información recuperada relevante al LLM a través de la ingeniería rápida de la consulta original del usuario. [2] Las implementaciones más nuevas (a partir de 2023 ) también pueden incorporar módulos de aumento específicos con capacidades como expandir consultas a múltiples dominios y usar la memoria y la automejora para aprender de recuperaciones anteriores. [1]

Generación

Por último, el LLM puede generar resultados basados ​​tanto en la consulta como en los documentos recuperados. [4] Algunos modelos incorporan pasos adicionales para mejorar los resultados, como la reclasificación de la información recuperada, la selección del contexto y el ajuste fino. [1]

Mejoras

Las mejoras al proceso básico anterior se pueden aplicar en diferentes etapas del flujo RAG.

Codificador

Estos métodos se centran en la codificación del texto como vectores densos o dispersos. Los vectores dispersos, que se utilizan para codificar la identidad de una palabra, suelen tener la longitud de un diccionario y contienen casi todos ceros. Los vectores densos, que se utilizan para codificar el significado, son mucho más pequeños y contienen muchos menos ceros. Se pueden realizar varias mejoras en la forma en que se calculan las similitudes en los almacenes de vectores (bases de datos).

Métodos centrados en el retriever

Estos métodos se centran en mejorar la calidad de los resultados de la base de datos vectorial:

Modelo de lenguaje

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

Al rediseñar el modelo de lenguaje teniendo en cuenta al recuperador, una red 25 veces más pequeña puede obtener una perplejidad comparable a la de sus contrapartes mucho más grandes. [12] 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 evitaba. La hipótesis es que al brindar conocimiento del dominio durante el entrenamiento, Retro necesita menos enfoque 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. [13]

Fragmentación

La fragmentación implica varias estrategias para dividir los datos en vectores para que el recuperador pueda encontrar detalles en ellos.

Los diferentes estilos de datos tienen patrones que la fragmentación correcta puede aprovechar.

Los tres tipos de estrategia de fragmentación son:

Desafíos

Si la fuente de datos externa es grande, la recuperación puede ser lenta. El uso de RAG no elimina por completo los desafíos generales que enfrentan los LLM, incluida la alucinación . [3]

Referencias

  1. ^ abcdef Gao, Yunfan; Xiong, Yun; Gao, Xinyu; Jia, Kangxiang; Pan, Jinliu; Bi, Yuxi; Dai, Yi; Sol, Jiawei; Wang, Meng; Wang, Haofen (2023). "Generación de recuperación aumentada para modelos de lenguaje grandes: una encuesta". arXiv : 2312.10997 [cs.CL].
  2. ^ ab "¿Qué es RAG? - Explicación de la IA de generación aumentada por recuperación - AWS". Amazon Web Services, Inc. Recuperado el 16 de julio de 2024 .
  3. ^ ab "Modelos de lenguaje grande de próxima generación: el manual de la generación aumentada por recuperación (RAG)". freeCodeCamp.org . 11 de junio de 2024 . Consultado el 16 de julio de 2024 .
  4. ^ Lewis, Patrick; Perez, Ethan; Piktus, Aleksandra; Petroni, Fabio; Karpukhin, Vladimir; Goyal, Naman; Küttler, Heinrich; Lewis, Mike; Yih, Wen-tau; Rocktäschel, Tim; Riedel, Sebastian; Kiela, Douwe (2020). "Generación aumentada por recuperación para tareas de PNL intensivas en conocimiento". Avances en sistemas de procesamiento de información neuronal . 33 . Curran Associates, Inc.: 9459–9474. arXiv : 2005.11401 .
  5. ^ "faiss". GitHub .
  6. ^ Khattab, Omar; Zaharia, Matei (2020). ""ColBERT: Búsqueda de pasajes eficiente y efectiva mediante interacción tardía contextualizada sobre BERT"". doi :10.1145/3397271.3401075.
  7. ^ Formal, Thibault; Lassance, Carlos; Piwowarski, Benjamín; Clintont, Stéphane (2021). ""SPLADE v2: Modelo léxico y de expansión dispersos para la recuperación de información"" Arxiv . S2CID  237581550.
  8. ^ Lee, Kenton; Chang, Ming-Wei; Toutanova, Kristina (2019). ""Recuperación latente para respuestas a preguntas de dominio abierto con supervisión débil"" (PDF) .
  9. ^ Lin, Sheng-Chieh; Asai, Akari (2023). ""Cómo entrenar a tu DRAGÓN: Ampliación diversa hacia una recuperación densa generalizable"" (PDF) .
  10. ^ Shi, Weijia; Min, Sewon (2024). "REPLUG: modelos de lenguaje de caja negra aumentados por recuperación". "REPLUG: modelos de lenguaje de caja negra aumentados por recuperación" . págs. 8371–8384. arXiv : 2301.12652 . doi :10.18653/v1/2024.naacl-long.463.
  11. ^ 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"". Transacciones de la Asociación de Lingüística Computacional . 11 : 1316-1331. arXiv : 2302.00083 . doi :10.1162/tacl_a_00605.
  12. ^ Borgeaud, Sebastian; Mensch, Arthur (2021). ""Mejora de los modelos lingüísticos mediante la recuperación de datos a partir de billones de tokens"" (PDF) .
  13. ^ Wang, Boxin; Ping, Wei (2023). "¿Deberíamos preentrenar modelos de lenguaje autorregresivos con recuperación? Un estudio exhaustivo" (PDF) .