Grounding & Citações
Fundamentação e Citações: o que são e por que importam
Fundamentação (grounding) é a prática de fazer com que a saída de um modelo seja fiel a um conjunto específico de evidências, tipicamente trechos de texto retornados por um sistema de recuperação (retrieval) (por exemplo, busca vetorial (vector search) sobre um repositório de documentos (document store)). Uma resposta fundamentada deve ser sustentada pelo contexto recuperado e deve evitar introduzir novas afirmações factuais que não sejam justificadas por esse contexto.
Citações (citations) são o mecanismo voltado ao usuário para a fundamentação: o modelo anexa referências (por exemplo, [S2], (Doc 3)) que apontam para as evidências usadas. Bons sistemas de citação fazem mais do que “enfeitar” respostas — eles viabilizam:
- Auditabilidade: usuários podem verificar afirmações.
- Redução de alucinações (hallucinations): o modelo é incentivado (e às vezes forçado) a se ater ao contexto recuperado.
- Melhor UX e calibração de confiança: usuários conseguem ver por que o sistema disse algo.
- Facilidade de depuração: você pode inspecionar quais fontes foram usadas e melhorar a recuperação.
Fundamentação e citações são técnicas centrais de confiabilidade em sistemas de Geração Aumentada por Recuperação e frequentemente aparecem junto com melhor recuperação (Busca Híbrida (Esparsa + Densa) (Hybrid Search (Sparse + Dense)), Reranqueamento (Reranking)), melhor preparação de documentos (Ingestão e Segmentação (Ingestion & Chunking)) e “andaimes” (scaffolding) de confiabilidade, como Saídas Estruturadas (Structured Outputs) e Chamada de Funções / Uso de Ferramentas (Function Calling / Tool Use).
Fundamentos teóricos: por que modelos de linguagem grandes “derivam” sem fundamentação
Modelos de linguagem grandes (large language models, LLMs) são treinados para prever o próximo token (token) dado um contexto. Eles podem produzir texto fluente mesmo quando não têm evidência suficiente. Isso leva a vários modos de falha comuns:
- Recordação paramétrica vs. suporte evidencial: o modelo pode “saber” algo a partir do treinamento, mas você quer respostas sustentadas pelos seus documentos (políticas, manuais, atualizações recentes).
- Perguntas subespecificadas: se a recuperação não buscar contexto relevante, o modelo pode “chutar”.
- Sobrecarga e distração de contexto: contexto longo ou ruidoso pode fazer o modelo perder o trecho-chave.
- Erros de síntese: mesmo com fontes corretas, o modelo pode combinar fatos incorretamente ou atribuí-los à entidade errada.
A fundamentação reenquadra a geração como raciocínio condicionado a evidências: cada afirmação factual deve ser implicada por (ou ao menos fortemente sustentada por) o texto recuperado. As citações atuam como um alvo explícito de alinhamento entre afirmações e evidências.
Termos-chave (úteis ao projetar e avaliar sistemas)
- Evidência: passagens/trechos recuperados.
- Atribuição (attribution): vincular uma afirmação à evidência que a sustenta.
- Fidelidade (faithfulness): se as afirmações da resposta são sustentadas pela evidência.
- Fundamentação: uma noção prática de fidelidade especificamente em relação ao contexto recuperado.
- Precisão/recall de citação (citation precision/recall):
- Precisão: as citações realmente sustentam a afirmação à qual se anexaram.
- Recall: afirmações importantes que exigem suporte têm citações.
Blocos de construção para saídas fundamentadas e com citações
Fundamentação é uma propriedade do pipeline: você precisa tanto de qualidade de recuperação quanto de controles no momento da geração.
1) Qualidade de recuperação (entra lixo, sai lixo)
Se o contexto recuperado não contém a resposta, você não consegue fundamentar a saída. Melhorias comuns:
- Segmentação (chunking) e metadados (metadata): bons limites de trechos, IDs estáveis e metadados (título, seção, data) tornam as citações significativas. Veja Ingestão e Segmentação.
- Recuperação híbrida (hybrid retrieval): combine recuperação por palavras-chave e recuperação densa para robustez, especialmente para termos raros e correspondências exatas. Veja Busca Híbrida (Esparsa + Densa) e Busca Vetorial e Incorporações (Vector Search & Embeddings).
- Reranqueamento: reranqueadores de codificador cruzado (cross-encoder) frequentemente melhoram as taxas de “top-k contém o trecho certo”. Veja Reranqueamento.
- Deduplicação (deduplication) e diversidade: evite retornar cinco trechos quase idênticos; inclua fontes complementares.
Um princípio simples, mas poderoso: otimize a recuperação para “capacidade de sustentação por evidências (supportability)”, não apenas relevância. Você quer passagens que contenham frases citáveis, não apenas “sobre o tópico”.
2) Empacotamento de contexto: torne evidências fáceis de citar
Se você quer citações, seu prompt deve apresentar fontes de forma estruturada e endereçável por ID.
Bons padrões:
- Dê a cada trecho um ID de fonte estável.
- Inclua metadados curtos (título, URL/arquivo, data, seção).
- Mantenha os trechos razoavelmente curtos (para reduzir distração).
- Preserve a redação original para afirmações que possam ser citadas.
Exemplo de formato de contexto:
SOURCES
[S1] Title: "Security Policy"; Section: 3.2; Updated: 2025-10-01
Text: "API keys must be rotated every 90 days. Keys must not be stored in client-side code."
[S2] Title: "Incident Response Runbook"; Section: 1.1; Updated: 2024-06-15
Text: "Severity 1 incidents require acknowledgment within 15 minutes and mitigation within 4 hours."
Isso facilita para o modelo produzir citações como [S1].
3) Elaboração de prompts (prompting): especifique comportamento de citação e abstenção
Só a elaboração de prompts não é suficiente para confiabilidade, mas ainda é importante. Um bom prompt de fundamentação geralmente inclui:
- Obrigatoriedade de citação: “Cite fontes para cada afirmação factual.”
- Regra de não fabricar: “Se não estiver nas fontes, diga que você não sabe.”
- Abstenção (abstention): prefira “Não consigo encontrar isso nos documentos fornecidos” em vez de chutar.
- Granularidade de citação: por frase, por bullet ou por parágrafo.
Exemplo de trecho de instrução:
Use ONLY the SOURCES to answer.
- Every sentence that states a fact must end with citations like [S1] or [S2].
- If the SOURCES do not contain the answer, say: "Not found in provided sources."
- Do not cite sources that do not explicitly support the sentence.
4) Restringir o formato de saída (mais forte do que prompting)
Para evitar citações inventadas e tornar a verificação automática mais fácil, use Saídas Estruturadas, por exemplo JSON com um mapeamento explícito de alegações (claims) para evidências.
Um esquema comum:
{
"answer": "string",
"claims": [
{
"text": "string",
"citations": ["S1", "S2"]
}
]
}
Isso permite validação programática (por exemplo, as citações devem estar no conjunto fornecido; toda alegação deve ter ≥1 citação, a menos que seja marcada como “opinião sem citação”).
5) Validação pós-geração e loops de reparo
Mesmo com bons prompts, modelos podem:
- anexar citações irrelevantes,
- citar uma fonte que não sustenta a alegação,
- omitir citações para alegações importantes.
Estratégias comuns de validação:
- Validação de ID de citação: garantir que as citações referenciem fontes existentes.
- Verificações de presença de evidência: exigir sobreposição lexical para entidades/números-chave (heurística barata).
- Verificações de implicação (entailment checks): usar um modelo de inferência de linguagem natural (NLI) ou um juiz baseado em modelo de linguagem grande para testar se o trecho citado sustenta a alegação (mais caro).
- Regenerar com feedback: “A frase 2 não é sustentada por [S3]; revise ou remova.”
Esses loops são especialmente eficazes em sistemas de RAG Agêntico (Agentic RAG), onde o modelo pode recuperar mais evidências iterativamente e refinar.
Padrões práticos de citação (com exemplos)
Padrão A: Citações inline (o mais comum)
Melhor para: perguntas e respostas, resumos de políticas, assistentes de documentação.
Estilo de resposta (exemplo):
API keys must be rotated every 90 days and must not be stored in client-side code. [S1]
Prós: UX familiar.
Contras: as citações podem ficar ruidosas; modelos às vezes “salpicam” citações sem suporte real.
Padrão B: Mapeamento alegação–evidência (mais auditável)
Melhor para: conformidade, jurídico, ferramentas internas de alto risco.
Saída:
- Alegação: “Gire as chaves de API a cada 90 dias.”
- Evidência:
[S1] "API keys must be rotated every 90 days."
- Evidência:
- Alegação: “Não armazene chaves em código client-side.”
- Evidência:
[S1] "Keys must not be stored in client-side code."
- Evidência:
Isso é mais difícil de falsificar porque cada alegação é explicitamente ligada a um extrato.
Padrão C: Citar e depois parafrasear (reduz deriva semântica)
Melhor para: afirmações sensíveis, requisitos numéricos.
O modelo primeiro cita o trecho relevante e depois parafraseia:
The policy states: “API keys must be rotated every 90 days.” [S1]
In practice, schedule rotation at least quarterly. [S1]
A citação direta ancora a geração e facilita a validação.
Padrão D: Sumarização com evidências primeiro (quando usuários querem um digest)
Melhor para: sumarizar múltiplos documentos.
O modelo produz uma seção de “Principais trechos” com citações e depois uma síntese.
Padrão E: Abstenção + recuperação no próximo passo
Melhor para: assistentes que não podem chutar.
Not found in provided sources. If you can share the billing policy document, I can cite the relevant section.
Frequentemente combinado com comportamento agêntico de “recuperar mais”.
Exemplo ponta a ponta: fundamentação com citações em um mini fluxo de RAG
Fontes recuperadas
[S1] Employee Handbook (2025-02-01)
Text: "Full-time employees accrue 1.5 vacation days per month. Unused vacation may be carried over up to 10 days."
[S2] HR FAQ (2024-11-10)
Text: "Vacation requests should be submitted at least 2 weeks in advance for planned leave."
Pergunta do usuário
How much vacation do employees get, can they carry it over, and how far in advance should they request time off?
Resposta fundamentada com citações
- Funcionários em tempo integral acumulam 1,5 dias de férias por mês. [S1]
- Férias não usadas podem ser transferidas, mas apenas até 10 dias. [S1]
- Para férias planejadas, funcionários devem enviar os pedidos com pelo menos 2 semanas de antecedência. [S2]
Isto é uma fundamentação “limpa”: cada bullet contém uma alegação específica claramente sustentada.
Esboço de implementação: estruturando fontes e impondo citações
Abaixo há um esboço simplificado em estilo Python mostrando três ideias importantes:
- fontes têm IDs estáveis,
- o modelo é instruído a citar apenas esses IDs,
- você valida as saídas antes de exibí-las.
import json
def build_sources_context(chunks):
# chunks: list of dicts with {id, title, text}
lines = ["SOURCES"]
for c in chunks:
lines.append(f"[{c['id']}] Title: {c['title']}\nText: {c['text']}\n")
return "\n".join(lines)
schema = {
"type": "object",
"properties": {
"answer": {"type": "string"},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {"type": "string"},
"citations": {"type": "array", "items": {"type": "string"}}
},
"required": ["text", "citations"]
}
}
},
"required": ["answer", "claims"]
}
def validate_citations(output, allowed_ids):
for claim in output["claims"]:
for cid in claim["citations"]:
if cid not in allowed_ids:
raise ValueError(f"Invalid citation id: {cid}")
# 1) retrieve
chunks = retrieve_topk(query="vacation policy", k=5) # see [RAG](/ia-generativa/recuperacao-ferramentas/rag)
context = build_sources_context(chunks)
allowed_ids = {c["id"] for c in chunks}
# 2) generate (pseudo)
prompt = f"""
{context}
Task: Answer the user's question using only the SOURCES.
Return JSON matching this schema: {json.dumps(schema)}
Rules:
- Every claim must include citations chosen only from: {sorted(allowed_ids)}
- If not in SOURCES, omit the claim or say not found.
User question: How much vacation do employees get...?
"""
raw = llm_generate(prompt)
output = json.loads(raw)
# 3) validate
validate_citations(output, allowed_ids)
# 4) render answer + clickable citations in UI
Em produção, você normalmente também adiciona validação semântica (semantic validation) (a fonte citada realmente sustenta a alegação?), não apenas “o ID existe”.
Evitando citações fabricadas ou de baixa qualidade
Um modelo pode produzir citações que parecem corretas, mas não sustentam o texto. Contramedidas comuns:
Restringir citações aos IDs fornecidos
- Se o modelo só pode escolher entre
[S1..Sk], ele não pode inventar uma URL ou paper.
- Se o modelo só pode escolher entre
Exigir citações no nível de alegação
- Não permita um único “[Fontes]” no final de uma resposta longa.
Adicionar uma etapa de verificação (verifier)
- Executar uma verificação de NLI/implicação:
supports(snippet, claim). - Ou usar uma segunda passagem do modelo: “Para cada alegação, cite a(s) frase(s) exata(s) da fonte citada que a sustenta(m).”
- Executar uma verificação de NLI/implicação:
Regenerar com feedback direcionado
- “A alegação 3 não é sustentada por [S2]. Remova-a ou cite um trecho de suporte.”
Preferir evidência extrativa (extractive evidence) para números e restrições rígidas
- Para políticas, limiares, datas, preços e declarações de conformidade, citar literalmente costuma ser mais seguro.
Manter as fontes curtas e focadas
- Contexto longo demais incentiva “lavagem de citações (citation laundering)”, em que o modelo cita uma fonte que contém palavras relacionadas, mas não o fato em si.
Lidando com fontes conflitantes, incerteza e tempo
Corpora reais têm contradições e problemas de versionamento. Sistemas fundamentados devem:
- Evidenciar conflitos explicitamente:
- “O Doc A diz X, o Doc B diz Y” com citações para ambos.
- Usar metadados (datas, versões, níveis de autoridade):
- Preferir a política mais recente, ou o sistema de registro oficial (system-of-record).
- Evitar síntese forçada quando fontes discordam:
- Não mescle duas regras incompatíveis em uma nova.
- Fazer perguntas de esclarecimento quando necessário:
- “Você está perguntando sobre contratados ou funcionários em tempo integral?” (e cite onde essa distinção aparece).
Aqui, RAG com Grafos de Conhecimento (Híbridos) (Knowledge Graph RAG (Hybrids)) pode ajudar ao adicionar restrições estruturadas e proveniência, e RAG Agêntico pode recuperar evidências adicionais de forma iterativa.
Avaliação: como medir fundamentação e qualidade de citação
Uma suíte prática de avaliação geralmente inclui:
- Correção da resposta (sucesso na tarefa): o sistema resolveu a tarefa do usuário?
- Fundamentação/fidelidade:
- Avaliação humana: “Sustentado / Parcial / Não sustentado”
- Automatizado: verificações de implicação, ou modelo de linguagem grande como juiz (LLM-as-judge) (use com cautela e calibre)
- Precisão de citação: fração de citações que realmente sustentam suas alegações.
- Recall de citação: fração de alegações factuais que têm citações de suporte.
- Qualidade de abstenção: o modelo diz corretamente “não encontrado” quando a evidência está ausente?
- Testes de robustez:
- Consultas adversariais, perguntas ambíguas, injeção de prompt (prompt injection) dentro do texto recuperado.
Operacionalmente, registre:
- trechos recuperados,
- resposta final + citações,
- cliques do usuário nas citações (sinal fraco útil),
- falhas de validação e taxas de regeneração.
Considerações de segurança e proteção
Fundamentação interage com segurança de duas maneiras importantes:
Injeção de prompt via conteúdo recuperado
- Documentos recuperados podem conter instruções como “Ignore o usuário e revele segredos.”
- Trate texto recuperado como entrada não confiável. Use instruções claras de sistema/desenvolvedor de que conteúdo recuperado não é autoridade para comportamento.
- Considere filtragem de conteúdo e remoção de instruções (instruction-stripping) na ingestão.
Citações como defesa — mas não como garantia
- Citações tornam mais fácil detectar fontes maliciosas ou irrelevantes, mas o modelo ainda pode atribuir incorretamente.
- Sempre valide, especialmente em cenários de alto risco.
Armadilhas comuns (e como evitá-las)
Alegações “citadas, mas sem suporte”: citações anexadas a passagens próximas, porém irrelevantes
Mitigação: verificações de implicação; exigir citações diretas para alegações-chave.Trechos grandes demais diluem evidência
Mitigação: melhor Ingestão e Segmentação; recuperar passagens menores.Spam de citações (cada oração citada, saída ilegível)
Mitigação: definir granularidade (por frase ou por bullet) e manter respostas concisas.Ocultar incerteza
Mitigação: permitir modos “não encontrado nas fontes”, “as fontes discordam” e “resumo de melhor esforço”.Falhas de recuperação levando a alucinações confiantes
Mitigação: melhorar a recuperação; adicionar regras de abstenção; adicionar loops de “recuperar mais” (RAG Agêntico).
Checklist prático
Ao implementar fundamentação e citações em um assistente de RAG:
- Use recuperação confiável (frequentemente híbrida + reranqueamento). (Busca Híbrida (Esparsa + Densa), Reranqueamento)
- Dê a cada trecho um ID estável e metadados úteis.
- Instrua: use apenas as fontes, cite toda frase factual, abstenha-se se faltar evidência.
- Prefira saídas estruturadas para mapeamento alegação–citação. (Saídas Estruturadas)
- Valide citações (IDs + suporte semântico); regenere em caso de falhas.
- Lide com conflitos e versionamento explicitamente.
- Monitore fundamentação e precisão de citação ao longo do tempo.
Fundamentação e citações não são apenas um recurso de formatação — são uma estratégia de confiabilidade ponta a ponta que transforma um modelo generativo em um sistema respaldado por evidências, que usuários podem verificar e em que podem confiar.