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.
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
A pergunta chega.
A busca traz poucos trechos relevantes, filtrados por versão vigente.
O modelo responde só com base neles.
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.
Passo a passo seguro
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.
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.
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.
Indexe com metadados: documento, seção, data, status (vigente / revogada). Sem o status, a busca devolve a v3 e a v4 juntas.
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.
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.
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.
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.
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
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?