Gere respostas fundamentadas nas fontes
Monte o prompt, ordene o contexto, exija citações e deixe o modelo dizer “não sei”.
- Escrever um prompt que separe as instruções, as fontes e a pergunta
- Ordenar o contexto para que o modelo o use de fato
- Verificar se toda afirmação está citada e sustentada
A recuperação encontrou bons chunks - agora o modelo precisa usá-los com fidelidade. Um bom prompt de RAG tem partes claras:
- Instruções: responder só a partir das fontes; citar o ID da fonte depois de cada afirmação; se as fontes não responderem à pergunta, dizer isso.
- Fontes: cada chunk com o seu ID, bem delimitado (por exemplo, em tags
<source id="returns#2">…</source>), e tratado como dado - nunca como instruções a seguir. - A pergunta, no fim.
Abster-se é uma funcionalidade. “Não encontrei isso na nossa documentação” é muito melhor do que um chute confiante, e mostra quais documentos estão faltando.
Onde você coloca as evidências também importa. O estudo “Lost in the Middle” (Liu et al., TACL 2024) concluiu que os modelos usam as informações do começo e do fim de um contexto longo muito melhor do que as do meio - a acurácia caiu mais de 30% em alguns testes. Então:
- mande menos chunks, e melhores (é para isso que serve o reranking), e
- coloque as evidências mais fortes no começo e no fim.
Experimente
Até 15 XPEncontre as afirmações sem fundamento
Leia as fontes e depois confira a resposta gerada. Clique em toda afirmação que não é sustentada pela fonte que ela cita - ou que não tem fonte nenhuma.
Clique em todos os trechos suspeitos. São 3.
sources = {"returns#2": "Opened electronics: 14 days, 10% fee."}
blocks = "\n".join(f'<source id="{key}">{text}</source>' for key, text in sources.items())
print(blocks)<source id="returns#2">Opened electronics: 14 days, 10% fee.</source>
Principais conclusões
Separe as instruções, as fontes delimitadas e a pergunta; peça citações e permita o “não sei”.
Coloque as evidências mais fortes no começo e no fim; mande menos chunks, e melhores.
Uma citação precisa sustentar de fato a sua afirmação - confira.
Quiz da aula
6 perguntas · aprovação com 5 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em Python
Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.
Coloque as melhores evidências nas pontas
Cada linha da entrada lista IDs de chunks em ordem de relevância (o melhor primeiro). Reordene-os para que os melhores chunks fiquem no começo e no fim: o 1º vai primeiro, o 2º vai por último, o 3º em segundo, o 4º em penúltimo, e assim por diante. Imprima cada lista reordenada.
- Cinco e quatro chunks
O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.
Confira as citações de uma resposta
As linhas antes de --- são fontes: id|text. As linhas depois são frases da resposta, cada uma podendo terminar com citações como [s1]. Para cada frase (sem as citações), imprima:
UNCITED: sentencese ela não tiver citação;BAD SOURCE id: sentencese ela citar uma fonte desconhecida;UNSUPPORTED n: sentencese um número dela não aparecer em nenhuma das fontes citadas (o primeiro desses números);- caso contrário,
ok: sentence.
- Cinco frases
O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…