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.
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.
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.
Los LLM ofrecen una serie de opciones para "configurar" la forma en que se generan las respuestas.
En primer lugar, analicemos las reglas de las instrucciones para mejorar, ante todo, el rendimiento de la generación.
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:
No realice cambios importantes en los parámetros del modelo.
En la mayoría de los casos:
Aplique los mejores principios de ingeniería:
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.
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.
No se preocupe, las solicitudes múltiples se procesan en paralelo mediante watsonx.ai
Divida las tareas en subtareas más pequeñas.
Divida cada paso del proceso en varias instrucciones y sus modelos específicos.
Los modelos de chat requieren un diseño de instrucciones diferente al de los modelos de instrucciones.
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.
Añada interacciones de varios niveles para probar a encadenar sus instrucciones.
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.
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
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.
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
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 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.
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
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 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.
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.
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.
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.
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.
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.
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.
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.
Vicky Kuo, Chris Kirby, Luke Major, Atin Chandel, Brant Li, Evan Wheldon
Actualizado: 15 de noviembre de 2024