Melhorando a capacidade do ChatGPT de entender prompts ambíguos
Este artigo foi publicado originalmente em The New Stack e é republicado aqui com permissão.
A técnica de engenharia de prompts ajuda modelos de linguagem grandes (LLMs) a lidar com pronomes e outras correferências complexas em sistemas de geração aumentada por recuperação (RAG).
No domínio em constante expansão da IA, modelos de linguagem grandes (LLMs) como o ChatGPT estão impulsionando pesquisas e aplicações inovadoras a uma velocidade sem precedentes. Um desenvolvimento significativo é o surgimento da geração aumentada por recuperação (RAG). Essa técnica combina o poder dos LLMs com um banco de dados vetorial que atua como memória de longo prazo para aumentar a precisão das respostas geradas. Uma manifestação exemplar da abordagem RAG é o projeto de código aberto Akcio, que oferece um sistema robusto de perguntas e respostas.
Arquitetura do Akcio
Na arquitetura do Akcio, o conhecimento específico do domínio é integrado de forma contínua a um armazenamento vetorial, como Milvus ou Zilliz (Milvus totalmente gerenciado), usando um carregador de dados. O armazenamento vetorial recupera os resultados Top-K mais relevantes para a consulta do usuário e os transmite ao LLM, fornecendo ao LLM contexto sobre a pergunta do usuário. Posteriormente, o LLM refina suas respostas com base no conhecimento externo.
Por exemplo, se um usuário consultar, “Quais são os casos de uso de modelos de linguagem grandes em 2023?” sobre um artigo intitulado “Relatório de insights sobre o progresso dos modelos de linguagem grandes em 2023” que foi importado para o Akcio, o sistema recupera habilmente as três passagens mais relevantes do relatório:
1. Em 2023, os casos de uso dos LLMs podem ser divididos em duas categorias: IA generativa e tomada de decisão. Espera-se que os cenários de tomada de decisão tenham maior valor de negócio.
2. O cenário de IA generativa inclui principalmente interação por diálogo, desenvolvimento de código, agentes inteligentes etc.
3. As aplicações de PLN incluem classificação de texto, tradução automática, análise de sentimentos, sumarização automática etc.
O Akcio combina essas passagens com a consulta original e as encaminha ao LLM, gerando uma resposta nuançada e precisa:
Os cenários de aplicação da indústria de modelos grandes podem ser divididos em cenários de geração e de tomada de decisão.
O desafio da resolução de correferência em RAG
No entanto, apesar dos avanços realizados, implementar sistemas RAG introduz desafios, particularmente em conversas de múltiplos turnos envolvendo resolução de correferência. Considere esta sequência de perguntas:
Q1: Quais são os casos de uso do modelo de linguagem grande em 2023?
A1: Os casos de uso de modelos de linguagem grandes podem ser divididos em IA generativa e tomada de decisão.
Q2: Quais são as diferenças entre eles, e você pode fornecer exemplos?
O pronome “eles” em Q2 refere-se a “IA generativa e tomada de decisão.” Ainda assim, o LLM pode gerar resultados irrelevantes para essa pergunta que prejudicam a coerência da conversa:
1. BERT e GPT são modelos importantes no campo do NLP, mas têm diferenças significativas em seu design e cenários de aplicação.
2. A diferença entre modelos grandes e modelos pequenos está em sua escala e complexidade. Modelos grandes geralmente têm mais parâmetros e estruturas mais complexas, exigindo mais recursos computacionais e tempo para treinamento e inferência. Modelos pequenos, por outro lado, são relativamente simples, com menos parâmetros e velocidades de treinamento e inferência mais rápidas.
3. No entanto, não há informações adicionais para distinguir entre esses dois produtos porque eles parecem muito semelhantes.
Usando o ChatGPT para resolução de correferência
Métodos tradicionais, como tokenização, lematização e substituição de palavras-chave usando redes neurais recorrentes, muitas vezes são inadequados para resolver referências complexas. Consequentemente, pesquisadores recorreram a LLMs como o ChatGPT para tarefas de resolução de correferência. Essa abordagem envolve instruir o ChatGPT a substituir pronomes ou manter a pergunta original com base no contexto fornecido. Embora esse método seja promissor, ele ocasionalmente produz respostas diretas em vez de seguir as instruções do prompt, o que indica a necessidade de uma estratégia mais refinada.
Exemplos testados
Experimentamos comandos diretos incentivando o ChatGPT a substituir pronomes usando o seguinte 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}'''
Exemplo 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?'
Resposta do ChatGPT:
Que problema o Processamento de Linguagem Natural (NLP) resolve?
Nesse caso, o ChatGPT fez um ótimo trabalho, substituindo “it” por “Processamento de Linguagem Natural (NLP).”
Exemplo 2
Consulta:
history = '''When was GPT4 released?
GPT4 was released in 2023'''
question = 'What progress has been made in computer vision this year?'
Resposta do ChatGPT:
Que progresso foi feito em visão computacional este ano?
Nesse caso, o ChatGPT teve dificuldade em substituir “this year,” levando a uma resolução incompleta.
Exemplo 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?'
Resposta do ChatGPT:
Desculpe, a informação fornecida sobre a data de lançamento do GPT-4 não é precisa, pois ela não foi anunciada oficialmente pela OpenAI. Portanto, não é possível responder à pergunta sobre a diferença entre GPT-3 e GPT-4 ou as vantagens do último.
Infelizmente, o ChatGPT se desvia das instruções, possivelmente devido ao seu intricado processo de tomada de decisão. Apesar de nossos esforços para reforçar o prompt, o ChatGPT ocasionalmente tende a dar respostas diretas, complicando a tarefa de resolução de correferência.
Prompt few-shot com Chain of Thought: uma abordagem refinada
A engenharia de prompts desempenha um papel fundamental no aproveitamento de LLMs de forma eficaz. Decidimos testar a combinação de prompts few-shot com o método Chain of Thought (CoT) como uma estratégia promissora. Prompts few-shot apresentam aos LLMs vários exemplos de referência, orientando-os a emular esses exemplos em suas respostas. O CoT melhora o desempenho dos LLMs em tarefas de raciocínio complexas ao incentivar o raciocínio passo a passo em suas respostas.
Ao integrar essas técnicas, desenvolvemos um formato de prompt para orientar o ChatGPT na resolução de correferências. O formato de prompt revisado inclui um histórico de conversa vazio, exemplos básicos, substituições de pronomes malsucedidas e casos envolvendo múltiplos pronomes, para oferecer ao ChatGPT instruções mais explícitas e exemplos de referência. Instâncias em que o ChatGPT retorna NEED COREFERENCE RESOLUTION: Yes são cruciais, pois indicam que o ChatGPT precisa substituir pronomes ou referências ambíguas para uma resposta coerente.
Aqui está um formato de prompt refinado:
REWRITE_TEMP = f'''
HISTORY:
[]
NOW QUESTION: Olá, como vai?
NEED COREFERENCE RESOLUTION: No => THOUGHT: Consequentemente, a pergunta de saída espelha a consulta atual. => OUTPUT QUESTION: Olá, como vai?
-------------------
HISTORY:
[Q: O Milvus é um banco de dados vetorial?
A: Sim, Milvus é um banco de dados vetorial.]
NOW QUESTION: Como usá-lo?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: Devo substituir 'lo' por 'Milvus' na pergunta atual. => OUTPUT QUESTION: Como usar o Milvus?
-------------------
HISTORY:
[]
NOW QUESTION: Quais são seus recursos?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: Embora 'ele' exija substituição, não há referência adequada no histórico. Portanto, a pergunta de saída permanece inalterada. => OUTPUT QUESTION: Quais são seus recursos?
-------------------
HISTORY:
[Q: O que é PyTorch?
A: PyTorch é uma biblioteca de machine learning de código aberto para Python. Ela fornece uma estrutura flexível e eficiente para criar e treinar redes neurais profundas.
Q: O que é Tensorflow?
A: TensorFlow é uma estrutura de machine learning de código aberto. Ela fornece um conjunto abrangente de ferramentas, bibliotecas e recursos para criar e implantar modelos de machine learning.]
NOW QUESTION: Qual é a diferença entre eles?
NEED COREFERENCE RESOLUTION: Yes => THOUGHT: 'Eles' deve ser substituído por 'PyTorch e Tensorflow' na pergunta atual. => OUTPUT QUESTION: Qual é a diferença entre PyTorch e Tensorflow?
-------------------
HISTORY:
[{history}]
NOW QUESTION: {question}
NEED COREFERENCE RESOLUTION: '''
Exemplos testados e respostas refinadas
Aqui estão alguns resultados de nossos experimentos com prompts refinados:
Exemplo 1
Consulta:
history = '''Quando o GPT-4 foi lançado?
GPT-4 foi lançado em 2023'''
question = 'Que progresso foi feito em visão computacional este ano?'
Resposta refinada do ChatGPT:
Yes => THOUGHT: Preciso substituir "este ano" por "2023" na pergunta atual. => OUTPUT QUESTION: Que progresso foi feito em visão computacional em 2023?
Exemplo 2:
Consulta:
history = '''O que é GPT-3?
GPT-3 (Generative Pre-trained Transformer 3) é um modelo de processamento de linguagem de última geração desenvolvido pela OpenAI.
Quando o GPT-4 foi lançado?
GPT-4 foi lançado em 2023'''
question = 'Qual é a diferença entre os dois? Quais são as vantagens do último?'
Resposta refinada do ChatGPT:
Yes => THOUGHT: Preciso substituir 'os dois' por 'GPT-3 e GPT-4' e 'o último' por 'GPT-4' na pergunta atual. => OUTPUT QUESTION: Qual é a diferença entre GPT-3 e GPT-4? Quais são as vantagens do GPT-4?
O formato de prompt refinado aprimora significativamente a capacidade do ChatGPT de lidar com tarefas complexas de resolução de correferências. Perguntas envolvendo múltiplas entidades, que anteriormente apresentavam desafios, agora são abordadas de forma eficaz. O ChatGPT substitui habilmente pronomes e referências ambíguas, entregando respostas precisas e contextualmente relevantes.
Conclusão
A engenharia de prompts desempenha um papel fundamental na resolução de problemas de correferência em sistemas RAG usando LLMs. Ao integrar técnicas inovadoras, como prompts few-shot e métodos CoT, melhoramos significativamente o tratamento de referências complexas em sistemas RAG, permitindo que LLMs como o ChatGPT substituam pronomes e referências ambíguas com precisão, resultando em respostas coerentes.
Continue lendo

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

Context Engineering Strategies for AI Agents: A Developer’s Guide
Learn practical context engineering strategies for AI agents. Explore frameworks, tools, and techniques to improve reliability, efficiency, and cost.



