patrón · intermedio · 4 min de lectura
Metadata Filtering
Metadata filtering permite restringir resultados de búsqueda por atributos estructurados como fecha, fuente, autor o categoría, mejorando precisión sin depender solo de la similitud semántica.
No requiere conocimientos previos.
Alcance en breve
Cubre
- metadata filtering as a pre-filter or post-filter on vector search results
- common filter types: date range, source, author, category, tags, numeric ranges
- pre-filtering vs post-filtering: performance and accuracy trade-offs
- filter integration with sparse and dense retrieval
No cubre
- database indexing for metadata
- chunking strategies
- vector database implementation details
Supone
- The reader understands retrieval, vector search, and basic RAG pipeline concepts.
Resumen
Metadata filtering agrega filtros estructurados a la búsqueda semántica o por keywords. Antes o después de recuperar candidatos por similitud, aplicas condiciones sobre metadatos asociados a cada documento: "solo artículos del último año", "solo documentos del departamento legal", "solo contenido en español".
Este patrón es esencial cuando el corpus tiene documentos de diferentes tipos, fechas, fuentes o dominios. Sin filtros, la búsqueda semántica puede traer documentos relevantes por significado pero irrelevantes por contexto temporal, geográfico o de autoridad.
Alcance y supuestos
Este paquete cubre metadata filtering como pre-filter y post-filter, tipos comunes de filtros, trade-offs de performance y precisión, y cómo integrarlos con búsqueda dispersa y densa.
No cubre indexing de metadatos en bases de datos, chunking strategies, ni implementación interna de bases vectoriales. Asume que entiendes recuperación, búsqueda vectorial y conceptos básicos de RAG.
Modelo mental
Piensa en buscar en un archivo físico. La búsqueda semántica encuentra todos los documentos que hablan de "reembolsos". Pero si solo necesitas los de 2024 del departamento de soporte, los filtros de metadatos son como decir "solo del cajón etiquetado Soporte 2024".
Sin filtros, el archivador te trae documentos de todas las épocas y departamentos. Con filtros, reduces drásticamente el ruido.
Uso práctico
Usa metadata filtering cuando:
- ✅ Tu corpus tiene documentos de múltiples fuentes, fechas, autores o dominios.
- ✅ Necesitas garantizar que los resultados cumplan condiciones específicas (solo público, solo vigente).
- ✅ Los usuarios pueden acotar su búsqueda por categorías o rangos de fechas.
- ❌ Todos tus documentos son del mismo tipo y época: el filtro no agrega valor.
- ❌ El filtro es tan restrictivo que deja cero resultados: mejor relajar y luego re-rankear.
Ejemplo trabajado: pre-filter vs post-filter
Existen dos estrategias con trade-offs distintos:
interface DocMetadata {
date: string;
department: "legal" | "support" | "engineering";
language: string;
visibility: "public" | "internal";
}
async function preFilterSearch(query: string, filters: Partial<DocMetadata>) {
// Pre-filter: filtra antes de la búsqueda semántica
// Más rápido para filtros muy selectivos, pero puede excluir resultados semánticos relevantes
const filteredIds = await metadataIndex.query(filters);
return vectorSearch(query, { filterIds: filteredIds });
}
async function postFilterSearch(query: string, filters: Partial<DocMetadata>) {
// Post-filter: busca semánticamente, luego filtra
// Más lento (recupera de más), pero no pierde resultados semánticos por filtros
const results = await vectorSearch(query, { topK: 100 });
return results.filter(doc => matchesFilters(doc.metadata, filters));
}
La decisión depende de cuán selectivo es el filtro. Si filtras por "solo documentos públicos" y el 90% lo son, post-filter es mejor. Si filtras por "solo Q1 2023" y eso es el 5% del corpus, pre-filter evita trabajo inútil.
Evidencia
- LlamaIndex, Metadata filtering documenta cómo aplicar filtros por metadatos en pipelines de recuperación.
- Pinecone documentation, Overview cubre filtering con namespaces y metadatos en bases vectoriales.
Fuentes citadas
- LlamaIndex, Metadata filtering (Oficial, 21-07-2026)
- Pinecone documentation, Overview (Oficial, 20-07-2026)