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.
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.
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.
Los LLM proporcionan un puñado de ajustes para "configurar" cómo se generan las respuestas.
Para empezar, exploremos reglas rápidas de instrucción para mejorar el desempeño de la generación en primer lugar.
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:
No realice grandes cambios en los parámetros del modelo.
En la mayoría de los casos:
Aplique los mejores principios de ingeniería:
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.
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.
No se preocupe, se procesan múltiples instrucciones en paralelo usando watsonx.ai
Divida las tareas en subtareas más pequeñas.
Separe cada paso del proceso en múltiples instrucciones y su modelo especializado.
Los modelos de chat requieren un diseño de instrucciones diferente de los modelos de instrucciones.
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.
Agregue interacciones multinivel para experimentar con el encadenamiento de sus instrucciones.
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.
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
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.
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.
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 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.
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
El contenido y la estructura de las instrucciones enviadas a los LLM pueden afectar enormemente la calidad y fidelidad de las respuestas que generan.
Las instrucciones se pueden dividir en seis tipos generales:
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.
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.
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.
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.
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.
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.
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.
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.
Vicky Kuo, Chris Kirby, Luke Major, Atin Chandel, Brant Li, Evan Wheldon
Actualizado: 15 de noviembre de 2024