Pressione Esc para fechar

Retrieval - Metadata Filtering

← Voltar para o Dia 4: RAG: finalmente

Metadata Filtering

O que é

Metadata Filtering é o uso dos metadados associados aos chunks para restringir quais informações podem ser consideradas durante o Retrieval.

Enquanto a busca vetorial pergunta:

"Quais conteúdos são semanticamente semelhantes à minha pergunta?"

o Metadata Filtering pode acrescentar:

"Quais conteúdos podem ser considerados antes mesmo de avaliar a similaridade?"

Os metadados podem representar características como:

documento
página
seção
categoria
autor
departamento
idioma
data
versão
permissão de acesso

Por exemplo, um chunk pode possuir:

Conteúdo:
"Funcionários devem solicitar férias com 30 dias de antecedência."

Metadata:
{
  "documento": "politica_ferias.pdf",
  "departamento": "RH",
  "ano": 2026,
  "idioma": "pt-BR"
}

O filtro permite selecionar apenas chunks que atendam a determinadas condições.

Como funciona

Imagine uma base com políticas de uma empresa de vários anos:

Política de férias 2024
Política de férias 2025
Política de férias 2026
Política de benefícios 2026
Política de viagens 2026

O usuário pergunta:

"Qual é a política de férias vigente em 2026?"

Uma busca puramente semântica poderia encontrar documentos de 2024, 2025 e 2026, porque todos tratam de férias.

Podemos utilizar metadata filtering para restringir a busca:

Filtro:
categoria = "férias"
ano = 2026

Somente depois disso o sistema realiza a busca entre os documentos permitidos:

Base de conhecimento
        ↓
Metadata Filtering
        ↓
Documentos de férias de 2026
        ↓
Busca semântica
        ↓
Resultados relevantes
        ↓
LLM

Em algumas arquiteturas, o filtro pode ser aplicado antes ou durante a busca vetorial, dependendo da tecnologia utilizada e de como os índices foram configurados.

O ponto principal é que o filtro atua como uma restrição estruturada, enquanto a busca vetorial atua como um critério de relevância semântica.

Isso permite combinar os dois:

Consulta
   ↓
┌──────────────────────────────┐
│ Metadata Filtering            │
│ ano = 2026                   │
│ departamento = RH            │
└──────────────┬───────────────┘
               ↓
       Conjunto permitido
               ↓
      Vector / Keyword Search
               ↓
         Top-K resultados
               ↓
              LLM

Um exemplo

Imagine que uma empresa tenha documentos de diferentes departamentos e anos.

Cada chunk possui metadados:

Chunk 1
departamento = RH
ano = 2025
categoria = férias

Chunk 2
departamento = RH
ano = 2026
categoria = férias

Chunk 3
departamento = Financeiro
ano = 2026
categoria = reembolso

Chunk 4
departamento = RH
ano = 2026
categoria = benefícios

O usuário pergunta:

"Quantos dias de antecedência preciso para solicitar férias?"

Sem filtro, o sistema poderia pesquisar em todos os chunks.

Com Metadata Filtering:

departamento = RH
categoria = férias
ano = 2026

A busca fica restrita ao Chunk 2.

Depois, a similaridade semântica determina se aquele chunk realmente responde à pergunta.

O resultado é:

Metadata Filter
      ↓
Candidatos relevantes
      ↓
Semantic Search
      ↓
Melhores chunks
      ↓
LLM

Esse mecanismo também pode ser usado para controle de acesso.

Por exemplo:

usuário = funcionário
departamento = Financeiro

O sistema poderia restringir a busca aos documentos que aquele usuário tem permissão para consultar.

Nesse caso, o Metadata Filtering deixa de ser apenas uma otimização de busca e passa a participar da segurança do sistema.

Ainda assim, filtros de metadados não devem ser considerados, sozinhos, um mecanismo completo de autorização. O controle de acesso precisa estar corretamente implementado na aplicação e na infraestrutura.

Por que é importante

Metadata Filtering é importante porque permite combinar relevância semântica com restrições estruturadas.

A diferença pode ser resumida assim:

Mecanismo Pergunta que responde
Sparse Retrieval "Quais conteúdos contêm termos relevantes?"
Dense Retrieval "Quais conteúdos possuem significado semelhante?"
Metadata Filtering "Quais conteúdos podem participar da busca?"
Hybrid Search "Como combinar diferentes sinais de busca?"

Isso é especialmente útil quando a base contém muitos documentos semelhantes.

Por exemplo, uma pergunta sobre:

"política de férias"

pode encontrar dezenas de documentos semanticamente relacionados.

Mas se sabemos que precisamos de:

ano = 2026
departamento = RH
idioma = pt-BR

podemos eliminar grande parte dos candidatos antes ou durante a busca.

Em sistemas RAG, isso pode trazer três benefícios importantes:

Precisão: reduz resultados semanticamente parecidos, mas inadequados.

Eficiência: diminui o conjunto de informações que precisa ser pesquisado.

Controle: permite restringir resultados por características estruturadas, como data, categoria, departamento ou versão.

Podemos visualizar a combinação com os conceitos estudados:

                 Pergunta
                    ↓
          Metadata Filtering
                    ↓
          ┌─────────┴─────────┐
          ↓                   ↓
  Dense Retrieval      Sparse Retrieval
          └─────────┬─────────┘
                    ↓
              Ranking / Top-K
                    ↓
                 Contexto
                    ↓
                   LLM

A ideia central é: Metadata Filtering utiliza informações estruturadas associadas aos chunks para restringir e orientar o Retrieval, permitindo combinar filtros objetivos com busca por relevância.

link de compartilhamento