Generación de respuestas

Explore más de lo que el RAG Cookbook ofrece para obtener insights más profundos sobre las soluciones RAG actuales

Un diagrama de flujo con varias formas y símbolos, incluida una burbuja de discurso azul, un signo de interrogación, y.
Descripción general

La generación de respuestas es el componente de una solución RAG que crea una respuesta a la consulta de un usuario utilizando la información recuperada de las fuentes de datos empresariales o corpus de texto específicos. 

Consideraciones

parámetros del modelo

Los números que siguen a los nombres de los LLM de código abierto indican los parámetros del modelo.  Por ejemplo, Granite 3.0 8B Instruct, es un modelo con parámetros 8B.  Piense en los parámetros como los conductores que orquestan cómo el modelo manipula y entiende los datos de entrada y produce salidas. Podrían manifestarse como pesos o sesgos, lo que influye en la importancia de las características de entrada específicas en el resultado generado.

Un mayor recuento de parámetros generalmente equivale a un modelo con mayor complejidad y adaptabilidad (aunque no es estrictamente cierto en diferentes arquitecturas, generalmente cierto dentro de una arquitectura transformadora). Un modelo de lenguaje grande con un mayor número de parámetros puede discernir patrones más complejos a partir de los datos, lo que allana el camino para obtener resultados más ricos y precisos. Pero, como ocurre con muchas cosas en la vida, hay una compensación. Un aumento en los parámetros significa mayores demandas computacionales, mayores necesidades de memoria y un riesgo inminente de sobreajuste.

Tipos de modelos: instrucciones frente a instrucciones de código frente a chat

El modo de chat está diseñado para contextos conversacionales, mientras que el modo de instrucción está diseñado para tareas de procesamiento de lenguaje natural en dominios específicos.

El ajuste en el modo de chat ayuda al LLM a hacer un mejor trabajo en la generación de respuestas naturales y coherentes que sean relevantes y atractivas para el usuario. El ajuste en el modo de instrucción ayuda al LLM a hacer un mejor trabajo al seguir diferentes tipos de instrucciones y generar resultados que sean precisos y apropiados para la tarea.

Configuración del modelo

Los LLM proporcionan un puñado de ajustes para "configurar" cómo se generan las respuestas.

  • El ajuste de “temperatura” determina cuán variables son las respuestas del modelo. En pocas palabras, cuanto más baja sea la temperatura, más determinista o constante será el modo de respuesta del modelo. Se recomienda un valor de temperatura muy bajo, idealmente 0, para las soluciones RAG.
  • “max_tokens / max_new_tokens” limita el número de tokens (una palabra equivale aproximadamente a 1.5 tokens) que el modelo utilizará en su respuesta. Los desarrolladores de soluciones tendrán que experimentar para encontrar un valor que equilibre las respuestas completas con demasiada información para su caso de uso, pero 100 suele ser un buen límite para las soluciones RAG de preguntas y respuestas.
  • la estrategia de muestreo determina cómo el modelo selecciona el siguiente token en una respuesta. Las soluciones RAG deben utilizar una estrategia de muestreo codicioso, que garantizará respuestas congruentes con las instrucciones.

Ingeniería de instrucciones

Para empezar, exploremos reglas rápidas de instrucción para mejorar el desempeño de la generación en primer lugar.

Regla n.° 1: empiece por lo sencillo

No comience escribiendo una instrucción muy larga y, solo después, ponerla a prueba.

Por ejemplo, no comience con una instrucción larga como:

- Trabajas en el departamento financiero de una importante empresa de electrónica incluida en S&P 1000. Debes resumir las transcripciones de las reuniones trimestrales de accionistas para identificar temas clave, tendencias y sentimientos. 

Responde en un formato de lista numérica con viñetas.

Asegúrese de que cada elemento sea una oración completa.
No alucines. Solo responde con la información contenida en la transcripción.

Aquí está la transcripción para resumir:

Sino comience así:

- Resume los temas clave contenidos en la siguiente transcripción de la reunión:

Regla n.º 2: solo incrementos

No realice grandes cambios en los parámetros del modelo. 

En la mayoría de los casos:

  • Los cambios menores en la temperatura y la penalización por repetición tienen un impacto notable.
  • Los grandes cambios a menudo ocultan los éxitos posibles gracias a pequeños cambios.

Aplique los mejores principios de ingeniería:

  • Cambie solo un parámetro a la vez. Valide cada cambio por separado.
  • Deshaga los cambios que no tienen el efecto deseado. Vuelva al valor anterior.
  • Cualquier cambio del valor predeterminado debe tener una buena explicación.

Regla n.º 3: Validación cruzada

Intente romper su instrucción.  No pruebe su instrucción una vez y afirme haber tenido éxito. Ejecute docenas de pruebas contra su instrucción.

  • Intente romper su instrucción antes de que lo haga el cliente.

Cree un conjunto de datos de prueba y siga agregando sus ejemplos.  Después de cada lanzamiento de POC, vuelva a realizar la prueba para asegurarse de que su instrucción continúe funcionando.

Regla n.º 4: las extracciones complejas no se pueden realizar mediante instrucciones individuales

No se preocupe, se procesan múltiples instrucciones en paralelo usando watsonx.ai

Diagrama de flujo para un análisis de informes financieros con seis instrucciones y tres secciones.

Regla n.° 5: Cadenas de instrucciones

Divida las tareas en subtareas más pequeñas.

Un diagrama de flujo que ilustra el proceso de planificación de unas vacaciones en la región vinícola de California.

Regla n.o 6: Triaje de tareas (o arquitectura de instrucción)

Separe cada paso del proceso en múltiples instrucciones y su modelo especializado.

Un diagrama de flujo que ilustra el proceso de un asistente multi-LLM, desde la solicitud del usuario hasta los datos corporativos.

Regla n.o 7: granite.13b.chat.v

Los modelos de chat requieren un diseño de instrucciones diferente de los modelos de instrucciones.

Captura de pantalla de un formato de instrucciones específico para un modelo con una instrucción del sistema y una instrucción genérica.
Una captura de pantalla de una instrucción genérica para aprendizaje en contexto.
Instrucción del formato específico del modelo RAG.

Regla n.o 8: Diviértase y juegue con los modelos.

En serio, aprendemos tanto del juego como del trabajo.  Pruebe los últimos LLM y desafíelos con tareas fuera de su trabajo habitual.

Elija algo que el LLM probablemente podría lograr.

  • Escribe un poema de 4 oraciones sobre pájaros. 
  • Desafío de chat: OK, ahora sobre perros
  •  Cuéntame una historia divertida sobre un pájaro llamado Midori en menos de 5 oraciones. 
  • Desafío de chat: cambia el nombre del pájaro a Charlie y agrega el color azul. Además, haz que tenga 7 oraciones de largo. 
  • Responde la siguiente pregunta en solo 10 palabras: “¿por qué el cielo es azul?” 
  • Desafío de chat: genial, dime una razón que parezca cierta pero no lo sea.

Agregue interacciones multinivel para experimentar con el encadenamiento de sus instrucciones.

Instrucciones del sistema e instrucciones del usuario

La edición de la instrucción del sistema es igualmente importante que la edición de la instrucción del usuario. La instrucción del sistema puede marcar grandes diferencias en la calidad de la respuesta, el tono, etc. Las instrucciones del sistema establecen el contexto para la interacción, guiando el comportamiento del modelo y garantizando la coherencia, mientras que las instrucciones del usuario impulsan el contenido específico de la conversación. Es crucial tener la capacidad de editar las instrucciones del sistema para mejorar el rendimiento.

Instrucciones del sistema

Las instrucciones del sistema proporcionan las instrucciones subyacentes que guían el comportamiento de la IA a lo largo de la interacción.  Establecen el papel, el tono y los límites éticos del modelo. El uso de delimitadores puede ayudar al modelo y evitar las inyecciones de instrucciones.  Los delimitadores especifican dónde en la instrucción se inserta la entrada del usuario, lo que ayuda al modelo a identificar dónde comienza y termina la entrada del usuario.  Los delimitadores también ayudan a evitar inyecciones de instrucciones. Los delimitadores pueden ser cualquier cosa, como: ``**, **”””**, **< >**, ** `.

Este es un ejemplo de una instrucción del sistema para el modelo Granite:

<|system|>\nEres Granite Chat, un modelo de lenguaje de IA desarrollado por IBM. Eres un asistente cauteloso. Sigues las instrucciones con cuidado. Eres útil e inofensivo, sigues pautas éticas y promueves un comportamiento positivo. Siempre respondes a los saludos (por ejemplo, hola, hola, día, mañana, tarde, noche, noche, qué tal, gusto, cena, etc.) con “¡Hola! Soy Granite Chat, creado por IBM. ¿Cómo puedo ayudarle hoy?”. No digas nada más y no inicies una conversación. {instruction}\n{session_history}<|user|>\n{query}\n<|assistant|>\n

Instrucciones del usuario

Las instrucciones del usuario son las instrucciones o consultas específicas proporcionadas por el usuario para lograr la respuesta deseada del modelo. Deben ser claras y concisas para garantizar que el modelo comprenda la tarea.

Herramientas de IBM

Laboratorio rápido

Prompt Lab es una plataforma de IBM que le permite trabajar con modelos fundacionales y crear instrucciones mediante ingeniería rápida. Dentro de Prompt Lab, los usuarios pueden interactuar con los modelos fundacionales en el editor de instrucciones mediante el modo Chat, Freeform o Structured. Estas múltiples opciones le permitirán crear las mejores configuraciones de modelos para admitir una variedad de tareas de procesamiento de lenguaje natural (PLN), que incluyen respuesta a preguntas, generación y resumen de contenido, clasificación y extracción de texto.

Para obtener información sobre cómo comenzar y todo lo demás acerca de Prompt Lab, consulte el sitio oficial de Prompt Lab.

InstructLab

Una estrategia emergente para mejorar la precisión de una solución RAG consiste en utilizar un modelo de generación que se ajuste con precisión al corpus de datos. Esto puede conducir a mejoras en la precisión de extremo a extremo por varias razones.  Lo más significativo es que la capacidad de la etapa de generación puede mejorar e incluso corregir los resultados de la recuperación.  También puede proporcionar respuestas más relevantes específicas para la empresa, ya que se puede ajustar al contenido empresarial de su empresa.

Para obtener información sobre cómo prepararse y todo lo demás sobre InstructLab, consulte el repositorio oficial de InstructLab

Granite

Granite 3.0 incluye una gama de modelos, como Granite 3.0 8B Instruct, 2B Instruct, 8B Base y 2B Base, que se han entrenado en más de 12 billones de tokens en 12 lenguajes naturales y 116 lenguajes de programación. Estos modelos igualan o superan a los modelos de tamaño similar de los principales proveedores en puntos de referencia tanto académicas como empresariales, mostrando un gran rendimiento en tareas como la comprensión del lenguaje, la generación de código y el resumen de documentos.

Diferenciadores de Granite 3.0

Transparencia y seguridad

El compromiso de IBM con la transparencia y la seguridad se evidencia en la divulgación detallada de los conjuntos de datos, los procesos de filtrado y curaduría en el reporte técnico Granite 3.0. Los modelos se publican bajo la licencia permisiva Apache 2.0, lo que garantiza flexibilidad y autonomía para los clientes empresariales y la comunidad de IA en general. Además, los modelos Granite Guardian 3.0 proporcionan capacidades integrales de detección de riesgos y daños, superando a otros modelos de seguridad del mercado.

Eficiencia y rentabilidad

Los modelos Granite 3.0 están diseñados para ser rentables, lo que permite a las empresas lograr un rendimiento de modelo de vanguardia a una fracción del costo. El uso de InstructLab, un enfoque colaborativo de código abierto, permite ajustar modelos más pequeños a tareas específicas, reduciendo los costos entre 3 y 23 veces en comparación con los modelos más grandes. Los modelos de arquitectura Mixture of Experts (MoE), como Granite 3.0 3B-A800M y 1B-A400M, ofrecen una alta eficiencia de inferencia con compensaciones mínimas de rendimiento, lo que los hace ideales para aplicaciones de baja latencia y despliegues basados en CPU.

Capacidades multimodales y actualizaciones futuras

Para fines de 2024, se espera que los modelos Granite 3.0 admitan una ventana de contexto extendida de 128K y capacidades de comprensión de documentos multimodales, incluidas tareas de entrada y salida de imágenes. Esta expansión aumentará aún más su utilidad en diversos casos de uso empresariales.

Integración del ecosistema

Los modelos Granite 3.0 están disponibles a través de múltiples plataformas, incluyendo watsonx.ai de IBM, Hugging Face, Vertex IA de Google Nube, microservicios NIM de NVIDIA, Ollama y Replicate, que ofrecen a los desarrolladores una amplia gama de opciones de despliegue y aseguran una integración fluida con los flujos de trabajo existentes. En resumen, los modelos Granite 3.0 de IBM ofrecen una solución potente, transparente y rentable para la IA empresarial, que combina un rendimiento de última generación con características de seguridad sólidas y un amplio soporte del ecosistema.

Para obtener información sobre cómo comenzar y todo lo demás sobre Granite, consulte el sitio oficial de Granite

Consejos y recomendaciones

Mejores instrucciones

El contenido y la estructura de las instrucciones enviadas a los LLM pueden afectar enormemente la calidad y fidelidad de las respuestas que generan.

Los seis tipos de instrucciones

Las instrucciones se pueden dividir en seis tipos generales:

Solo palabra clave

Las consultas de solo palabras clave se explican por sí mismas; son instrucciones compuestas por palabras clave relacionadas con el tema en cuestión. Por ejemplo, la instrucción:

¿Cuál es el tiempo óptimo de horneado para un pastel de chocolate a gran altitud?

se puede reducir a las palabras clave:

tiempo de horneado pastel de chocolate a gran altitud

Las instrucciones basadas únicamente en palabras clave suelen generar respuestas más amplias y centradas en el tema, con una gran relevancia del texto ampliado recuperado. Esto puede ser un efecto deseable para una solución que requiere respuestas amplias e informativas, como un chatbot asistente de operador, pero puede generar demasiada información para soluciones que requieren respuestas conversacionales concisas.

Comparativo

Las instrucciones comparativas piden al LLM que haga comparaciones entre uno o más temas o conceptos de la instrucción. Por ejemplo:

¿Cuál es la diferencia entre una regla y una asignación de roles?

Las instrucciones comparativas pueden ser útiles cuando el modelo de generación y el corpus de apoyo tienen información sobre todos los conceptos, así como dimensiones obvias o material de apoyo sobre cómo comparar útilmente los conceptos. Sin estos, es probable que una instrucción comparativa genere una respuesta sin sentido o ineficaz.

Agrupadas

Las instrucciones agrupadas piden al modelo que agregue dos o más conceptos o consultas en una sola instrucción. Por ejemplo:

¿Cómo puedo crear un permiso y un grupo de permisos?

Las instrucciones agrupadas suelen ser más difíciles para los LLM debido a la ambigüedad inherente a la pregunta.   

  • ¿Se trata de múltiples conceptos que se ejecutarán en paralelo para minimizar el tiempo de procesamiento?
  • ¿Se trata de conceptos complementarios que se refuerzan entre sí?
  • ¿La intención es explicar cómo realizar acciones en una serie secuencial de pasos? 

Para resolver esta ambigüedad, generalmente se recomienda dividir las instrucciones agregadas en múltiples instrucciones de un solo tema, o proporcionar contexto adicional que describa explícitamente la respuesta deseada.

Ambiguas

Una instrucción ambigua es aquella que puede interpretarse de múltiples maneras. Por ejemplo:

¿Qué es un rol?

Esta instrucción podría generar respuestas sobre roles en el contexto de la actuación y una discusión posterior de actores famosos y sus roles, roles en el contexto de una solución de seguridad de TI o roles en el contexto de una organización. La incertidumbre que introducen hace que las instrucciones ambiguas sean una mala elección para casi cualquier solución, y deben revisarse para incluir detalles y contexto adicionales que permitan centrar el LLM en el tema deseado.

Desviadas

En el contexto de una solución RAG, una instrucción desviada es aquella que no tiene una respuesta en el corpus de documentos de respaldo. Esto puede conducir a respuestas alucinadas o improvisadas basadas en el conocimiento integrado en el LLM, o respuestas irrelevantes basadas en resultados de búsqueda de baja relevancia del corpus.

Si bien puede ser imposible protegerse contra las respuestas desviadas en todos los casos de uso (por ejemplo, un chatbot conversacional), los desarrolladores de soluciones pueden minimizarlas restringiendo las entradas de los usuarios a través de listas de opciones, por ejemplo. "Puedo ayudarle con..." seguido de una serie de botones de temas predefinidos, o "empujar" a los usuarios hacia respuestas seguras a través de un lenguaje descriptivo o directivo en las instrucciones del usuario y las respuestas del modelo.

Indirecto

Las instrucciones indirectas son instrucciones cuyas palabras clave no están directamente en el corpus sino que tienen sinónimos que sí. Las instrucciones indirectas son un desafío para los desarrolladores de soluciones, ya que su confiabilidad depende de la cantidad de sinónimos que haya para las palabras clave de la instrucción y de cómo los sinónimos conducen a una consulta inequívoca.

Se recomienda a los desarrolladores que implementen un mecanismo de filtrado de consultas de lista negra para agregar detalles de eliminación de ambigüedades a las palabras clave, o que reemplacen las palabras clave "problemáticas" con sinónimos o frases inequívocas.

Buenas prácticas de instrucciones

Aunque la creación de "buenas" instrucciones es tanto un arte como una ciencia, existen una serie de prácticas aceptadas que conducen a mejores instrucciones y, por lo tanto, a mejores resultados.

Una buena instrucción es:

  • Relevante para el dominio de destino y contiene suficiente detalle y contexto para que el contenido y el tono de la salida deseada sean claros y específicos.

  • Adaptada a la audiencia. Una respuesta destinada a un analista financiero corporativo tendrá un tono, estructura y contenido muy diferentes en comparación con una respuesta para un cliente de banca de venta minorista. Una buena instrucción incluirá instrucciones (“Usted es un analista financiero de nivel medio. Generar un informe...") o una indicación clara de la audiencia ("... escrito para un cliente de venta minorista que no tiene conocimiento de terminología financiera") para la respuesta.

  • Diseñada para un caso de uso específico. Una buena instrucción debe diseñarse teniendo en cuenta un caso de uso específico e incluir detalles sobre dónde y cómo se utilizará la respuesta generada ("... la respuesta se publicará en una revista de la industria de viajes para operadores turísticos"); lo que a su vez influirá en el tono, el lenguaje y el estilo de la respuesta generada.

Explore más

Obtenga los últimos patrones tecnológicos, arquitecturas de soluciones y publicaciones de arquitectura de IBM.

  1. Ir al Centro de Arquitectura de IBM
Colaboradores

Vicky Kuo, Chris Kirby, Luke Major, Atin Chandel, Brant Li, Evan Wheldon

Actualizado: 15 de noviembre de 2024