Generación de respuestas

Explore más a fondo lo que ofrece el RAG Cookbook para obtener una mejor perspectiva de las soluciones RAG actuales.

Un diagrama de flujo con diversas formas y símbolos, entre los que se incluyen un bocadillo azul, un signo de interrogación y.
Visió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 objetivo. 

Consideraciones

Parámetros del modelo

Los números que aparecen tras los nombres de los LLM de código abierto indican el número de parámetros del modelo. Por ejemplo, Granite 3.0 8B Instruct es un modelo con 8000 millones de parámetros.  PiensE en los parámetros como los directores de orquesta que coordinan la forma en que el modelo manipula y comprende los datos de entrada para generar outputs. Estos parámetros pueden manifestarse como pesos o sesgos, lo que influye en la importancia de las características específicas de la entrada en el output generado.

Un mayor número de parámetros suele traducirse en un modelo más complejo y adaptable (aunque esto no es estrictamente cierto en todas las arquitecturas, sí lo es, en general, en la arquitectura del transformador). Un modelo de lenguaje de gran tamaño con más parámetros puede discernir patrones más complejos a partir de los datos, lo que permite obtener outputs más ricos y precisos. Sin embargo, como ocurre con muchas cosas en la vida, hay que hacer concesiones. Un aumento de los parámetros implica mayores exigencias computacionales y de memoria, y un riesgo inminente de sobreajuste.

Tipos de modelos: "instruct" vs. "code instruct" vs. "chat"

El modo "chat" está pensado para conversaciones, mientras que el modo "instruct" está diseñado para el procesamiento del lenguaje natural en ámbitos específicos.

El ajuste fino en el modo de chat ayuda al LLM a generar respuestas más naturales, coherentes, relevantes y atractivas para el usuario. El ajuste fino en el modo de instrucciones permite al modelo seguir diferentes tipos de instrucciones y generar outputs precisos y adecuados para la tarea.

Configuración del modelo

Los LLM ofrecen una serie de opciones para "configurar" la forma en que se generan las respuestas.

  • El parámetro "temperatura" determina el grado de variabilidad de las respuestas del modelo. En pocas palabras, cuanto menor sea la temperatura, más determinista y consistente será la respuesta. Para las soluciones RAG, se recomienda un valor de temperatura muy bajo, preferiblemente 0.
  • "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 deberán probar diferentes valores hasta encontrar el que logre un equilibrio entre respuestas completas y un exceso de información para su caso de uso. No obstante, 100 suele ser un buen límite para las soluciones RAG de preguntas y respuestas.
  • La estrategia de muestreo determina cómo selecciona el modelo el siguiente token de una respuesta. Las soluciones RAG deben utilizar una estrategia de muestreo "greedy", lo que garantizará respuestas coherentes a las indicaciones.

Ingeniería de instrucciones

En primer lugar, analicemos las reglas de las instrucciones para mejorar, ante todo, el rendimiento de la generación.

Regla n.º 1: Empiece por algo sencillo

No escriba una instrucción muy larga y luego la pruebe.

Por ejemplo, no empiece con una instrucción como esta:

-    Trabajas en el departamento financiero de una importante empresa de electrónica que cotiza en el S&P 1000. Tu tarea consiste en resumir las actas de las juntas trimestrales de accionistas para identificar los temas clave, las tendencias y el estado de ánimo. 

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

Asegúrate de que cada respuesta sea una frase completa.
No te inventes nada. Responde únicamente con la información que aparece en la transcripción.

Esta es la transcripción que debes resumir:

Empiece mejor con una instrucción así:

- Resume los puntos clave que figuran en la siguiente transcripción de la reunión:

Regla n.º 2: Solo incrementos

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

En la mayoría de los casos:

  • Los pequeños cambios en la temperatura y la penalización por repetición tienen un impacto notable.
  • Los grandes cambios suelen ocultar los éxitos que se logran con pequeños cambios.

Aplique los mejores principios de ingeniería:

  • Cambie solo un parámetro cada vez. Compruebe cada cambio por separado.
  • Deshaga los cambios que no hayan tenido el efecto deseado. Vuelva al valor anterior.
  • Cualquier cambio respecto a la configuración predeterminada debe ir acompañado de una explicación adecuada.

Regla n.º 3: Valide de forma cruzada

Intente poner a prueba su instrucción.  No la pruebe una sola vez y dé por sentado que funciona. Ejecute decenas de pruebas con su instrucción.

  • Intente detectar fallos en su prompt antes de que lo haga el cliente.

Cree un conjunto de datos de prueba y siga añadiendo ejemplos.  Después de cada versión del POC, vuelva a realizar pruebas para asegurarse de que su instrucción sigue funcionando correctamente.

Regla n.º 4: Las extracciones complejas no se pueden realizar con una sola instrucción

No se preocupe, las solicitudes múltiples se procesan en paralelo mediante watsonx.ai

Diagrama de flujo para el análisis de los 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 el país vinícola de California.

Regla n.º 6: Clasificación de tareas (o arquitectura de instrucciones)

Divida cada paso del proceso en varias instrucciones y sus modelos específicos.

Diagrama de flujo que ilustra el proceso de un asistente basado en varios LLM, desde la solicitud del usuario hasta los datos corporativos.

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

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

Captura de pantalla de un formato de instrucción específico del 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 para el formato específico del modelo RAG.

Regla n.º 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 ajenas a su trabajo habitual.

Elija algo que el LLM pueda llevar a cabo.

  • Escribe un poema de cuatro versos sobre los pájaros. 
  • Desafío de chat: Vale, ahora hablemos de perros
  •  Cuéntame una historia divertida sobre un pájaro llamado Midori en menos de 5 frases.  
  • Desafío de chat: Cambia el nombre del pájaro por Charlie, añade el color azul y haz que la historia esté compuesta por 7 frases. 
  • Responde a 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 que no lo sea.

Añada interacciones de varios niveles para probar a encadenar sus instrucciones.

Instrucciones del sistema y de usuario

Editar la instrucción del sistema es igual de importante que editar 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, guían el comportamiento del modelo y garantizan 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 inyecciones de instrucciones.  Los delimitadores indican en qué parte de la instrucción se inserta la entrada del usuario, lo que ayuda al modelo a identificar dónde empieza y dónde termina dicha entrada.  Los delimitadores también ayudan a evitar inyecciones de instrucciones. Los delimitadores pueden ser de cualquier tipo, como: ``**, **”””**, **< >**, ** `.

A continuación, se muestra un ejemplo de 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 servicial e inofensivo, sigues las normas éticas y promueves un comportamiento positivo. Siempre respondes a los saludos (por ejemplo, "hola", "buenos días", "buenas tardes", "buenas noches", "¿qué tal?", "encantado de conocerte", "¿qué pasa?", etc.) con "¡Hola! Soy Granite Chat, creado por IBM. ¿En qué puedo ayudarte hoy?” Por favor, no digas nada más y no inicies una conversación. {instruction}\n{session_history}<|user|>\n{query}\n<|assistant|>\n

Instrucciones de usuario

Las instrucciones de usuario son las instrucciones o preguntas concretas formuladas por el usuario para lograr la respuesta deseada del modelo. Deben ser claras y concisas para garantizar que el modelo comprenda la tarea.

IBM Tools

Prompt Lab

Prompt Lab es una plataforma de IBM que le permite trabajar con modelos fundacionales y crear instrucciones utilizando prompt engineering. En Prompt Lab, los usuarios pueden interactuar con modelos fundacionales en el editor de instrucciones utilizando el modo Chat, Freeform o Structured. Estas múltiples opciones le permitirán elaborar las mejores configuraciones de modelos para permitir una serie de tareas de tipo procesamiento del lenguaje natural (PLN), entre las que se incluyen la respuesta a preguntas, la generación y resumen de contenidos y la clasificación y extracción de textos.

Para obtener información sobre cómo empezar y todo lo relacionado con Prompt Lab, visite el sitio web 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 ajustado al corpus de datos. Esto puede dar lugar a mejoras en la precisión global por varias razones.  La más importante es la capacidad de la etapa de generación para mejorar e incluso corregir los resultados de la recuperación.  Además, puede proporcionar respuestas más relevantes y específicas para la empresa, ya que puede ajustarse a su contenido.

Para obtener información sobre cómo empezar y todo lo relacionado con InstructLab, consulte el repositorio oficial de InstructLab

Granite

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

Características distintivas de Granite 3.0

Transparencia y seguridad

El compromiso de IBM con la transparencia y la seguridad queda patente en la descripción detallada de los conjuntos de datos de entrenamiento, así como de los procesos de filtrado y curación, que se recoge en el informe técnico de Granite 3.0. Los modelos se publican bajo la licencia permisiva Apache 2.0, que garantiza flexibilidad y autonomía a los clientes empresariales y a la comunidad de IA en general. Además, los modelos Granite Guardian 3.0 ofrecen capacidades exhaustivas 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 alcanzar un rendimiento de vanguardia a un precio mucho más asequible. El uso de InstructLab, un enfoque colaborativo de código abierto, permite ajustar modelos más pequeños a tareas específicas, lo que reduce los costes entre tres y veintitrés veces en comparación con los modelos más grandes. Los modelos con arquitectura Mixture of Experts (MoE), como el Granite 3.0 3B-A800M y el 1B-A400M, ofrecen una alta eficiencia de inferencia con mínimas pérdidas de rendimiento, por lo que son ideales para aplicaciones de baja latencia e implementaciones basadas en CPU.

Capacidades multimodales y futuras actualizaciones

Se prevé que, para finales de 2024, los modelos Granite 3.0 sean compatibles con una ventana de contexto ampliada de 128 K y con capacidades de comprensión de documentos multimodales, incluida la tarea "imagen de entrada, texto de salida". Esta ampliación mejorará aún más su utilidad en diversos casos de uso empresarial.

Integración del ecosistema

Los modelos Granite 3.0 están disponibles en múltiples plataformas, como watsonx.ai de IBM, Hugging Face, Vertex AI de Google Cloud, los microservicios NVIDIA NIM, Ollama y Replicate. Esto ofrece a los desarrolladores una amplia gama de opciones de implementación y garantiza una integración perfecta 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 vanguardia con sólidas características de seguridad y un amplio soporte del ecosistema.

Para obtener información sobre cómo empezar y todo lo relacionado con Granite, consulte el sitio web 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 basadas únicamente en palabras clave se explican por sí mismas; son indicaciones formadas 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

puede reducirse a las palabras clave:

tiempo de horneado pastel de chocolate 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 complementario obtenido. 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 requieran respuestas concisas y conversacionales.

Comparativa

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 funciones?

Las indicaciones comparativas pueden resultar útiles cuando el modelo de generación y el corpus de referencia contienen información sobre todos los conceptos y sus dimensiones, o material de apoyo sobre cómo compararlos de forma útil. Sin estos, es probable que una instrucción comparativa genere una respuesta sin sentido o ineficaz.

Agregada

Las instrucciones agregadas 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 agregadas suelen ser más difíciles para los LLM debido a la ambigüedad inherente de la pregunta.   

  • ¿Se trata de ejecutar varios conceptos en paralelo para minimizar el tiempo de procesamiento?
  • ¿Se trata de conceptos complementarios que se refuerzan mutuamente?
  • ¿La intención es explicar cómo realizar acciones en una serie secuencial de pasos? 

Para resolver esta ambigüedad, se recomienda dividir las instrucciones agrupadas en varias indicaciones de un solo tema o proporcionar un contexto adicional que describa explícitamente la respuesta deseada.

Ambigua

Una instrucción ambigua es aquella que se puede interpretar 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 sobre 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 la mayoría de las soluciones y deberían revisarse para incluir detalles y contexto adicionales que permitan centrar el LLM en el tema deseado.

Anómala

En el contexto de una solución RAG, una instrucción anómala es aquella para la que no hay respuesta en el conjunto de documentos de referencia. Esto puede dar lugar a respuestas "alucinadas" o improvisadas, basadas en el conocimiento integrado en el LLM, o a respuestas irrelevantes, basadas en resultados de búsqueda de baja relevancia extraídos del corpus.

Aunque puede resultar imposible evitar las respuestas desviadas en todos los casos de uso (por ejemplo, en un chatbot conversacional), los desarrolladores de soluciones pueden minimizarlas restringiendo las entradas de los usuarios mediante listas de opciones, por ejemplo, "Puedo ayudarte con..." seguido de una serie de botones con temas predefinidos, o guiando a los usuarios hacia respuestas seguras mediante un lenguaje descriptivo o directivo en las instrucciones para el usuario y las respuestas del modelo.

IndirectA

Las instrucciones indirectas son instrucciones cuyas palabras clave no están directamente en el corpus, sino que tienen sinónimos que sí lo están. Las instrucciones indirectas suponen un reto para los desarrolladores de soluciones, ya que su fiabilidad depende del número de sinónimos que existan para las palabras clave de la instrucción y de si dichos sinónimos dan lugar a una consulta inequívoca.

Se recomienda a los desarrolladores que implementen un mecanismo de filtrado de consultas mediante listas negras para añadir detalles que aclaren el significado de las palabras clave o sustituir las "palabras clave problemáticas" por sinónimos o expresiones que no den lugar a ambigüedades.

Buenas prácticas en materia de instrucciones

Aunque la creación de "buenas" instrucciones es una combinación de arte y ciencia, existen una serie de prácticas recomendadas que permiten obtener mejores resultados.

Una buena instrucción es:

  • Relevante para el dominio de destino y contiene suficientes detalles y contexto como para que el contenido y el tono del output deseado sean claros y específicos.

  • Adaptada al público objetivo. Una respuesta dirigida a un analista financiero corporativo tendrá un tono, estructura y contenido muy diferentes en comparación con una respuesta para un cliente de banca minorista. Una buena instrucción tendrá indicaciones ("Eres es un analista financiero de nivel medio. Genera un informe...") o una indicación clara del público ("... escrito para un cliente de banca minorista que no tiene conocimientos 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 del sector de los viajes para operadores turísticos"); lo que a su vez influirá en el tono, el lenguaje y el estilo de la respuesta generada.

Explorar más

Obtenga las últimas tecnologías, arquitecturas de soluciones y publicaciones de arquitectura de IBM.

  1. Ir al IBM Architecture Center
Colaboradores

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

Actualizado: 15 de noviembre de 2024