Mejorando la capacidad de ChatGPT para entender indicaciones ambiguas
Este artículo se publicó originalmente en The New Stack y se republica aquí con permiso.
La técnica de ingeniería de prompts ayuda a los grandes modelos de lenguaje (LLMs) a manejar pronombres y otras correferencias complejas en sistemas de generación aumentada por recuperación (RAG).
En el ámbito en constante expansión de la IA, grandes modelos de lenguaje (LLMs) como ChatGPT están impulsando investigaciones y aplicaciones innovadoras a una velocidad sin precedentes. Un desarrollo significativo es la aparición de la generación aumentada por recuperación (RAG). Esta técnica combina el poder de los LLMs con una base de datos vectorial que actúa como memoria a largo plazo para mejorar la precisión de las respuestas generadas. Una manifestación ejemplar del enfoque RAG es el proyecto de código abierto Akcio, que ofrece un sistema robusto de preguntas y respuestas.
Arquitectura de Akcio
En la arquitectura de Akcio, el conocimiento específico del dominio se integra sin problemas en un almacén vectorial, como Milvus o Zilliz (Milvus totalmente gestionado), mediante un cargador de datos. El almacén vectorial recupera los resultados Top-K más relevantes para la consulta del usuario y los transmite al LLM, proporcionando al LLM contexto sobre la pregunta del usuario. Posteriormente, el LLM refina sus respuestas basándose en el conocimiento externo.
Por ejemplo, si un usuario consulta: “¿Cuáles son los casos de uso de los grandes modelos de lenguaje en 2023?” sobre un artículo titulado “Informe de perspectivas sobre el progreso de los grandes modelos de lenguaje en 2023” que se importó en Akcio, el sistema recupera hábilmente los tres pasajes más relevantes del informe:
1. In 2023, the LLM use cases can be divided into two categories: generation AI and decision-making. Decision-making scenarios are expected to have higher business value.
2. The generation AI scenario mainly includes dialogue interaction, code development, intelligent agents, etc.
3. NLP applications include text classification, machine translation, sentiment analysis, automatic summarization, etc.
Akcio combina estos pasajes con la consulta original y los envía al LLM, generando una respuesta matizada y precisa:
The application scenarios of the large model industry can be divided into generation and decision-making scenarios.
El desafío de la resolución de correferencias en RAG
Sin embargo, a pesar de los avances logrados, implementar sistemas RAG introduce desafíos, particularmente en conversaciones de múltiples turnos que implican resolución de correferencias. Considera esta secuencia de preguntas:
Q1: What are the use cases of the large language model in 2023?
A1: The use cases of large language models can be divided into generation AI and decision-making.
Q2: What are their differences, and can you provide examples?
El pronombre “sus” en Q2 se refiere a “IA generativa y toma de decisiones.” Sin embargo, el LLM podría generar resultados irrelevantes para esta pregunta que socaven la coherencia de la conversación:
1. BERT and GPT are important models in the field of NLP, but they have significant differences in their design and application scenarios.
2. The difference between large models and small models lies in their scale and complexity. Large models usually have more parameters and more complex structures, requiring more computational resources and time for training and inference. Small models, on the other hand, are relatively simple with fewer parameters and faster training and inference speeds.
3. However, there is no additional information to distinguish between these two products because they appear very similar.
Uso de ChatGPT para la resolución de correferencias
Los métodos tradicionales, como la tokenización, la lematización y la sustitución de palabras clave mediante redes neuronales recurrentes, suelen ser inadecuados para resolver referencias complejas. En consecuencia, los investigadores han recurrido a LLMs como ChatGPT para tareas de resolución de correferencias. Este enfoque consiste en instruir a ChatGPT para que sustituya pronombres o conserve la pregunta original según el contexto proporcionado. Aunque este método es prometedor, ocasionalmente produce respuestas directas en lugar de seguir las instrucciones del prompt, lo que indica la necesidad de una estrategia más refinada.
Ejemplos probados
Experimentamos con comandos directos que instaban a ChatGPT a reemplazar pronombres usando el siguiente formato de prompt:
prompt = f'''Please generate a new question adhering to the following guidelines:
1. Complete any missing pronouns or conditions in the question based on the context.
2. Retain the original question if it's already complete.
{history}
Question: {question}'''
Ejemplo 1
Consulta:
history = ''' What is NLP?
NLP stands for Natural Language Processing. It is a field of computer science and artificial intelligence that focuses on the interaction between computers and humans using natural language. '''
question = 'What problem does it solve?'
Respuesta de ChatGPT:
What problem does Natural Language Processing (NLP) solve?
En este caso, ChatGPT hizo un gran trabajo, reemplazando “it” por “Natural Language Processing (NLP).”
Ejemplo 2
Consulta:
history = '''When was GPT4 released?
GPT4 was released in 2023'''
question = 'What progress has been made in computer vision this year?'
Respuesta de ChatGPT:
What progress has been made in computer vision this year?
En este caso, ChatGPT tuvo dificultades para sustituir “this year,” lo que llevó a una resolución incompleta.
Ejemplo 3
Consulta:
history = '''What is GPT3?
GPT-3 (Generative Pre-trained Transformer 3) is a state-of-the-art language processing model developed by OpenAI.
When was GPT4 released?
GPT4 was released in 2023'''
question = 'What is the difference between them? What are the advantages of the latter?'
Respuesta de ChatGPT:
Sorry, the information provided about GPT-4's release date is not accurate as it has not been officially announced by OpenAI. Therefore, it is not possible to answer the question about the difference between GPT-3 and GPT-4 or the advantages of the latter.
Desafortunadamente, ChatGPT se desvía de las instrucciones, posiblemente debido a su intrincado proceso de toma de decisiones. A pesar de nuestros esfuerzos por reforzar el prompt, ChatGPT ocasionalmente tiende a dar respuestas directas, lo que complica la tarea de resolución de correferencias.
Prompt few-shot con cadena de pensamiento: un enfoque refinado
La ingeniería de prompts desempeña un papel fundamental en el aprovechamiento de los LLMs de manera eficaz. Decidimos probar la combinación de prompts few-shot con el método de Chain of Thought (CoT) como una estrategia prometedora. Los prompts few-shot presentan a los LLMs múltiples ejemplos de referencia, guiándolos para que imiten esos ejemplos en sus respuestas. CoT mejora el rendimiento de los LLMs en tareas de razonamiento complejo al fomentar el razonamiento paso a paso en sus respuestas.
Al integrar estas técnicas, desarrollamos un formato de prompt para guiar a ChatGPT a través de la resolución de correferencias. El formato de prompt revisado incluye un historial de conversación vacío, ejemplos básicos, reemplazos fallidos de pronombres y casos que involucran múltiples pronombres, para ofrecer a ChatGPT instrucciones más explícitas y ejemplos de referencia. Las instancias en las que ChatGPT devuelve NEED COREFERENCE RESOLUTION: Yes son cruciales, ya que indican que ChatGPT necesita reemplazar pronombres o referencias ambiguas para una respuesta coherente.
Aquí hay un formato de prompt refinado:
REWRITE_TEMP = f'''
HISTORY:
[]
NOW QUESTION: Hello, how are you?
NEED COREFERENCE RESOLUTION: No => THOUGHT: Consequently, the output question mirrors the current query. => OUTPUT QUESTION: Hello, how are you?
-------------------
HISTORY:
[Q: Is Milvus a vector database?
A: Yes, Milvus is a vector database.]
NOW QUESTION: How to use it?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: I must substitute 'it' with 'Milvus' in the current question. => OUTPUT QUESTION: How to use Milvus?
-------------------
HISTORY:
[]
NOW QUESTION: What are its features?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: Although 'it' requires substitution, there's no suitable reference in the history. Thus, the output question remains unchanged. => OUTPUT QUESTION: What are its features?
-------------------
HISTORY:
[Q: What is PyTorch?
A: PyTorch is an open-source machine learning library for Python. It provides a flexible and efficient framework for building and training deep neural networks.
Q: What is Tensorflow?
A: TensorFlow is an open-source machine learning framework. It provides a comprehensive set of tools, libraries, and resources for building and deploying machine learning models.]
NOW QUESTION: What is the difference between them?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: 'Them' should be replaced with 'PyTorch and Tensorflow' in the current question. => OUTPUT QUESTION: What is the difference between PyTorch and Tensorflow?
-------------------
HISTORY:
[{history}]
NOW QUESTION: {question}
NEED COREFERENCE RESOLUTION: '''
Ejemplos probados y respuestas refinadas
Estos son algunos resultados de nuestros experimentos con prompts refinados:
Ejemplo 1
Consulta:
history = '''When was GPT-4 released?
GPT-4 was released in 2023'''
question = 'What progress has been made in computer vision this year?'
Respuesta refinada de ChatGPT:
Yes => THOUGHT: I need to replace "this year" with "2023" in the now question. => OUTPUT QUESTION: What progress has been made in computer vision in 2023?
Ejemplo 2:
Consulta:
history = '''What is GPT-3?
GPT-3 (Generative Pre-trained Transformer 3) is a state-of-the-art language processing model developed by OpenAI.
When was GPT-4 released?
GPT-4 was released in 2023'''
question = 'What is the difference between the two? What are the advantages of the latter?'
Respuesta refinada de ChatGPT:
Yes => THOUGHT: I need to replace 'the two' with 'GPT-3 and GPT-4' and 'the latter' with 'GPT-4' in the now question. => OUTPUT QUESTION: What is the difference between GPT-3 and GPT-4? What are the advantages of GPT-4?
El formato de prompt refinado mejora significativamente la capacidad de ChatGPT para manejar tareas complejas de resolución de correferencias. Las preguntas que involucran múltiples entidades, que anteriormente planteaban desafíos, ahora se abordan de manera efectiva. ChatGPT sustituye hábilmente pronombres y referencias ambiguas, entregando respuestas precisas y contextualmente relevantes.
Conclusión
La ingeniería de prompts desempeña un papel fundamental en la resolución de problemas de correferencia en sistemas RAG que usan LLMs. Al integrar técnicas innovadoras como prompts few-shot y métodos CoT, hemos mejorado significativamente el manejo de referencias complejas en sistemas RAG, lo que permite que LLMs como ChatGPT sustituyan pronombres y referencias ambiguas con precisión y produzcan respuestas coherentes.
Sigue leyendo

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



