AI Agents · Aula

Filtragem de metadados para busca híbrida

Combine a similaridade vetorial com filtros estruturados (data, autor, tag) para obter uma recuperação precisa e contextualizada.

Aula 2 de 414 etapas

Filtragem de metadados para busca híbrida é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Por que filtrar?

A busca puramente vetorial retorna os K fragmentos mais semelhantes — mesmo que pertençam ao locatário, idioma ou documento errado.

Os filtros de metadados restringem a busca a subconjuntos relevantes, proporcionando precisão AND revocação.

Armazenando metadados

Anexe um dicionário de metadados a cada fragmento durante a ingestão:

metadata = {
    'tenant_id': 'acme',
    'language': 'en',
    'source': 'help-docs',
    'updated_at': '2024-08-12',
    'tags': ['shipping', 'returns']
}
for k, v in metadata.items():
    print(f"{k}: {v}")

Filtering in Pinecone

results = index.query(
    vector=query_vec,
    top_k=5,
    filter={
        'tenant_id': 'acme',
        'language': 'en'
    }
)

Filtros de intervalo

A maioria dos bancos de dados vetoriais também oferece filtros de intervalo:

filter = {
    'updated_at': {'$gte': '2024-01-01'},
    'score': {'$gt': 0.5}
}
print(filter)

In and Not-In

filter = {
    'tags': {'$in': ['shipping', 'returns']},
    'archived': {'$ne': True}
}
print(filter)

Filtragem no Qdrant

O Qdrant tem uma linguagem avançada de filtragem:

from qdrant_client.models import Filter, FieldCondition, MatchValue

filter = Filter(must=[
    FieldCondition(key='tenant_id', match=MatchValue(value='acme')),
    FieldCondition(key='language', match=MatchValue(value='en'))
])

results = client.search(
    collection_name='docs',
    query_vector=query_vec,
    query_filter=filter,
    limit=5
)

Pré-filtragem versus pós-filtragem

Duas estratégias:

  • Pré-filtragem — aplicar o filtro THEN pesquisar (correto, mas pode ser lento sem metadados indexados)
  • Pós-filtragem — pesquisar e depois descartar o que não corresponder (rápido, mas pode retornar zero resultados)

Sistemas de produção fazem a pré-filtragem com índices de metadados apropriados.

Vetorial híbrida + palavras-chave

Combine a busca semântica com a busca clássica por palavras-chave BM25. Execute ambas e combine as pontuações (a fusão recíproca de posições é o padrão):

def rrf(vec_results, bm25_results, k=60):
    scores = defaultdict(float)
    for rank, doc in enumerate(vec_results):
        scores[doc.id] += 1 / (k + rank)
    for rank, doc in enumerate(bm25_results):
        scores[doc.id] += 1 / (k + rank)
    return sorted(scores.items(), key=lambda x: -x[1])

Multilocação

Em SaaS, EVERY consulta deve filtrar por tenant_id. Fixe isso no código do seu invólucro de recuperação para que não possa ser esquecido:

def search(query, tenant_id, top_k=5):
    return index.query(
        vector=embed(query),
        top_k=top_k,
        filter={'tenant_id': tenant_id}
    )

Controle de acesso por metadados

Armazene as permissões de usuário e função nos metadados:

metadata = {
    'visibility': 'public',         # or 'internal', 'restricted'
    'department': 'engineering',
    'allowed_roles': ['engineer', 'manager']
}

# At query time:
filter = {'allowed_roles': {'$contains': current_user_role}}

Aumento de recência

Para priorizar documentos mais recentes, recupere mais candidatos e depois recalcule a pontuação pela recência:

candidates = index.query(vector=query_vec, top_k=50)
scored = [
    (c.score * recency_factor(c.metadata['updated_at']), c)
    for c in candidates
]
scored.sort(reverse=True)
final = scored[:5]

Observe a cardinalidade dos metadados

Metadados de alta cardinalidade (milhões de valores únicos) tornam os índices enormes. Faça uma agregação prévia quando possível — por exemplo, armazene ano-mês em vez do carimbo de data e hora completo para a filtragem temporal.

Filtro sempre ativo

Qual filtro todo agente multilocatário deve ALWAYS incluir?

Recapitulação

Os filtros de metadados restringem sua busca. Combine-os com uma busca híbrida (vetorial + BM25) para obter os melhores resultados. A multilocação e o controle de acesso dependem disso.

Grátis para começar

Aprenda AI Agents com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
60
Aulas
239

Perguntas Frequentes

A aula “Filtragem de metadados para busca híbrida” é grátis?

Sim — o texto completo de “Filtragem de metadados para busca híbrida” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.

O que vou aprender em “Filtragem de metadados para busca híbrida”?

Combine a similaridade vetorial com filtros estruturados (data, autor, tag) para obter uma recuperação precisa e contextualizada. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Agents?

Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Filtragem de metadados para busca híbrida”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Agents?

Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Pinecone, Weaviate, Qdrant: comparação
  2. Filtragem de metadados para busca híbrida
  3. Atualizando e excluindo vetores
  4. Escolhendo métricas de distância (cosseno, L2, produto escalar)
← Voltar para AI Agents