Preparação para entrevista
RefatoraçãoOrganizando dados

Tirar o Conhecimento de Dentro do Prompt

Move Retrieval Out of the Prompt

Tirar o Conhecimento de Dentro do Prompt (Move Retrieval Out of the Prompt) é uma refatoração de IA para sistemas com LLM, do grupo Organizando dados. Parar de colar documentos no system prompt e buscar só o trecho relevante.

Elemento
17/35
Nível
Intermediário
Leitura
5 min
Atualizado
Nesta página 8
  1. 01Problema
  2. 02Solução
  3. 03Antes e depois
  4. 04Por que funciona
  5. 05Passo a passo seguro
  6. 06Riscos
  7. 07Desafio
  8. 08Teste seu entendimento
  9. ··Perguntas rápidas

Problema

O system prompt carrega documentos inteiros (políticas, catálogos, FAQs) em toda chamada, cresce sem parar e fica desatualizado. É o smell Prompt Inchado, na sua forma de conhecimento colado.

O assistente de RH da empresa ia bem na demo: dez políticas no system prompt, perguntas de férias e home office com resposta na hora. Em seis meses o jurídico mandou 27 políticas novas. Alguém colou. O prompt passou de uns 12 mil tokens para cerca de 85 mil. Cada pergunta de “quantos dias de férias eu tenho?” pagava a leitura das 37.

Em março o RH mudou home office de 3 dias para 2. A política nova entrou no índice interno no mesmo dia. O prompt do bot ainda tinha o parágrafo de 2024, mais abaixo um recado de “regra nova (mar/26): 2 dias”, e o modelo escolhia um dos dois conforme a pergunta. No caso Moffatt v. Air Canada (2024), um chatbot de companhia aérea inventou uma política de reembolso e a empresa foi condenada a cumprir o que o bot prometeu. Política errada no prompt vira compromisso com o cliente.

Solução

Tire o conhecimento do prompt e leve para um índice de busca. A cada pergunta, busque só os trechos relevantes e coloque-os no contexto como dado, com a fonte. O prompt fica com as instruções de comportamento.

Antes e depois

-SYSTEM = f"""Você é o assistente de RH. Responda com base nas políticas abaixo.
-{open('politicas/ferias.md').read()}
-{open('politicas/reembolso.md').read()}
-{open('politicas/home_office.md').read()}
-... [37 políticas, 85 mil tokens]"""
-reply = llm(SYSTEM, question)
+SYSTEM = """Você é o assistente de RH. Responda só com base nos trechos entre
+<trecho>. Cite a política e a seção de cada afirmação. Se os trechos não
+responderem, diga que não encontrou e indique o canal do RH."""
+
+chunks = index.search(question, k=6, filters={"status": "vigente"})
+context = "\n".join(f'<trecho fonte="{c.doc}" secao="{c.section}">{c.text}</trecho>' for c in chunks)
+reply = llm(SYSTEM, f"{context}\n\nPergunta: {question}")

Antes: todas as políticas em toda chamada.

flowchart LR
  P[("1. 37 políticas no system prompt")]:::store --> M(["2. Modelo"]):::llm
  Q(["Pergunta"]):::io --> M
  M --> OUT(["3. Resposta, às vezes com regra antiga"]):::io

Depois: o índice guarda o conhecimento; o prompt recebe só o que importa.

flowchart LR
  Q(["1. Pergunta"]):::io --> S["2. Buscar trechos vigentes"]:::tool
  I[("Índice de políticas")]:::store --> S
  S --> M(["3. Modelo com 6 trechos e as fontes"]):::llm
  M --> OUT(["4. Resposta citada"]):::io
  1. A pergunta chega.
  2. A busca traz poucos trechos relevantes, filtrados por versão vigente.
  3. O modelo responde só com base neles.
  4. A resposta cita a fonte; sem trecho relevante, ela diz que não encontrou.

Uma pergunta, dois contextos

Pergunta: “home office agora é quantos dias?”

Antes, o modelo via 85 mil tokens, inclusive o parágrafo de 2024 (“3 dias”) e o recado de março (“2 dias”), longe um do outro. Depois, o filtro status: vigente devolve um trecho:

<trecho fonte="politica-home-office-v4.md" secao="3. Dias remotos">
A partir de 1 de março de 2026, o regime é de 2 dias remotos por semana.
A versão de 2024 (3 dias) está revogada.
</trecho>

A resposta cita politica-home-office-v4.md, seção 3. Se a busca não achar trecho vigente, o bot diz que não encontrou e aponta o canal do RH, em vez de improvisar.

Por que funciona

O prompt guarda comportamento, que muda pouco. O índice guarda conhecimento, que muda o tempo todo. Separar os dois resolve três problemas ao mesmo tempo.

  • Custo. Cada chamada leva poucos trechos em vez de dezenas de documentos. Os 85 mil tokens viram, neste exemplo, da ordem de 2 mil.
  • Atualização. Uma política nova entra no índice no mesmo dia, sem PR no prompt. O filtro de vigente esconde a versão antiga.
  • Atenção. O modelo lê só o que importa para aquela pergunta. Não há parágrafo de 2024 competindo com o de 2026 no mesmo contexto.

Com a fonte em cada trecho, a resposta pode ser conferida. “Não encontrei” vira um sinal útil de lacuna na documentação, em vez de uma alucinação educada. O padrão de destino é RAG.

Checagem +20 XP de primeiraO bot de RH ainda responde '3 dias de home office' uma semana depois da política v4 (2 dias) ter sido publicada no wiki interno. O system prompt tem as 37 políticas coladas. O que a refatoração muda primeiro nesse caso?

Passo a passo seguro

  1. Meça. Monte um eval com perguntas reais e a política que responde cada uma. Inclua perguntas sobre regras que mudaram. Guarde acerto, custo e latência, e anote se a resposta cita a versão certa.
  2. Separe instruções de conhecimento no prompt atual. O que descreve o tom, os limites e o que fazer quando não souber fica. O que descreve férias, reembolso e home office sai.
  3. Quebre os documentos em trechos que respeitem a estrutura (seção, cláusula), com título e documento de origem em cada um. Veja Chunking com Contexto.
  4. Indexe com metadados: documento, seção, data, status (vigente / revogada). Sem o status, a busca devolve a v3 e a v4 juntas.
  5. Avalie a busca sozinha: para cada pergunta do eval, o trecho certo está entre os primeiros? Se não estiver, o modelo nem vê a regra. Melhore a busca antes de julgar o prompt novo.
  6. Troque o prompt pela versão com trechos delimitados e instrução de citar. Delimitar com tags deixa claro o que é dado e o que é instrução.
  7. Meça de novo. Acerto igual ou melhor, custo e latência menores, e citações batendo com a versão vigente.

Riscos

  • A busca perde o trecho certo. A resposta fica errada ou vazia. Meça a busca separadamente e melhore com Busca Híbrida e Reordenação.
  • Perguntas que cruzam documentos. “Posso acumular férias com o recesso de fim de ano?” precisa de dois trechos. Um k pequeno demais corta a segunda política. Aumente k ou use busca em mais de uma etapa.
  • Material pequeno. Se tudo cabe no contexto com folga, mandar inteiro com cache pode ser melhor. Veja RAG Desnecessário e Trocar RAG por Contexto Direto.
  • Colar de novo quando a busca falha. O reflexo de “então devolve as 37 para o modelo não errar” recria o prompt inchado. Corrija a busca e o eval; não reabra a porta.

Erro comum: índice sem versão

Se o documento no índice é um ferias.md que alguém sobrescreve, você não consegue filtrar vigente nem auditar o que o bot viu na terça. Grave cada publicação como versão, com data e status. A busca padrão lê só vigente. O trace guarda fonte e versao de cada trecho enviado.

Checagem +20 XP de primeiraDepois da troca, o eval de resposta caiu. O eval de busca mostra que, em 30% das perguntas, o trecho certo não está no top 6. O time quer 'melhorar o prompt do assistente'. O que você faz?

Desafio

O prompt de um assistente de vendas tem a tabela de preços de 300 produtos e as regras de desconto. As regras de desconto mudam uma vez por ano; a tabela, toda semana. O que vai para o índice e o que fica?

Ver solução

Nenhum dos dois precisa ficar no prompt inteiro. A tabela de preços muda toda semana e cada pergunta usa poucas linhas: o melhor é uma ferramenta de consulta por produto (dado exato, não busca semântica). As regras de desconto são curtas e estáveis: podem ficar no prompt, ou numa ferramenta de cálculo de preço final, para o modelo não fazer conta. O prompt fica com o comportamento de vendas.

Teste seu entendimento

Checagem +20 XP de primeiraUma pergunta de reembolso precisa da política de despesas e da de cartão corporativo. Com k=3 a busca devolve três seções da primeira e nenhuma da segunda. Qual ajuste é o mais direto?

Checagem +20 XP de primeiraO jurídico publica a v5 da política de férias às 9h. Às 9h12 um funcionário pergunta no bot e recebe a regra da v4. O índice tem um único documento ferias.md, sobrescrito. Qual lacuna da refatoração aparece aqui?

Checagem +20 XP de primeiraSeu corpus de políticas tem 8 páginas no total, cabe folgado na janela, e muda duas vezes por ano. A busca às vezes perde a exceção que está em outra seção. Esta refatoração ainda é a primeira escolha?

Checagem +20 XP de primeiraO bot passa a dizer 'não encontrei' em perguntas que o wiki cobre. O eval de busca está bom. Qual hipótese você testa antes de mexer no índice de novo?

Perguntas rápidas

O que é Tirar o Conhecimento de Dentro do Prompt?

Tirar o Conhecimento de Dentro do Prompt (Move Retrieval Out of the Prompt) é uma refatoração de IA para sistemas com LLM, do grupo Organizando dados. Parar de colar documentos no system prompt e buscar só o trecho relevante.

Que problema Tirar o Conhecimento de Dentro do Prompt resolve?

Trata Prompt Inchado.

Aonde Tirar o Conhecimento de Dentro do Prompt leva?

Ao padrão de projeto Geração Aumentada por Busca (RAG).

Para ir além

Relações

Smells que trata 1
Buscar